@point3/logto-module
Version:
포인트3 내부 logto Authentication 모듈입니다
82 lines (70 loc) • 3.13 kB
text/typescript
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);
});
});