Skip to content

Commit 56aa6d8

Browse files
authored
Merge pull request #1685 from Northeastern-Electric-Racing/1576-backend-check-for-duplicate-phone-numbers-before-prisma-call
#1576 Threw an exception when there is an existing phone number in th…
2 parents 374b75d + e556554 commit 56aa6d8

2 files changed

Lines changed: 25 additions & 1 deletion

File tree

src/backend/src/services/users.services.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,14 @@ export default class UsersService {
289289
zipcode: string,
290290
phoneNumber: string
291291
): Promise<string> {
292+
const existingUser = await prisma.user_Secure_Settings.findFirst({
293+
where: { phoneNumber }
294+
});
295+
296+
if (existingUser) {
297+
throw new HttpException(400, 'Phone number already in use');
298+
}
299+
292300
const newUserSecureSettings = await prisma.user_Secure_Settings.upsert({
293301
where: { userId: user.userId },
294302
update: {

src/backend/tests/users.test.ts

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
} from './test-data/users.test-data';
1111
import { Role } from '@prisma/client';
1212
import UsersService from '../src/services/users.services';
13-
import { AccessDeniedException, NotFoundException } from '../src/utils/errors.utils';
13+
import { AccessDeniedException, HttpException, NotFoundException } from '../src/utils/errors.utils';
1414
import userTransformer from '../src/transformers/user.transformer';
1515

1616
describe('Users', () => {
@@ -106,6 +106,7 @@ describe('Users', () => {
106106
});
107107

108108
test('setUserSecureSettings works', async () => {
109+
vi.spyOn(prisma.user_Secure_Settings, 'findFirst').mockResolvedValue(null);
109110
vi.spyOn(prisma.user_Secure_Settings, 'upsert').mockResolvedValue(batmanSecureSettings);
110111
const res = await UsersService.setUserSecureSettings(
111112
batman,
@@ -119,5 +120,20 @@ describe('Users', () => {
119120

120121
expect(res).toBe(batmanSecureSettings.userSecureSettingsId);
121122
});
123+
124+
test('setting same phone number does not work', async () => {
125+
vi.spyOn(prisma.user_Secure_Settings, 'findFirst').mockResolvedValue(batmanSecureSettings);
126+
await expect(() =>
127+
UsersService.setUserSecureSettings(
128+
batman,
129+
batmanSecureSettings.nuid,
130+
batmanSecureSettings.street,
131+
batmanSecureSettings.city,
132+
batmanSecureSettings.state,
133+
batmanSecureSettings.zipcode,
134+
batmanSecureSettings.phoneNumber
135+
)
136+
).rejects.toThrow(new HttpException(400, 'Phone number already in use'));
137+
});
122138
});
123139
});

0 commit comments

Comments
 (0)