diff --git a/api/package.json b/api/package.json
index 0672afa19528de8fdf23d8820fb4fffc7108fa62..7457c35050698f2f548a21b032ed5d108bdbd759 100644
--- a/api/package.json
+++ b/api/package.json
@@ -94,7 +94,12 @@
       "^.+\\.(t|j)s$": "ts-jest"
     },
     "collectCoverageFrom": [
-      "**/*.(t|j)s"
+      "**/*.(t|j)s", 
+      "!**/*e2e-spec.ts", 
+      "!**/*.module.ts", 
+      "!**/*.decorator.ts", 
+      "**/jest.config.js",
+      "**/main.js"
     ],
     "coverageDirectory": "../coverage",
     "testEnvironment": "node"
diff --git a/api/src/files/files.controller.spec.ts b/api/src/files/files.service.spec.ts
similarity index 74%
rename from api/src/files/files.controller.spec.ts
rename to api/src/files/files.service.spec.ts
index 4ff16a6ce0d67ecfb2e16e7b3ded0df966e7878e..aedfabb21466276319150e9a6225fdde96b8ba89 100644
--- a/api/src/files/files.controller.spec.ts
+++ b/api/src/files/files.service.spec.ts
@@ -3,7 +3,7 @@ import { ENGINE_MODULE_OPTIONS } from '../engine/engine.constants';
 import { FilesController } from './files.controller';
 import { FilesService } from './files.service';
 
-describe('FilesController', () => {
+describe('FilesService', () => {
   let service: FilesService;
 
   beforeEach(async () => {
@@ -24,19 +24,33 @@ describe('FilesController', () => {
     service = module.get<FilesService>(FilesService);
   });
 
-  it('getAssetFile', () => {
+  it('Return file should be empty', () => {
     const filePathEmpty = service.getAssetFile('FILE_THAT_DOES_NOT_EXIST.txt');
-    const filePath = service.getAssetFile('tos.md');
-    const fileWithLFI = service.getAssetFile('../../../.env');
 
     expect(filePathEmpty).toBeUndefined();
+  });
+
+  it('Try LFI injection', () => {
+    const fileWithLFI = service.getAssetFile('../../../.env');
+
     expect(fileWithLFI).toBeUndefined();
+  });
+
+  it('Get existing file, should return something', () => {
+    const filePath = service.getAssetFile('tos.md');
+
     expect(filePath).toEqual(expect.anything());
   });
 
-  it('markdown', () => {
+  it('Get markdown file that exists, should return something', () => {
     const fileContent = service.getMarkdown('login.md', 'http://localtest');
     expect(!!fileContent).toBeTruthy();
     expect(fileContent.includes('http://localtest')).toBeTruthy();
   });
+
+  it('Get markdown does not exist', () => {
+    expect(
+      service.getMarkdown('FILE_DO_NOT_EXIT.txt', 'http://fakeurl'),
+    ).toEqual('');
+  });
 });
diff --git a/api/src/users/users.resolver.spec.ts b/api/src/users/users.resolver.spec.ts
index e9ba43d9f33e895ea73a33e1b1ca77d5c15d5f6d..c164c26a4ee51c6730d1ce3679b310d4ea21dfa7 100644
--- a/api/src/users/users.resolver.spec.ts
+++ b/api/src/users/users.resolver.spec.ts
@@ -1,4 +1,5 @@
 import { getMockReq } from '@jest-mock/express';
+import { NotFoundException } from '@nestjs/common';
 import { Test, TestingModule } from '@nestjs/testing';
 import { MockFunctionMetadata, ModuleMocker } from 'jest-mock';
 import { ENGINE_SERVICE } from '../engine/engine.constants';
@@ -12,6 +13,7 @@ const moduleMocker = new ModuleMocker(global);
 describe('UsersResolver', () => {
   let resolver: UsersResolver;
   const req = getMockReq();
+
   const user: User = {
     id: 'guest',
     username: 'guest',
@@ -32,6 +34,21 @@ describe('UsersResolver', () => {
     agreeNDA: false,
   };
 
+  const findOne = jest
+    .fn()
+    .mockResolvedValueOnce(internUserWrong)
+    .mockResolvedValueOnce(internUserWrong)
+    .mockImplementationOnce(() => {
+      throw new NotFoundException();
+    })
+    .mockResolvedValue(internUser);
+
+  const getActiveUser = jest
+    .fn()
+    .mockResolvedValueOnce(user)
+    .mockResolvedValueOnce({})
+    .mockResolvedValue(user);
+
   beforeEach(async () => {
     const module: TestingModule = await Test.createTestingModule({
       providers: [UsersResolver],
@@ -39,16 +56,17 @@ describe('UsersResolver', () => {
       .useMocker((token) => {
         if (token == UsersService) {
           return {
-            findOne: jest
-              .fn()
-              .mockResolvedValue(internUser)
-              .mockResolvedValueOnce(internUserWrong),
+            findOne,
             update: jest.fn().mockResolvedValue({ ...user, ...internUser }),
           };
         }
         if (token == ENGINE_SERVICE) {
           return {
-            getActiveUser: jest.fn().mockResolvedValue(user),
+            getActiveUser,
+            updateUser: jest
+              .fn()
+              .mockImplementationOnce(undefined)
+              .mockResolvedValue({ ...user, ...updateData }),
           };
         }
         if (typeof token === 'function') {
@@ -64,17 +82,35 @@ describe('UsersResolver', () => {
     resolver = module.get<UsersResolver>(UsersResolver);
   });
 
-  it('getUser', async () => {
+  it('Get user with different id from engine and database', async () => {
     expect(await resolver.getUser(req, user)).toStrictEqual({
       ...user,
     });
+  });
+
+  it('Get user incomplete merge', async () => {
+    expect(resolver.getUser(req, user)).rejects.toThrowError();
+  });
+
+  it('Get user not found in db', async () => {
+    expect(await resolver.getUser(req, user)).toStrictEqual(user);
+  });
+
+  it('Get user in engine and database (merge)', async () => {
     expect(await resolver.getUser(req, user)).toStrictEqual({
       ...user,
       ...internUser,
     });
   });
 
-  it('updateUser', async () => {
+  it('Update user from engine ', async () => {
+    expect(await resolver.updateUser(req, updateData, user)).toStrictEqual({
+      ...user,
+      ...updateData,
+    });
+  });
+
+  it('Update user from database', async () => {
     expect(await resolver.updateUser(req, updateData, user)).toBeDefined();
   });
 });