Esempio n. 1
0
class LoginTest(TestCase):
    def setUp(self):
        super().setUp()
        self.view = LoginView()
        self.user = User.objects.create()

        self.authenticate_mock = self.patch('users.views.authenticate')
        self.request_mock = Mock(META={
            'CSRF_COOKIE': 'abcd',
            'REMOTE_ADDR': '127.0.0.1'
        })
        self.patch('users.views.login')

    def test_success(self):
        self.authenticate_mock.return_value = self.user

        response = self.view.login(self.request_mock, AnonymousUser(), {
            'username': '******',
            'password': '******'
        })

        self.assertEqual(200, response.status_code)

    def test_ratelimited(self):
        with override_settings(RATELIMIT_ENABLE=True):
            self.authenticate_mock.return_value = None
            for i in range(11):
                self.assertRaises(
                    AuthenticationFailed, lambda: self.view.login(
                        self.request_mock, AnonymousUser(), {
                            'username': '******',
                            'password': '******'
                        }))

            self.authenticate_mock.return_value = self.user
            self.assertRaises(
                Ratelimited,
                lambda: self.view.login(self.request_mock, AnonymousUser(), {
                    'username': '******',
                    'password': '******'
                }))