forked from Cutlery/immich
chore: cleanup e2e (#5051)
This commit is contained in:
parent
6127fd4c5c
commit
4b722517f0
@ -1,24 +0,0 @@
|
|||||||
import { dataSource } from '@app/infra';
|
|
||||||
|
|
||||||
export const db = {
|
|
||||||
reset: async () => {
|
|
||||||
if (!dataSource.isInitialized) {
|
|
||||||
await dataSource.initialize();
|
|
||||||
}
|
|
||||||
|
|
||||||
await dataSource.transaction(async (em) => {
|
|
||||||
for (const entity of dataSource.entityMetadatas) {
|
|
||||||
if (entity.tableName === 'users') {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
await em.query(`DELETE FROM ${entity.tableName} CASCADE;`);
|
|
||||||
}
|
|
||||||
await em.query(`DELETE FROM "users" CASCADE;`);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
disconnect: async () => {
|
|
||||||
if (dataSource.isInitialized) {
|
|
||||||
await dataSource.destroy();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
};
|
|
@ -3,8 +3,7 @@ import { ActivityController } from '@app/immich';
|
|||||||
import { AssetFileUploadResponseDto } from '@app/immich/api-v1/asset/response-dto/asset-file-upload-response.dto';
|
import { AssetFileUploadResponseDto } from '@app/immich/api-v1/asset/response-dto/asset-file-upload-response.dto';
|
||||||
import { ActivityEntity } from '@app/infra/entities';
|
import { ActivityEntity } from '@app/infra/entities';
|
||||||
import { api } from '@test/api';
|
import { api } from '@test/api';
|
||||||
import { db } from '@test/db';
|
import { errorStub, userDto, uuidStub } from '@test/fixtures';
|
||||||
import { errorStub, uuidStub } from '@test/fixtures';
|
|
||||||
import { testApp } from '@test/test-utils';
|
import { testApp } from '@test/test-utils';
|
||||||
import request from 'supertest';
|
import request from 'supertest';
|
||||||
|
|
||||||
@ -17,14 +16,13 @@ describe(`${ActivityController.name} (e2e)`, () => {
|
|||||||
|
|
||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
[server] = await testApp.create();
|
[server] = await testApp.create();
|
||||||
await db.reset();
|
await testApp.reset();
|
||||||
await api.authApi.adminSignUp(server);
|
await api.authApi.adminSignUp(server);
|
||||||
admin = await api.authApi.adminLogin(server);
|
admin = await api.authApi.adminLogin(server);
|
||||||
asset = await api.assetApi.upload(server, admin.accessToken, 'example');
|
asset = await api.assetApi.upload(server, admin.accessToken, 'example');
|
||||||
|
|
||||||
const credentials = { email: 'user1@immich.app', password: 'Password123' };
|
await api.userApi.create(server, admin.accessToken, userDto.user1);
|
||||||
await api.userApi.create(server, admin.accessToken, { ...credentials, name: 'User 1' });
|
nonOwner = await api.authApi.login(server, userDto.user1);
|
||||||
nonOwner = await api.authApi.login(server, credentials);
|
|
||||||
|
|
||||||
album = await api.albumApi.create(server, admin.accessToken, {
|
album = await api.albumApi.create(server, admin.accessToken, {
|
||||||
albumName: 'Album 1',
|
albumName: 'Album 1',
|
||||||
|
@ -3,8 +3,7 @@ import { AlbumController } from '@app/immich';
|
|||||||
import { AssetFileUploadResponseDto } from '@app/immich/api-v1/asset/response-dto/asset-file-upload-response.dto';
|
import { AssetFileUploadResponseDto } from '@app/immich/api-v1/asset/response-dto/asset-file-upload-response.dto';
|
||||||
import { SharedLinkType } from '@app/infra/entities';
|
import { SharedLinkType } from '@app/infra/entities';
|
||||||
import { api } from '@test/api';
|
import { api } from '@test/api';
|
||||||
import { db } from '@test/db';
|
import { errorStub, userDto, uuidStub } from '@test/fixtures';
|
||||||
import { errorStub, uuidStub } from '@test/fixtures';
|
|
||||||
import { testApp } from '@test/test-utils';
|
import { testApp } from '@test/test-utils';
|
||||||
import request from 'supertest';
|
import request from 'supertest';
|
||||||
|
|
||||||
@ -33,26 +32,18 @@ describe(`${AlbumController.name} (e2e)`, () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await db.reset();
|
await testApp.reset();
|
||||||
await api.authApi.adminSignUp(server);
|
await api.authApi.adminSignUp(server);
|
||||||
admin = await api.authApi.adminLogin(server);
|
admin = await api.authApi.adminLogin(server);
|
||||||
|
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
api.userApi.create(server, admin.accessToken, {
|
api.userApi.create(server, admin.accessToken, userDto.user1),
|
||||||
email: 'user1@immich.app',
|
api.userApi.create(server, admin.accessToken, userDto.user2),
|
||||||
password: 'Password123',
|
|
||||||
name: 'User 1',
|
|
||||||
}),
|
|
||||||
api.userApi.create(server, admin.accessToken, {
|
|
||||||
email: 'user2@immich.app',
|
|
||||||
password: 'Password123',
|
|
||||||
name: 'User 2',
|
|
||||||
}),
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
[user1, user2] = await Promise.all([
|
[user1, user2] = await Promise.all([
|
||||||
api.authApi.login(server, { email: 'user1@immich.app', password: 'Password123' }),
|
api.authApi.login(server, userDto.user1),
|
||||||
api.authApi.login(server, { email: 'user2@immich.app', password: 'Password123' }),
|
api.authApi.login(server, userDto.user2),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
user1Asset = await api.assetApi.upload(server, user1.accessToken, 'example');
|
user1Asset = await api.assetApi.upload(server, user1.accessToken, 'example');
|
||||||
|
@ -14,24 +14,12 @@ import { AssetEntity, AssetType, LibraryType, SharedLinkType } from '@app/infra/
|
|||||||
import { AssetRepository } from '@app/infra/repositories';
|
import { AssetRepository } from '@app/infra/repositories';
|
||||||
import { INestApplication } from '@nestjs/common';
|
import { INestApplication } from '@nestjs/common';
|
||||||
import { api } from '@test/api';
|
import { api } from '@test/api';
|
||||||
import { errorStub, uuidStub } from '@test/fixtures';
|
import { errorStub, userDto, uuidStub } from '@test/fixtures';
|
||||||
import { testApp } from '@test/test-utils';
|
import { testApp } from '@test/test-utils';
|
||||||
import { randomBytes } from 'crypto';
|
import { randomBytes } from 'crypto';
|
||||||
import { DateTime } from 'luxon';
|
import { DateTime } from 'luxon';
|
||||||
import request from 'supertest';
|
import request from 'supertest';
|
||||||
|
|
||||||
const user1Dto = {
|
|
||||||
email: 'user1@immich.app',
|
|
||||||
password: 'Password123',
|
|
||||||
name: 'User 1',
|
|
||||||
};
|
|
||||||
|
|
||||||
const user2Dto = {
|
|
||||||
email: 'user2@immich.app',
|
|
||||||
password: 'Password123',
|
|
||||||
name: 'User 2',
|
|
||||||
};
|
|
||||||
|
|
||||||
const today = DateTime.fromObject({ year: 2023, month: 11, day: 3 });
|
const today = DateTime.fromObject({ year: 2023, month: 11, day: 3 });
|
||||||
const yesterday = today.minus({ days: 1 });
|
const yesterday = today.minus({ days: 1 });
|
||||||
|
|
||||||
@ -104,13 +92,13 @@ describe(`${AssetController.name} (e2e)`, () => {
|
|||||||
const admin = await api.authApi.adminLogin(server);
|
const admin = await api.authApi.adminLogin(server);
|
||||||
|
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
api.userApi.create(server, admin.accessToken, user1Dto),
|
api.userApi.create(server, admin.accessToken, userDto.user1),
|
||||||
api.userApi.create(server, admin.accessToken, user2Dto),
|
api.userApi.create(server, admin.accessToken, userDto.user2),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
[user1, user2] = await Promise.all([
|
[user1, user2] = await Promise.all([
|
||||||
api.authApi.login(server, { email: user1Dto.email, password: user1Dto.password }),
|
api.authApi.login(server, userDto.user1),
|
||||||
api.authApi.login(server, { email: user2Dto.email, password: user2Dto.password }),
|
api.authApi.login(server, userDto.user2),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const [user1Libraries, user2Libraries] = await Promise.all([
|
const [user1Libraries, user2Libraries] = await Promise.all([
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import { AuthController } from '@app/immich';
|
import { AuthController } from '@app/immich';
|
||||||
import { api } from '@test/api';
|
import { api } from '@test/api';
|
||||||
import { db } from '@test/db';
|
|
||||||
import {
|
import {
|
||||||
adminSignupStub,
|
adminSignupStub,
|
||||||
changePasswordStub,
|
changePasswordStub,
|
||||||
@ -49,7 +48,7 @@ describe(`${AuthController.name} (e2e)`, () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await db.reset();
|
await testApp.reset();
|
||||||
await api.authApi.adminSignUp(server);
|
await api.authApi.adminSignUp(server);
|
||||||
const response = await api.authApi.adminLogin(server);
|
const response = await api.authApi.adminLogin(server);
|
||||||
accessToken = response.accessToken;
|
accessToken = response.accessToken;
|
||||||
@ -57,7 +56,7 @@ describe(`${AuthController.name} (e2e)`, () => {
|
|||||||
|
|
||||||
describe('POST /auth/admin-sign-up', () => {
|
describe('POST /auth/admin-sign-up', () => {
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await db.reset();
|
await testApp.reset();
|
||||||
});
|
});
|
||||||
|
|
||||||
const invalid = [
|
const invalid = [
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { LoginResponseDto } from '@app/domain';
|
import { LoginResponseDto } from '@app/domain';
|
||||||
import { AssetType, LibraryType } from '@app/infra/entities';
|
import { AssetType, LibraryType } from '@app/infra/entities';
|
||||||
import { api } from '@test/api';
|
import { api } from '@test/api';
|
||||||
import { IMMICH_TEST_ASSET_PATH, db, runAllTests, testApp } from '@test/test-utils';
|
import { IMMICH_TEST_ASSET_PATH, runAllTests, testApp } from '@test/test-utils';
|
||||||
|
|
||||||
describe(`Supported file formats (e2e)`, () => {
|
describe(`Supported file formats (e2e)`, () => {
|
||||||
let server: any;
|
let server: any;
|
||||||
@ -176,7 +176,7 @@ describe(`Supported file formats (e2e)`, () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await db.reset();
|
await testApp.reset();
|
||||||
await api.authApi.adminSignUp(server);
|
await api.authApi.adminSignUp(server);
|
||||||
admin = await api.authApi.adminLogin(server);
|
admin = await api.authApi.adminLogin(server);
|
||||||
await api.userApi.setExternalPath(server, admin.accessToken, admin.userId, '/');
|
await api.userApi.setExternalPath(server, admin.accessToken, admin.userId, '/');
|
||||||
|
@ -2,28 +2,16 @@ import { LibraryResponseDto, LoginResponseDto } from '@app/domain';
|
|||||||
import { LibraryController } from '@app/immich';
|
import { LibraryController } from '@app/immich';
|
||||||
import { AssetType, LibraryType } from '@app/infra/entities';
|
import { AssetType, LibraryType } from '@app/infra/entities';
|
||||||
import { api } from '@test/api';
|
import { api } from '@test/api';
|
||||||
import { IMMICH_TEST_ASSET_PATH, IMMICH_TEST_ASSET_TEMP_PATH, db, restoreTempFolder, testApp } from '@test/test-utils';
|
import { IMMICH_TEST_ASSET_PATH, IMMICH_TEST_ASSET_TEMP_PATH, restoreTempFolder, testApp } from '@test/test-utils';
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
import request from 'supertest';
|
import request from 'supertest';
|
||||||
import { utimes } from 'utimes';
|
import { utimes } from 'utimes';
|
||||||
import { errorStub, uuidStub } from '../fixtures';
|
import { errorStub, userDto, uuidStub } from '../fixtures';
|
||||||
|
|
||||||
describe(`${LibraryController.name} (e2e)`, () => {
|
describe(`${LibraryController.name} (e2e)`, () => {
|
||||||
let server: any;
|
let server: any;
|
||||||
let admin: LoginResponseDto;
|
let admin: LoginResponseDto;
|
||||||
|
|
||||||
const user1Dto = {
|
|
||||||
email: 'user1@immich.app',
|
|
||||||
password: 'Password123',
|
|
||||||
name: 'User 1',
|
|
||||||
};
|
|
||||||
|
|
||||||
const user2Dto = {
|
|
||||||
email: 'user2@immich.app',
|
|
||||||
password: 'Password123',
|
|
||||||
name: 'User 2',
|
|
||||||
};
|
|
||||||
|
|
||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
[server] = await testApp.create({ jobs: true });
|
[server] = await testApp.create({ jobs: true });
|
||||||
});
|
});
|
||||||
@ -34,7 +22,7 @@ describe(`${LibraryController.name} (e2e)`, () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await db.reset();
|
await testApp.reset();
|
||||||
await restoreTempFolder();
|
await restoreTempFolder();
|
||||||
await api.authApi.adminSignUp(server);
|
await api.authApi.adminSignUp(server);
|
||||||
admin = await api.authApi.adminLogin(server);
|
admin = await api.authApi.adminLogin(server);
|
||||||
@ -195,8 +183,8 @@ describe(`${LibraryController.name} (e2e)`, () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should allow a user to create a library', async () => {
|
it('should allow a user to create a library', async () => {
|
||||||
await api.userApi.create(server, admin.accessToken, user1Dto);
|
await api.userApi.create(server, admin.accessToken, userDto.user1);
|
||||||
const user1 = await api.authApi.login(server, { email: user1Dto.email, password: user1Dto.password });
|
const user1 = await api.authApi.login(server, userDto.user1);
|
||||||
|
|
||||||
const { status, body } = await request(server)
|
const { status, body } = await request(server)
|
||||||
.post('/library')
|
.post('/library')
|
||||||
@ -337,11 +325,15 @@ describe(`${LibraryController.name} (e2e)`, () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("should not allow getting another user's library", async () => {
|
it("should not allow getting another user's library", async () => {
|
||||||
await api.userApi.create(server, admin.accessToken, user1Dto);
|
await Promise.all([
|
||||||
const user1 = await api.authApi.login(server, { email: user1Dto.email, password: user1Dto.password });
|
api.userApi.create(server, admin.accessToken, userDto.user1),
|
||||||
|
api.userApi.create(server, admin.accessToken, userDto.user2),
|
||||||
|
]);
|
||||||
|
|
||||||
await api.userApi.create(server, admin.accessToken, user2Dto);
|
const [user1, user2] = await Promise.all([
|
||||||
const user2 = await api.authApi.login(server, { email: user2Dto.email, password: user2Dto.password });
|
api.authApi.login(server, userDto.user1),
|
||||||
|
api.authApi.login(server, userDto.user2),
|
||||||
|
]);
|
||||||
|
|
||||||
const library = await api.libraryApi.create(server, user1.accessToken, { type: LibraryType.EXTERNAL });
|
const library = await api.libraryApi.create(server, user1.accessToken, { type: LibraryType.EXTERNAL });
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import { OAuthController } from '@app/immich';
|
import { OAuthController } from '@app/immich';
|
||||||
import { api } from '@test/api';
|
import { api } from '@test/api';
|
||||||
import { db } from '@test/db';
|
|
||||||
import { errorStub } from '@test/fixtures';
|
import { errorStub } from '@test/fixtures';
|
||||||
import { testApp } from '@test/test-utils';
|
import { testApp } from '@test/test-utils';
|
||||||
import request from 'supertest';
|
import request from 'supertest';
|
||||||
@ -17,7 +16,7 @@ describe(`${OAuthController.name} (e2e)`, () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await db.reset();
|
await testApp.reset();
|
||||||
await api.authApi.adminSignUp(server);
|
await api.authApi.adminSignUp(server);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1,29 +1,10 @@
|
|||||||
import { LoginResponseDto, PartnerDirection } from '@app/domain';
|
import { LoginResponseDto, PartnerDirection } from '@app/domain';
|
||||||
import { PartnerController } from '@app/immich';
|
import { PartnerController } from '@app/immich';
|
||||||
import { api } from '@test/api';
|
import { api } from '@test/api';
|
||||||
import { db } from '@test/db';
|
import { errorStub, userDto } from '@test/fixtures';
|
||||||
import { errorStub } from '@test/fixtures';
|
|
||||||
import { testApp } from '@test/test-utils';
|
import { testApp } from '@test/test-utils';
|
||||||
import request from 'supertest';
|
import request from 'supertest';
|
||||||
|
|
||||||
const user1Dto = {
|
|
||||||
email: 'user1@immich.app',
|
|
||||||
password: 'Password123',
|
|
||||||
name: 'User 1',
|
|
||||||
};
|
|
||||||
|
|
||||||
const user2Dto = {
|
|
||||||
email: 'user2@immich.app',
|
|
||||||
password: 'Password123',
|
|
||||||
name: 'User 2',
|
|
||||||
};
|
|
||||||
|
|
||||||
const user3Dto = {
|
|
||||||
email: 'user3@immich.app',
|
|
||||||
password: 'Password123',
|
|
||||||
name: 'User 3',
|
|
||||||
};
|
|
||||||
|
|
||||||
describe(`${PartnerController.name} (e2e)`, () => {
|
describe(`${PartnerController.name} (e2e)`, () => {
|
||||||
let server: any;
|
let server: any;
|
||||||
let user1: LoginResponseDto;
|
let user1: LoginResponseDto;
|
||||||
@ -33,20 +14,20 @@ describe(`${PartnerController.name} (e2e)`, () => {
|
|||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
[server] = await testApp.create();
|
[server] = await testApp.create();
|
||||||
|
|
||||||
await db.reset();
|
await testApp.reset();
|
||||||
await api.authApi.adminSignUp(server);
|
await api.authApi.adminSignUp(server);
|
||||||
const admin = await api.authApi.adminLogin(server);
|
const admin = await api.authApi.adminLogin(server);
|
||||||
|
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
api.userApi.create(server, admin.accessToken, user1Dto),
|
api.userApi.create(server, admin.accessToken, userDto.user1),
|
||||||
api.userApi.create(server, admin.accessToken, user2Dto),
|
api.userApi.create(server, admin.accessToken, userDto.user2),
|
||||||
api.userApi.create(server, admin.accessToken, user3Dto),
|
api.userApi.create(server, admin.accessToken, userDto.user3),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
[user1, user2, user3] = await Promise.all([
|
[user1, user2, user3] = await Promise.all([
|
||||||
api.authApi.login(server, { email: user1Dto.email, password: user1Dto.password }),
|
api.authApi.login(server, userDto.user1),
|
||||||
api.authApi.login(server, { email: user2Dto.email, password: user2Dto.password }),
|
api.authApi.login(server, userDto.user2),
|
||||||
api.authApi.login(server, { email: user3Dto.email, password: user3Dto.password }),
|
api.authApi.login(server, userDto.user3),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
|
@ -3,7 +3,6 @@ import { PersonController } from '@app/immich';
|
|||||||
import { PersonEntity } from '@app/infra/entities';
|
import { PersonEntity } from '@app/infra/entities';
|
||||||
import { INestApplication } from '@nestjs/common';
|
import { INestApplication } from '@nestjs/common';
|
||||||
import { api } from '@test/api';
|
import { api } from '@test/api';
|
||||||
import { db } from '@test/db';
|
|
||||||
import { errorStub, uuidStub } from '@test/fixtures';
|
import { errorStub, uuidStub } from '@test/fixtures';
|
||||||
import { testApp } from '@test/test-utils';
|
import { testApp } from '@test/test-utils';
|
||||||
import request from 'supertest';
|
import request from 'supertest';
|
||||||
@ -27,7 +26,7 @@ describe(`${PersonController.name}`, () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await db.reset();
|
await testApp.reset();
|
||||||
await api.authApi.adminSignUp(server);
|
await api.authApi.adminSignUp(server);
|
||||||
loginResponse = await api.authApi.adminLogin(server);
|
loginResponse = await api.authApi.adminLogin(server);
|
||||||
accessToken = loginResponse.accessToken;
|
accessToken = loginResponse.accessToken;
|
||||||
|
@ -1,17 +1,10 @@
|
|||||||
import { LoginResponseDto } from '@app/domain';
|
import { LoginResponseDto } from '@app/domain';
|
||||||
import { ServerInfoController } from '@app/immich';
|
import { ServerInfoController } from '@app/immich';
|
||||||
import { api } from '@test/api';
|
import { api } from '@test/api';
|
||||||
import { db } from '@test/db';
|
import { errorStub, userDto } from '@test/fixtures';
|
||||||
import { errorStub } from '@test/fixtures';
|
|
||||||
import { testApp } from '@test/test-utils';
|
import { testApp } from '@test/test-utils';
|
||||||
import request from 'supertest';
|
import request from 'supertest';
|
||||||
|
|
||||||
const user1Dto = {
|
|
||||||
email: 'user1@immich.app',
|
|
||||||
password: 'Password123',
|
|
||||||
name: 'User 1',
|
|
||||||
};
|
|
||||||
|
|
||||||
describe(`${ServerInfoController.name} (e2e)`, () => {
|
describe(`${ServerInfoController.name} (e2e)`, () => {
|
||||||
let server: any;
|
let server: any;
|
||||||
let admin: LoginResponseDto;
|
let admin: LoginResponseDto;
|
||||||
@ -20,11 +13,11 @@ describe(`${ServerInfoController.name} (e2e)`, () => {
|
|||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
[server] = await testApp.create();
|
[server] = await testApp.create();
|
||||||
|
|
||||||
await db.reset();
|
await testApp.reset();
|
||||||
await api.authApi.adminSignUp(server);
|
await api.authApi.adminSignUp(server);
|
||||||
admin = await api.authApi.adminLogin(server);
|
admin = await api.authApi.adminLogin(server);
|
||||||
await api.userApi.create(server, admin.accessToken, user1Dto);
|
await api.userApi.create(server, admin.accessToken, userDto.user1);
|
||||||
nonAdmin = await api.authApi.login(server, user1Dto);
|
nonAdmin = await api.authApi.login(server, userDto.user1);
|
||||||
});
|
});
|
||||||
|
|
||||||
afterAll(async () => {
|
afterAll(async () => {
|
||||||
|
@ -3,23 +3,11 @@ import { SharedLinkController } from '@app/immich';
|
|||||||
import { SharedLinkType } from '@app/infra/entities';
|
import { SharedLinkType } from '@app/infra/entities';
|
||||||
import { INestApplication } from '@nestjs/common';
|
import { INestApplication } from '@nestjs/common';
|
||||||
import { api } from '@test/api';
|
import { api } from '@test/api';
|
||||||
import { errorStub, uuidStub } from '@test/fixtures';
|
import { errorStub, userDto, uuidStub } from '@test/fixtures';
|
||||||
import { testApp } from '@test/test-utils';
|
import { testApp } from '@test/test-utils';
|
||||||
import { DateTime } from 'luxon';
|
import { DateTime } from 'luxon';
|
||||||
import request from 'supertest';
|
import request from 'supertest';
|
||||||
|
|
||||||
const user1Dto = {
|
|
||||||
email: 'user1@immich.app',
|
|
||||||
password: 'Password123',
|
|
||||||
name: 'User 1',
|
|
||||||
};
|
|
||||||
|
|
||||||
const user2Dto = {
|
|
||||||
email: 'user2@immich.app',
|
|
||||||
password: 'Password123',
|
|
||||||
name: 'User 2',
|
|
||||||
};
|
|
||||||
|
|
||||||
const today = new Date();
|
const today = new Date();
|
||||||
|
|
||||||
describe(`${SharedLinkController.name} (e2e)`, () => {
|
describe(`${SharedLinkController.name} (e2e)`, () => {
|
||||||
@ -46,13 +34,13 @@ describe(`${SharedLinkController.name} (e2e)`, () => {
|
|||||||
admin = await api.authApi.adminLogin(server);
|
admin = await api.authApi.adminLogin(server);
|
||||||
|
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
api.userApi.create(server, admin.accessToken, user1Dto),
|
api.userApi.create(server, admin.accessToken, userDto.user1),
|
||||||
api.userApi.create(server, admin.accessToken, user2Dto),
|
api.userApi.create(server, admin.accessToken, userDto.user2),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
[user1, user2] = await Promise.all([
|
[user1, user2] = await Promise.all([
|
||||||
api.authApi.login(server, { email: user1Dto.email, password: user1Dto.password }),
|
api.authApi.login(server, userDto.user1),
|
||||||
api.authApi.login(server, { email: user2Dto.email, password: user2Dto.password }),
|
api.authApi.login(server, userDto.user2),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const asset = await api.assetApi.create(server, user1.accessToken, {
|
const asset = await api.assetApi.create(server, user1.accessToken, {
|
||||||
|
@ -1,17 +1,10 @@
|
|||||||
import { LoginResponseDto } from '@app/domain';
|
import { LoginResponseDto } from '@app/domain';
|
||||||
import { SystemConfigController } from '@app/immich';
|
import { SystemConfigController } from '@app/immich';
|
||||||
import { api } from '@test/api';
|
import { api } from '@test/api';
|
||||||
import { db } from '@test/db';
|
import { errorStub, userDto } from '@test/fixtures';
|
||||||
import { errorStub } from '@test/fixtures';
|
|
||||||
import { testApp } from '@test/test-utils';
|
import { testApp } from '@test/test-utils';
|
||||||
import request from 'supertest';
|
import request from 'supertest';
|
||||||
|
|
||||||
const user1Dto = {
|
|
||||||
email: 'user1@immich.app',
|
|
||||||
password: 'Password123',
|
|
||||||
name: 'User 1',
|
|
||||||
};
|
|
||||||
|
|
||||||
describe(`${SystemConfigController.name} (e2e)`, () => {
|
describe(`${SystemConfigController.name} (e2e)`, () => {
|
||||||
let server: any;
|
let server: any;
|
||||||
let admin: LoginResponseDto;
|
let admin: LoginResponseDto;
|
||||||
@ -20,11 +13,11 @@ describe(`${SystemConfigController.name} (e2e)`, () => {
|
|||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
[server] = await testApp.create();
|
[server] = await testApp.create();
|
||||||
|
|
||||||
await db.reset();
|
await testApp.reset();
|
||||||
await api.authApi.adminSignUp(server);
|
await api.authApi.adminSignUp(server);
|
||||||
admin = await api.authApi.adminLogin(server);
|
admin = await api.authApi.adminLogin(server);
|
||||||
await api.userApi.create(server, admin.accessToken, user1Dto);
|
await api.userApi.create(server, admin.accessToken, userDto.user1);
|
||||||
nonAdmin = await api.authApi.login(server, user1Dto);
|
nonAdmin = await api.authApi.login(server, userDto.user1);
|
||||||
});
|
});
|
||||||
|
|
||||||
afterAll(async () => {
|
afterAll(async () => {
|
||||||
|
@ -4,8 +4,7 @@ import { UserEntity } from '@app/infra/entities';
|
|||||||
import { INestApplication } from '@nestjs/common';
|
import { INestApplication } from '@nestjs/common';
|
||||||
import { getRepositoryToken } from '@nestjs/typeorm';
|
import { getRepositoryToken } from '@nestjs/typeorm';
|
||||||
import { api } from '@test/api';
|
import { api } from '@test/api';
|
||||||
import { db } from '@test/db';
|
import { errorStub, userDto, userSignupStub, userStub } from '@test/fixtures';
|
||||||
import { errorStub, userSignupStub, userStub } from '@test/fixtures';
|
|
||||||
import { testApp } from '@test/test-utils';
|
import { testApp } from '@test/test-utils';
|
||||||
import request from 'supertest';
|
import request from 'supertest';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
@ -28,7 +27,7 @@ describe(`${UserController.name}`, () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await db.reset();
|
await testApp.reset();
|
||||||
await api.authApi.adminSignUp(server);
|
await api.authApi.adminSignUp(server);
|
||||||
loginResponse = await api.authApi.adminLogin(server);
|
loginResponse = await api.authApi.adminLogin(server);
|
||||||
accessToken = loginResponse.accessToken;
|
accessToken = loginResponse.accessToken;
|
||||||
@ -36,11 +35,6 @@ describe(`${UserController.name}`, () => {
|
|||||||
userService = app.get<UserService>(UserService);
|
userService = app.get<UserService>(UserService);
|
||||||
});
|
});
|
||||||
|
|
||||||
afterAll(async () => {
|
|
||||||
await db.disconnect();
|
|
||||||
await app.close();
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('GET /user', () => {
|
describe('GET /user', () => {
|
||||||
it('should require authentication', async () => {
|
it('should require authentication', async () => {
|
||||||
const { status, body } = await request(server).get('/user');
|
const { status, body } = await request(server).get('/user');
|
||||||
@ -74,11 +68,7 @@ describe(`${UserController.name}`, () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should include deleted users', async () => {
|
it('should include deleted users', async () => {
|
||||||
const user1 = await api.userApi.create(server, accessToken, {
|
const user1 = await api.userApi.create(server, accessToken, userDto.user1);
|
||||||
email: `user1@immich.app`,
|
|
||||||
password: 'Password123',
|
|
||||||
name: `User 1`,
|
|
||||||
});
|
|
||||||
|
|
||||||
await api.userApi.delete(server, accessToken, user1.id);
|
await api.userApi.delete(server, accessToken, user1.id);
|
||||||
|
|
||||||
@ -86,6 +76,7 @@ describe(`${UserController.name}`, () => {
|
|||||||
.get(`/user`)
|
.get(`/user`)
|
||||||
.query({ isAll: false })
|
.query({ isAll: false })
|
||||||
.set('Authorization', `Bearer ${accessToken}`);
|
.set('Authorization', `Bearer ${accessToken}`);
|
||||||
|
|
||||||
expect(status).toBe(200);
|
expect(status).toBe(200);
|
||||||
expect(body).toHaveLength(2);
|
expect(body).toHaveLength(2);
|
||||||
expect(body[0]).toMatchObject({ id: user1.id, email: 'user1@immich.app', deletedAt: expect.any(String) });
|
expect(body[0]).toMatchObject({ id: user1.id, email: 'user1@immich.app', deletedAt: expect.any(String) });
|
||||||
|
18
server/test/fixtures/user.stub.ts
vendored
18
server/test/fixtures/user.stub.ts
vendored
@ -1,6 +1,24 @@
|
|||||||
import { UserAvatarColor, UserEntity } from '@app/infra/entities';
|
import { UserAvatarColor, UserEntity } from '@app/infra/entities';
|
||||||
import { authStub } from './auth.stub';
|
import { authStub } from './auth.stub';
|
||||||
|
|
||||||
|
export const userDto = {
|
||||||
|
user1: {
|
||||||
|
email: 'user1@immich.app',
|
||||||
|
password: 'Password123',
|
||||||
|
name: 'User 1',
|
||||||
|
},
|
||||||
|
user2: {
|
||||||
|
email: 'user2@immich.app',
|
||||||
|
password: 'Password123',
|
||||||
|
name: 'User 2',
|
||||||
|
},
|
||||||
|
user3: {
|
||||||
|
email: 'user3@immich.app',
|
||||||
|
password: 'Password123',
|
||||||
|
name: 'User 3',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
export const userStub = {
|
export const userStub = {
|
||||||
admin: Object.freeze<UserEntity>({
|
admin: Object.freeze<UserEntity>({
|
||||||
...authStub.admin,
|
...authStub.admin,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user