Fix duplicated guests

This commit is contained in:
2023-04-09 15:13:14 +09:00
committed by Clément Le Bihan
parent 6cc7090360
commit e43a8fd111
3 changed files with 35 additions and 8 deletions

View File

@@ -57,12 +57,8 @@ export class AuthController {
@HttpCode(200)
@Post('guest')
async guest(): Promise<JwtToken> {
try {
const user = await this.usersService.createGuest();
return this.authService.login(user);
} catch {
throw new BadRequestException();
}
const user = await this.usersService.createGuest();
return this.authService.login(user);
}
@UseGuards(JwtAuthGuard)

View File

@@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common';
import { User, Prisma } from '@prisma/client';
import { PrismaService } from 'src/prisma/prisma.service';
import * as bcrypt from 'bcryptjs';
import { randomUUID } from 'crypto';
@Injectable()
export class UsersService {
@@ -42,7 +43,7 @@ export class UsersService {
async createGuest(): Promise<User> {
return this.prisma.user.create({
data: {
username: 'Guest',
username: `Guest ${randomUUID()}`,
isGuest: true,
// Not realyl clean but better than a separate table or breaking the api by adding nulls.
email: '',

View File

@@ -23,6 +23,36 @@ LoginAsGuest
[Teardown] DELETE /auth/me
TwoGuests
[Documentation] Login as a guest
&{res}= POST /auth/guest
Output
Integer response status 200
String response body access_token
Set Headers {"Authorization": "Bearer ${res.body.access_token}"}
GET /auth/me
Output
Integer response status 200
Boolean response body isGuest true
Integer response body partyPlayed 0
&{res2}= POST /auth/guest
Output
Integer response status 200
String response body access_token
Set Headers {"Authorization": "Bearer ${res2.body.access_token}"}
GET /auth/me
Output
Integer response status 200
Boolean response body isGuest true
Integer response body partyPlayed 0
[Teardown] Run Keywords DELETE /auth/me
... AND Set Headers {"Authorization": "Bearer ${res.body.access_token}"}
... AND DELETE /auth/me
GuestToNormal
[Documentation] Login as a guest and convert to a normal account
&{res}= POST /auth/guest
@@ -36,7 +66,7 @@ GuestToNormal
Integer response status 200
Boolean response body isGuest true
${res}= PUT /auth/me { "username": "toto", "password": "toto", "email": "a@b.c"}
${res}= PUT /auth/me { "username": "toto", "password": "toto", "email": "a@b.c"}
Output
Integer response status 200
String response body username "toto"