Skip to content

Commit 23a8aa6

Browse files
committed
Refactor avatar URL assignment and simplify user retrieval in create-user logic
1 parent f70a74d commit 23a8aa6

2 files changed

Lines changed: 5 additions & 98 deletions

File tree

backend/api/src/create-user.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,7 @@ export const createUser: APIHandler<'create-user'> = async (props, auth, req) =>
3434
const name = cleanDisplayName(rawName)
3535

3636
const bucket = getBucket()
37-
const avatarUrl = fbUser.photoURL
38-
? fbUser.photoURL
39-
: await generateAvatarUrl(auth.uid, name, bucket)
37+
const avatarUrl = fbUser.photoURL ?? (await generateAvatarUrl(auth.uid, name, bucket))
4038

4139
const pg = createSupabaseDirectClient()
4240

backend/api/tests/unit/create-user.unit.test.ts

Lines changed: 4 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,6 @@ describe('createUser', () => {
7474
},
7575
}
7676
const mockReq = {get: jest.fn().mockReturnValue(mockReferer)} as any
77-
const mockFirebaseUser = {
78-
providerData: [
79-
{
80-
providerId: 'passwords',
81-
},
82-
],
83-
}
8477
const mockFbUser = {
8578
email: 'mockEmail@mockServer.com',
8679
displayName: 'mockDisplayName',
@@ -101,10 +94,7 @@ describe('createUser', () => {
10194
id: 'mockPrivateUserId',
10295
}
10396

104-
const mockGetUser = jest
105-
.fn()
106-
.mockResolvedValueOnce(mockFirebaseUser)
107-
.mockResolvedValueOnce(mockFbUser)
97+
const mockGetUser = jest.fn().mockResolvedValueOnce(mockFbUser)
10898
;(firebaseAdmin.auth as jest.Mock).mockReturnValue({
10999
getUser: mockGetUser,
110100
})
@@ -127,13 +117,8 @@ describe('createUser', () => {
127117

128118
expect(results.result.user).toEqual(mockNewUserRow)
129119
expect(results.result.privateUser).toEqual(mockPrivateUserRow)
130-
expect(mockGetUser).toBeCalledTimes(2)
120+
expect(mockGetUser).toBeCalledTimes(1)
131121
expect(mockGetUser).toHaveBeenNthCalledWith(1, mockAuth.uid)
132-
expect(mockReq.get).toBeCalledTimes(1)
133-
expect(mockReq.get).toBeCalledWith(Object.keys(mockReferer.headers)[0])
134-
expect(sharedAnalytics.getIp).toBeCalledTimes(1)
135-
expect(sharedAnalytics.getIp).toBeCalledWith(mockReq)
136-
expect(mockGetUser).toHaveBeenNthCalledWith(2, mockAuth.uid)
137122
expect(usernameUtils.cleanDisplayName).toBeCalledTimes(1)
138123
expect(usernameUtils.cleanDisplayName).toHaveBeenCalledWith(mockFbUser.displayName)
139124
expect(usernameUtils.cleanUsername).toBeCalledTimes(1)
@@ -178,83 +163,6 @@ describe('createUser', () => {
178163
expect(apiSetLastTimeOnline.setLastOnlineTimeUser).toBeCalledWith(mockAuth.uid)
179164
})
180165

181-
it('should generate a device token when creating a user', async () => {
182-
const mockProps = {
183-
deviceToken: 'mockDeviceToken',
184-
adminToken: 'mockAdminToken',
185-
}
186-
const mockAuth = {uid: '321'} as AuthedUser
187-
const mockReferer = {
188-
headers: {
189-
referer: 'mockReferer',
190-
},
191-
}
192-
const mockReq = {get: jest.fn().mockReturnValue(mockReferer)} as any
193-
const mockFirebaseUser = {
194-
providerData: [
195-
{
196-
providerId: 'password',
197-
},
198-
],
199-
}
200-
const mockFbUser = {
201-
email: 'mockEmail@mockServer.com',
202-
displayName: 'mockDisplayName',
203-
photoURL: 'mockPhotoUrl',
204-
}
205-
const mockIp = 'mockIP'
206-
const mockBucket = {} as any
207-
const mockNewUserRow = {
208-
created_time: 'mockCreatedTime',
209-
data: {mockNewUserJson: 'mockNewUserJsonData'},
210-
id: 'mockNewUserId',
211-
name: 'mockName',
212-
name_username_vector: 'mockNameUsernameVector',
213-
username: 'mockUsername',
214-
}
215-
const mockPrivateUserRow = {
216-
data: {mockPrivateUserJson: 'mockPrivateUserJsonData'},
217-
id: 'mockPrivateUserId',
218-
}
219-
220-
const mockGetUser = jest
221-
.fn()
222-
.mockResolvedValueOnce(mockFirebaseUser)
223-
.mockResolvedValueOnce(mockFbUser)
224-
225-
;(firebaseAdmin.auth as jest.Mock).mockReturnValue({
226-
getUser: mockGetUser,
227-
})
228-
;(sharedAnalytics.getIp as jest.Mock).mockReturnValue(mockIp)
229-
;(firebaseAdmin.auth as jest.Mock).mockReturnValue({
230-
getUser: mockGetUser,
231-
})
232-
;(usernameUtils.cleanDisplayName as jest.Mock).mockReturnValue(mockFbUser.displayName)
233-
;(firebaseUtils.getBucket as jest.Mock).mockReturnValue(mockBucket)
234-
;(usernameUtils.cleanUsername as jest.Mock).mockReturnValue(mockFbUser.displayName)
235-
;(mockPg.one as jest.Mock).mockResolvedValue(0)
236-
;(sharedUtils.getUser as jest.Mock).mockResolvedValue(false)
237-
;(sharedUtils.getUserByUsername as jest.Mock).mockResolvedValue(false)
238-
;(userNotificationPref.getDefaultNotificationPreferences as jest.Mock).mockReturnValue(null)
239-
;(supabaseUtils.insert as jest.Mock).mockResolvedValueOnce(null).mockResolvedValueOnce(null)
240-
;(supabaseUsers.convertUser as jest.Mock).mockReturnValue(mockNewUserRow)
241-
;(supabaseUsers.convertPrivateUser as jest.Mock).mockReturnValue(mockPrivateUserRow)
242-
243-
await createUser(mockProps, mockAuth, mockReq)
244-
245-
expect(supabaseUtils.insert).not.toHaveBeenNthCalledWith(
246-
2,
247-
expect.any(Object),
248-
'private_users',
249-
{
250-
id: expect.any(String),
251-
data: expect.objectContaining({
252-
initialDeviceToken: mockProps.deviceToken,
253-
}),
254-
},
255-
)
256-
})
257-
258166
it('should generate a avatar Url when creating a user', async () => {
259167
const mockProps = {
260168
deviceToken: 'mockDeviceToken',
@@ -460,6 +368,7 @@ describe('createUser', () => {
460368
;(usernameUtils.cleanDisplayName as jest.Mock).mockReturnValue(mockFbUser.displayName)
461369
;(firebaseUtils.getBucket as jest.Mock).mockReturnValue(mockBucket)
462370
;(usernameUtils.cleanUsername as jest.Mock).mockReturnValue(mockFbUser.displayName)
371+
;(avatarHelpers.generateAvatarUrl as jest.Mock).mockResolvedValue(mockFbUser.photoURL)
463372
;(mockPg.one as jest.Mock).mockResolvedValue(0)
464373
;(sharedUtils.getUser as jest.Mock).mockResolvedValue(false)
465374
;(sharedUtils.getUserByUsername as jest.Mock).mockResolvedValue(false)
@@ -475,7 +384,7 @@ describe('createUser', () => {
475384
expect(objectUtils.removeUndefinedProps).toHaveBeenCalledWith({
476385
avatarUrl: mockFbUser.photoURL,
477386
isBannedFromPosting: true,
478-
link: expect.any(Object),
387+
link: {},
479388
})
480389
})
481390
})

0 commit comments

Comments
 (0)