@sync-in/server
Version:
The secure, open-source platform for file storage, sharing, collaboration, and sync
95 lines (94 loc) • 4.58 kB
JavaScript
/*
* Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
* This file is part of Sync-in | The open source file sync and share solution
* See the LICENSE file for licensing details
*/ "use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
const _testing = require("@nestjs/testing");
const _appconstants = require("../../../app.constants");
const _notificationsmanagerservice = require("../../../applications/notifications/services/notifications-manager.service");
const _usermodel = require("../../../applications/users/models/user.model");
const _adminusersmanagerservice = require("../../../applications/users/services/admin-users-manager.service");
const _adminusersqueriesservice = require("../../../applications/users/services/admin-users-queries.service");
const _usersmanagerservice = require("../../../applications/users/services/users-manager.service");
const _usersqueriesservice = require("../../../applications/users/services/users-queries.service");
const _test = require("../../../applications/users/utils/test");
const _functions = require("../../../common/functions");
const _cacheservice = require("../../../infrastructure/cache/services/cache.service");
const _constants = require("../../../infrastructure/database/constants");
const _authmanagerservice = require("../auth-manager.service");
const _authmethoddatabaseservice = require("./auth-method-database.service");
describe(_authmethoddatabaseservice.AuthMethodDatabase.name, ()=>{
let authMethodDatabase;
let usersManager;
let userTest;
beforeAll(async ()=>{
const module = await _testing.Test.createTestingModule({
providers: [
_authmethoddatabaseservice.AuthMethodDatabase,
_usersmanagerservice.UsersManager,
_usersqueriesservice.UsersQueries,
_adminusersmanagerservice.AdminUsersManager,
_adminusersqueriesservice.AdminUsersQueries,
{
provide: _authmanagerservice.AuthManager,
useValue: {}
},
{
provide: _constants.DB_TOKEN_PROVIDER,
useValue: {}
},
{
provide: _cacheservice.Cache,
useValue: {}
},
{
provide: _notificationsmanagerservice.NotificationsManager,
useValue: {}
}
]
}).compile();
authMethodDatabase = module.get(_authmethoddatabaseservice.AuthMethodDatabase);
usersManager = module.get(_usersmanagerservice.UsersManager);
module.useLogger([
'fatal'
]);
// mocks
userTest = new _usermodel.UserModel((0, _test.generateUserTest)(), false);
usersManager.updateAccesses = jest.fn(()=>Promise.resolve());
});
it('should be defined', ()=>{
expect(authMethodDatabase).toBeDefined();
expect(usersManager).toBeDefined();
expect(userTest).toBeDefined();
});
it('should validate the user', async ()=>{
userTest.makePaths = jest.fn();
usersManager.findUser = jest.fn().mockReturnValue({
...userTest,
password: await (0, _functions.hashPassword)(userTest.password)
});
expect(await authMethodDatabase.validateUser(userTest.login, userTest.password)).toBeDefined();
expect(userTest.makePaths).toHaveBeenCalled();
});
it('should not validate the user', async ()=>{
usersManager.findUser = jest.fn().mockReturnValueOnce(null).mockReturnValueOnce({
...userTest,
password: await (0, _functions.hashPassword)('bar')
}).mockRejectedValueOnce({
message: 'db error',
code: 'OTHER'
}).mockRejectedValueOnce(new Error('Authentication service error', {
cause: {
code: Array.from(_appconstants.CONNECT_ERROR_CODE)[0]
}
}));
expect(await authMethodDatabase.validateUser(userTest.login, userTest.password)).toBeNull();
expect(await authMethodDatabase.validateUser(userTest.login, userTest.password)).toBeNull();
await expect(authMethodDatabase.validateUser(userTest.login, userTest.password)).rejects.toThrow(/db error/i);
await expect(authMethodDatabase.validateUser(userTest.login, userTest.password)).rejects.toThrow(/authentication service/i);
});
});
//# sourceMappingURL=auth-method-database.service.spec.js.map