@@ -213,6 +213,42 @@ def test_create_relaynumber_when_user_already_has_one_raises_error(
213213 mock_messages_create .assert_not_called ()
214214
215215
216+ def test_create_duplicate_relaynumber_raises_error (phone_user , mocked_twilio_client ):
217+ mock_twilio_client = mocked_twilio_client
218+ mock_messages_create = mock_twilio_client .messages .create
219+ mock_number_create = mock_twilio_client .incoming_phone_numbers .create
220+
221+ real_phone = "+12223334444"
222+ RealPhone .objects .create (user = phone_user , verified = True , number = real_phone )
223+ mock_messages_create .assert_called_once ()
224+ mock_messages_create .reset_mock ()
225+
226+ relay_number = "+19998887777"
227+ relay_number_obj = RelayNumber .objects .create (user = phone_user , number = relay_number )
228+
229+ mock_number_create .assert_called_once ()
230+ call_kwargs = mock_number_create .call_args .kwargs
231+ assert call_kwargs ["phone_number" ] == relay_number
232+ assert call_kwargs ["sms_application_sid" ] == settings .TWILIO_SMS_APPLICATION_SID
233+ assert call_kwargs ["voice_application_sid" ] == settings .TWILIO_SMS_APPLICATION_SID
234+
235+ mock_messages_create .assert_called_once ()
236+ mock_number_create .reset_mock ()
237+ mock_messages_create .reset_mock ()
238+
239+ second_user = make_phone_test_user ()
240+ second_phone = "+15553334444"
241+ RealPhone .objects .create (user = second_user , verified = True , number = second_phone )
242+ mock_messages_create .assert_called_once ()
243+ mock_messages_create .reset_mock ()
244+
245+ with pytest .raises (ValidationError ) as exc_info :
246+ RelayNumber .objects .create (user = second_user , number = relay_number )
247+ assert exc_info .value .message == "This number is already claimed."
248+ mock_number_create .assert_not_called ()
249+ mock_messages_create .assert_not_called ()
250+
251+
216252def test_create_relaynumber_creates_twilio_incoming_number_and_sends_welcome (
217253 phone_user , mocked_twilio_client
218254):
0 commit comments