UNPKG

@point3/logto-module

Version:

포인트3 내부 logto Authentication 모듈입니다

82 lines (70 loc) 3.13 kB
import { Test, TestingModule } from "@nestjs/testing"; import { ConfigModule } from "@nestjs/config"; import { p3Values } from "point3-common-tool"; import { LogtoLoggerServiceToken, LogtoM2MClient, LogtoM2MClientToken, LogtoUser } from ".."; import { LogtoTokenVerifier, LogtoTokenVerifierToken } from "../../token"; import { ConsoleLogger } from "@nestjs/common"; describe('M2mclient를 이용한 Logto API 테스트', () => { let m2mClient: LogtoM2MClient; let testUser: LogtoUser; let testUserId: string = 'bead71jr45u1'; let testRoleId: string = '0fwcgs8okjy7lav216sb3'; beforeAll(async () => { const module: TestingModule = await Test.createTestingModule({ imports: [ ConfigModule.forRoot({ envFilePath: `env/.env.${process.env.NODE_ENV}`, isGlobal: true, }) ], providers: [ { provide: LogtoTokenVerifierToken, useClass: LogtoTokenVerifier }, { provide: LogtoLoggerServiceToken, useClass: ConsoleLogger } ], }).compile(); m2mClient = module.get<LogtoM2MClient>(LogtoM2MClientToken); // random number 4 자리 const randomNumber = Math.floor(1000 + Math.random() * 9000); testUser = { username: p3Values.Guid.create('test').toString().replace(/-/g, '_'), // '01958ea8-8a60-7c41-bef2-f6ed8d2d5506' name: 'test' + randomNumber, primaryEmail: 'test' + randomNumber + '@test.com', password: 'test123', primaryPhone: '0101111' + randomNumber, }; }); it('유저 생성', async () => { const userId = await m2mClient.createUser(testUser); expect(userId).toBeDefined(); testUserId = userId; }); it('토큰 발급', async () => { await m2mClient.fetchAccessToken(); }); it('PAT 추가 및 삭제', async () => { const tokenName = 'test_pat_' + Math.floor(1000 + Math.random() * 9000); // 발급 테스트 const newToken = await m2mClient.addPersonalAccessToken(testUserId, tokenName, 3600); expect(newToken).toBeDefined(); expect(newToken.name).toBe(tokenName); // 조회 테스트 (추가되었는지 확인) const tokens = await m2mClient.getPersonalAccessTokens(testUserId); const foundToken = tokens.find(t => t.name === tokenName); expect(foundToken).toBeDefined(); // 삭제 테스트 await m2mClient.deletePersonalAccessToken(testUserId, tokenName); // 조회 테스트 (삭제되었는지 확인) const tokensAfterDelete = await m2mClient.getPersonalAccessTokens(testUserId); const deletedToken = tokensAfterDelete.find(t => t.name === tokenName); expect(deletedToken).toBeUndefined(); }); it('유저 정보 수정', async () => { await m2mClient.updateUserClientInfo(testUserId); }); });