Refactor avatar URL assignment and simplify user retrieval in create-user logic

This commit is contained in:
MartinBraquet
2026-02-23 14:58:45 +01:00
parent f70a74d20e
commit 23a8aa6712
2 changed files with 5 additions and 98 deletions

View File

@@ -34,9 +34,7 @@ export const createUser: APIHandler<'create-user'> = async (props, auth, req) =>
const name = cleanDisplayName(rawName)
const bucket = getBucket()
const avatarUrl = fbUser.photoURL
? fbUser.photoURL
: await generateAvatarUrl(auth.uid, name, bucket)
const avatarUrl = fbUser.photoURL ?? (await generateAvatarUrl(auth.uid, name, bucket))
const pg = createSupabaseDirectClient()

View File

@@ -74,13 +74,6 @@ describe('createUser', () => {
},
}
const mockReq = {get: jest.fn().mockReturnValue(mockReferer)} as any
const mockFirebaseUser = {
providerData: [
{
providerId: 'passwords',
},
],
}
const mockFbUser = {
email: 'mockEmail@mockServer.com',
displayName: 'mockDisplayName',
@@ -101,10 +94,7 @@ describe('createUser', () => {
id: 'mockPrivateUserId',
}
const mockGetUser = jest
.fn()
.mockResolvedValueOnce(mockFirebaseUser)
.mockResolvedValueOnce(mockFbUser)
const mockGetUser = jest.fn().mockResolvedValueOnce(mockFbUser)
;(firebaseAdmin.auth as jest.Mock).mockReturnValue({
getUser: mockGetUser,
})
@@ -127,13 +117,8 @@ describe('createUser', () => {
expect(results.result.user).toEqual(mockNewUserRow)
expect(results.result.privateUser).toEqual(mockPrivateUserRow)
expect(mockGetUser).toBeCalledTimes(2)
expect(mockGetUser).toBeCalledTimes(1)
expect(mockGetUser).toHaveBeenNthCalledWith(1, mockAuth.uid)
expect(mockReq.get).toBeCalledTimes(1)
expect(mockReq.get).toBeCalledWith(Object.keys(mockReferer.headers)[0])
expect(sharedAnalytics.getIp).toBeCalledTimes(1)
expect(sharedAnalytics.getIp).toBeCalledWith(mockReq)
expect(mockGetUser).toHaveBeenNthCalledWith(2, mockAuth.uid)
expect(usernameUtils.cleanDisplayName).toBeCalledTimes(1)
expect(usernameUtils.cleanDisplayName).toHaveBeenCalledWith(mockFbUser.displayName)
expect(usernameUtils.cleanUsername).toBeCalledTimes(1)
@@ -178,83 +163,6 @@ describe('createUser', () => {
expect(apiSetLastTimeOnline.setLastOnlineTimeUser).toBeCalledWith(mockAuth.uid)
})
it('should generate a device token when creating a user', async () => {
const mockProps = {
deviceToken: 'mockDeviceToken',
adminToken: 'mockAdminToken',
}
const mockAuth = {uid: '321'} as AuthedUser
const mockReferer = {
headers: {
referer: 'mockReferer',
},
}
const mockReq = {get: jest.fn().mockReturnValue(mockReferer)} as any
const mockFirebaseUser = {
providerData: [
{
providerId: 'password',
},
],
}
const mockFbUser = {
email: 'mockEmail@mockServer.com',
displayName: 'mockDisplayName',
photoURL: 'mockPhotoUrl',
}
const mockIp = 'mockIP'
const mockBucket = {} as any
const mockNewUserRow = {
created_time: 'mockCreatedTime',
data: {mockNewUserJson: 'mockNewUserJsonData'},
id: 'mockNewUserId',
name: 'mockName',
name_username_vector: 'mockNameUsernameVector',
username: 'mockUsername',
}
const mockPrivateUserRow = {
data: {mockPrivateUserJson: 'mockPrivateUserJsonData'},
id: 'mockPrivateUserId',
}
const mockGetUser = jest
.fn()
.mockResolvedValueOnce(mockFirebaseUser)
.mockResolvedValueOnce(mockFbUser)
;(firebaseAdmin.auth as jest.Mock).mockReturnValue({
getUser: mockGetUser,
})
;(sharedAnalytics.getIp as jest.Mock).mockReturnValue(mockIp)
;(firebaseAdmin.auth as jest.Mock).mockReturnValue({
getUser: mockGetUser,
})
;(usernameUtils.cleanDisplayName as jest.Mock).mockReturnValue(mockFbUser.displayName)
;(firebaseUtils.getBucket as jest.Mock).mockReturnValue(mockBucket)
;(usernameUtils.cleanUsername as jest.Mock).mockReturnValue(mockFbUser.displayName)
;(mockPg.one as jest.Mock).mockResolvedValue(0)
;(sharedUtils.getUser as jest.Mock).mockResolvedValue(false)
;(sharedUtils.getUserByUsername as jest.Mock).mockResolvedValue(false)
;(userNotificationPref.getDefaultNotificationPreferences as jest.Mock).mockReturnValue(null)
;(supabaseUtils.insert as jest.Mock).mockResolvedValueOnce(null).mockResolvedValueOnce(null)
;(supabaseUsers.convertUser as jest.Mock).mockReturnValue(mockNewUserRow)
;(supabaseUsers.convertPrivateUser as jest.Mock).mockReturnValue(mockPrivateUserRow)
await createUser(mockProps, mockAuth, mockReq)
expect(supabaseUtils.insert).not.toHaveBeenNthCalledWith(
2,
expect.any(Object),
'private_users',
{
id: expect.any(String),
data: expect.objectContaining({
initialDeviceToken: mockProps.deviceToken,
}),
},
)
})
it('should generate a avatar Url when creating a user', async () => {
const mockProps = {
deviceToken: 'mockDeviceToken',
@@ -460,6 +368,7 @@ describe('createUser', () => {
;(usernameUtils.cleanDisplayName as jest.Mock).mockReturnValue(mockFbUser.displayName)
;(firebaseUtils.getBucket as jest.Mock).mockReturnValue(mockBucket)
;(usernameUtils.cleanUsername as jest.Mock).mockReturnValue(mockFbUser.displayName)
;(avatarHelpers.generateAvatarUrl as jest.Mock).mockResolvedValue(mockFbUser.photoURL)
;(mockPg.one as jest.Mock).mockResolvedValue(0)
;(sharedUtils.getUser as jest.Mock).mockResolvedValue(false)
;(sharedUtils.getUserByUsername as jest.Mock).mockResolvedValue(false)
@@ -475,7 +384,7 @@ describe('createUser', () => {
expect(objectUtils.removeUndefinedProps).toHaveBeenCalledWith({
avatarUrl: mockFbUser.photoURL,
isBannedFromPosting: true,
link: expect.any(Object),
link: {},
})
})
})