def test_require_2fa__delete_with_multiple_auth__ok(self, email_log):
        self._require_2fa_for_organization()

        new_options = settings.SENTRY_OPTIONS.copy()
        new_options["sms.twilio-account"] = "twilio-account"

        with self.settings(SENTRY_OPTIONS=new_options):
            # enroll in two auth methods
            interface = SmsInterface()
            interface.phone_number = "5551231234"
            interface.enroll(self.user)

            interface = TotpInterface()
            interface.enroll(self.user)
            auth = interface.authenticator

            url = reverse(
                "sentry-api-0-user-authenticator-details",
                kwargs={
                    "user_id": self.user.id,
                    "auth_id": auth.id
                },
            )
            resp = self.client.delete(url, format="json")
            assert resp.status_code == 204, (resp.status_code, resp.content)

            assert not Authenticator.objects.filter(id=auth.id).exists()

            self._assert_security_email_sent("mfa-removed", email_log)
    def test_require_2fa__delete_with_multiple_auth__ok(self, email_log):
        self._require_2fa_for_organization()

        new_options = settings.SENTRY_OPTIONS.copy()
        new_options['sms.twilio-account'] = 'twilio-account'

        with self.settings(SENTRY_OPTIONS=new_options):
            # enroll in two auth methods
            interface = SmsInterface()
            interface.phone_number = '5551231234'
            interface.enroll(self.user)

            interface = TotpInterface()
            interface.enroll(self.user)
            auth = interface.authenticator

            url = reverse(
                'sentry-api-0-user-authenticator-details',
                kwargs={
                    'user_id': self.user.id,
                    'auth_id': auth.id,
                }
            )
            resp = self.client.delete(url, format='json')
            assert resp.status_code == 204, (resp.status_code, resp.content)

            assert not Authenticator.objects.filter(
                id=auth.id,
            ).exists()

            self._assert_security_email_sent('mfa-removed', email_log)
Beispiel #3
0
    def test_sms_get_phone(self):
        interface = SmsInterface()
        interface.phone_number = '5551231234'
        interface.enroll(self.user)

        url = reverse('sentry-api-0-user-authenticator-details',
                      kwargs={
                          'user_id': self.user.id,
                          'auth_id': interface.authenticator.id,
                      })

        resp = self.client.get(url)
        assert resp.status_code == 200
        assert resp.data['id'] == "sms"
        assert resp.data['authId'] == six.text_type(interface.authenticator.id)
        assert resp.data['phone'] == '5551231234'

        # should not have these because enrollment
        assert 'totp_secret' not in resp.data
        assert 'form' not in resp.data
    def test_sms_get_phone(self):
        interface = SmsInterface()
        interface.phone_number = "5551231234"
        interface.enroll(self.user)

        url = reverse(
            "sentry-api-0-user-authenticator-details",
            kwargs={
                "user_id": self.user.id,
                "auth_id": interface.authenticator.id
            },
        )

        resp = self.client.get(url)
        assert resp.status_code == 200
        assert resp.data["id"] == "sms"
        assert resp.data["authId"] == six.text_type(interface.authenticator.id)
        assert resp.data["phone"] == "5551231234"

        # should not have these because enrollment
        assert "totp_secret" not in resp.data
        assert "form" not in resp.data
    def test_sms_get_phone(self):
        interface = SmsInterface()
        interface.phone_number = '5551231234'
        interface.enroll(self.user)

        url = reverse(
            'sentry-api-0-user-authenticator-details',
            kwargs={
                'user_id': self.user.id,
                'auth_id': interface.authenticator.id,
            }
        )

        resp = self.client.get(url)
        assert resp.status_code == 200
        assert resp.data['id'] == "sms"
        assert resp.data['authId'] == six.text_type(interface.authenticator.id)
        assert resp.data['phone'] == '5551231234'

        # should not have these because enrollment
        assert 'totp_secret' not in resp.data
        assert 'form' not in resp.data