import Session from 'common/session'; import User from 'model/user'; import MockAdapter from "axios-mock-adapter"; import Api from "common/api"; let chai = require('../../../node_modules/chai/chai'); let assert = chai.assert; describe('common/session', () => { const mock = new MockAdapter(Api); beforeEach(() => { window.onbeforeunload = () => 'Oh no!'; }); it('should construct session', () => { const storage = window.localStorage; const session = new Session(storage); assert.equal(session.session_token, null); }); it('should set, get and delete token', () => { const storage = window.localStorage; const session = new Session(storage); assert.equal(session.session_token, null); session.setToken(123421); assert.equal(session.session_token, 123421); const result = session.getToken(); assert.equal(result, 123421); session.deleteToken(); assert.equal(session.session_token, null); }); it('should set, get and delete user', () => { const storage = window.localStorage; const session = new Session(storage); assert.equal(session.user.ID, undefined); const values = {ID: 5, FirstName: "Max", LastName: "Last", Email: "test@test.com", Role: "admin"}; const user = new User(values); session.setUser(user); assert.equal(session.user.FirstName, "Max"); assert.equal(session.user.Role, "admin"); const result = session.getUser(); assert.equal(result.ID, 5); assert.equal(result.Email, "test@test.com"); session.deleteUser(); assert.equal(session.user, null); }); it('should get user email', () => { const storage = window.localStorage; const session = new Session(storage); const values = {ID: 5, FirstName: "Max", LastName: "Last", Email: "test@test.com", Role: "admin"}; const user = new User(values); session.setUser(user); const result = session.getEmail(); assert.equal(result, "test@test.com"); const values2 = { FirstName: "Max", LastName: "Last", Email: "test@test.com", Role: "admin"}; const user2 = new User(values2); session.setUser(user2); const result2 = session.getEmail(); assert.equal(result2, ""); session.deleteUser(); }); it('should get user firstname', () => { const storage = window.localStorage; const session = new Session(storage); const values = {ID: 5, FirstName: "Max", LastName: "Last", Email: "test@test.com", Role: "admin"}; const user = new User(values); session.setUser(user); const result = session.getFirstName(); assert.equal(result, "Max"); const values2 = { FirstName: "Max", LastName: "Last", Email: "test@test.com", Role: "admin"}; const user2 = new User(values2); session.setUser(user2); const result2 = session.getFirstName(); assert.equal(result2, ""); session.deleteUser(); }); it('should get user full name', () => { const storage = window.localStorage; const session = new Session(storage); const values = {ID: 5, FirstName: "Max", LastName: "Last", Email: "test@test.com", Role: "admin"}; const user = new User(values); session.setUser(user); const result = session.getFullName(); assert.equal(result, "Max Last"); const values2 = { FirstName: "Max", LastName: "Last", Email: "test@test.com", Role: "admin"}; const user2 = new User(values2); session.setUser(user2); const result2 = session.getFullName(); assert.equal(result2, ""); session.deleteUser(); }); it('should test whether user is set', () => { const storage = window.localStorage; const session = new Session(storage); const values = {ID: 5, FirstName: "Max", LastName: "Last", Email: "test@test.com", Role: "admin"}; const user = new User(values); session.setUser(user); const result = session.isUser(); assert.equal(result, true); session.deleteUser(); }); it('should test whether user is admin', () => { const storage = window.localStorage; const session = new Session(storage); const values = {ID: 5, FirstName: "Max", LastName: "Last", Email: "test@test.com", Role: "admin"}; const user = new User(values); session.setUser(user); const result = session.isAdmin(); assert.equal(result, true); session.deleteUser(); }); it('should test whether user is anonymous', () => { const storage = window.localStorage; const session = new Session(storage); const values = {ID: 5, FirstName: "Max", LastName: "Last", Email: "test@test.com", Role: "admin"}; const user = new User(values); session.setUser(user); const result = session.isAnonymous(); assert.equal(result, false); session.deleteUser(); }); it('should test login and logout', async() => { mock .onPost("session").reply(200, {token: "8877", user: {ID: 1, Email: "test@test.com"}}) .onDelete("session/8877").reply(200); const storage = window.localStorage; const session = new Session(storage); assert.equal(session.session_token, null); assert.equal(session.storage.user, undefined); await session.login("test@test.com", "passwd"); assert.equal(session.session_token, 8877); assert.equal(session.storage.user, '{"ID":1,"Email":"test@test.com"}'); await session.logout(); assert.equal(session.session_token, null); mock.reset(); }); });