mirror of
				https://github.com/immich-app/immich.git
				synced 2025-11-04 03:27:09 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			101 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { UserController } from 'src/controllers/user.controller';
 | 
						|
import { AuthService } from 'src/services/auth.service';
 | 
						|
import { UserService } from 'src/services/user.service';
 | 
						|
import request from 'supertest';
 | 
						|
import { errorDto } from 'test/medium/responses';
 | 
						|
import { createControllerTestApp, TestControllerApp } from 'test/medium/utils';
 | 
						|
import { factory } from 'test/small.factory';
 | 
						|
 | 
						|
describe(UserController.name, () => {
 | 
						|
  let realApp: TestControllerApp;
 | 
						|
  let mockApp: TestControllerApp;
 | 
						|
 | 
						|
  beforeAll(async () => {
 | 
						|
    realApp = await createControllerTestApp({ authType: 'real' });
 | 
						|
    mockApp = await createControllerTestApp({ authType: 'mock' });
 | 
						|
  });
 | 
						|
 | 
						|
  describe('GET /users', () => {
 | 
						|
    it('should require authentication', async () => {
 | 
						|
      const { status, body } = await request(realApp.getHttpServer()).get('/users');
 | 
						|
      expect(status).toBe(401);
 | 
						|
      expect(body).toEqual(errorDto.unauthorized);
 | 
						|
    });
 | 
						|
 | 
						|
    it('should call the service with an auth dto', async () => {
 | 
						|
      const user = factory.user();
 | 
						|
      const authService = mockApp.getMockedService(AuthService);
 | 
						|
      const auth = factory.auth({ user });
 | 
						|
      authService.authenticate.mockResolvedValue(auth);
 | 
						|
 | 
						|
      const userService = mockApp.getMockedService(UserService);
 | 
						|
      const { status } = await request(mockApp.getHttpServer()).get('/users').set('Authorization', `Bearer token`);
 | 
						|
 | 
						|
      expect(status).toBe(200);
 | 
						|
      expect(userService.search).toHaveBeenCalledWith(auth);
 | 
						|
    });
 | 
						|
  });
 | 
						|
 | 
						|
  describe('GET /users/me', () => {
 | 
						|
    it('should require authentication', async () => {
 | 
						|
      const { status, body } = await request(realApp.getHttpServer()).get(`/users/me`);
 | 
						|
      expect(status).toBe(401);
 | 
						|
      expect(body).toEqual(errorDto.unauthorized);
 | 
						|
    });
 | 
						|
  });
 | 
						|
 | 
						|
  describe('PUT /users/me', () => {
 | 
						|
    it('should require authentication', async () => {
 | 
						|
      const { status, body } = await request(realApp.getHttpServer()).put(`/users/me`);
 | 
						|
      expect(status).toBe(401);
 | 
						|
      expect(body).toEqual(errorDto.unauthorized);
 | 
						|
    });
 | 
						|
 | 
						|
    for (const key of ['email', 'name']) {
 | 
						|
      it(`should not allow null ${key}`, async () => {
 | 
						|
        const dto = { [key]: null };
 | 
						|
        const { status, body } = await request(mockApp.getHttpServer())
 | 
						|
          .put(`/users/me`)
 | 
						|
          .set('Authorization', `Bearer token`)
 | 
						|
          .send(dto);
 | 
						|
        expect(status).toBe(400);
 | 
						|
        expect(body).toEqual(errorDto.badRequest());
 | 
						|
      });
 | 
						|
    }
 | 
						|
  });
 | 
						|
 | 
						|
  describe('GET /users/:id', () => {
 | 
						|
    it('should require authentication', async () => {
 | 
						|
      const { status } = await request(realApp.getHttpServer()).get(`/users/${factory.uuid()}`);
 | 
						|
      expect(status).toEqual(401);
 | 
						|
    });
 | 
						|
  });
 | 
						|
 | 
						|
  describe('GET /server/license', () => {
 | 
						|
    it('should require authentication', async () => {
 | 
						|
      const { status, body } = await request(realApp.getHttpServer()).get('/users/me/license');
 | 
						|
      expect(status).toBe(401);
 | 
						|
      expect(body).toEqual(errorDto.unauthorized);
 | 
						|
    });
 | 
						|
  });
 | 
						|
 | 
						|
  describe('PUT /users/me/license', () => {
 | 
						|
    it('should require authentication', async () => {
 | 
						|
      const { status } = await request(realApp.getHttpServer()).put(`/users/me/license`);
 | 
						|
      expect(status).toEqual(401);
 | 
						|
    });
 | 
						|
  });
 | 
						|
 | 
						|
  describe('DELETE /users/me/license', () => {
 | 
						|
    it('should require authentication', async () => {
 | 
						|
      const { status } = await request(realApp.getHttpServer()).put(`/users/me/license`);
 | 
						|
      expect(status).toEqual(401);
 | 
						|
    });
 | 
						|
  });
 | 
						|
 | 
						|
  afterAll(async () => {
 | 
						|
    await realApp.close();
 | 
						|
    await mockApp.close();
 | 
						|
  });
 | 
						|
});
 |