Пример #1
0
class UserRetrieve(TestCase):
    def setUp(self):
        self.user = UserFactory()
        self.user.set_password('password')
        self.user.save()
        self.usertoken, self.created = Token.objects.get_or_create(
            user=self.user)
        self.client._login(self.user)
        self.url = f'/api/v1/users/profiles/{str(self.user.link_id)}/'

    def test_retrieve_only_yourself(self):
        expected = {
            'email': self.user.email,
            'username': self.user.username,
        }
        response = self.client.get(self.url)

        self.assertEqual(response.status_code, 200)
        self.assertEqual(expected, json.loads(response.content.decode()))

    def test_retrieve_other_user(self):
        other_url = f'/api/v1/users/profiles/{str(self.user2.link_id)}/'
        response = self.client.get(other_url)
        expected = {
            'email': self.user.email,
            'username': self.user.username,
        }
        self.assertEqual(response.status_code, 200)
        self.assertEqual(expected, json.loads(response.content.decode()))
Пример #2
0
 def setUp(self):
     self.user = UserFactory()
     self.user.set_password('password')
     self.user.save()
     self.usertoken, self.created = Token.objects.get_or_create(
         user=self.user)
     self.client._login(self.user)
     self.url = f'/api/v1/users/profiles/{str(self.user.link_id)}/'
Пример #3
0
class UserLoginTestCase(TestCase):
    """Tests for .users.viewsets.CustomAuthToken"""
    def setUp(self):
        self.user = UserFactory(verified=True)
        self.user.set_password('password')
        self.user.save()
        self.url = f'/login/'

    def test_email_login(self):
        response = self.client.post(self.url,
                                    data=json.dumps({
                                        'email': self.user.email,
                                        "password": '******'
                                    }),
                                    content_type='application/json')

        self.assertEqual(response.status_code, 200)

    def test_login_with_wrong_password(self):
        """
        Users can have None as phone or email. Test checks that authentication response is correct.
        If worong password is typed return ['Unable to login with provided credentials.']
        """
        UserFactory()
        response = self.client.post(self.url,
                                    data=json.dumps({
                                        'email': self.user.email,
                                        "password": '******'
                                    }),
                                    content_type='application/json')

        data = json.loads(response.content.decode())
        expected = {
            'non_field_errors': ['Unable to login with provided credentials.']
        }
        self.assertEqual(response.status_code, 400)
        self.assertEqual(data, expected)

    def test_login_without_username(self):
        """Users should not be able to login without email or phone. All fields need to be filled"""
        response = self.client.post(self.url,
                                    data=json.dumps({
                                        'email': '',
                                        "password": '******'
                                    }),
                                    content_type='application/json')

        data = json.loads(response.content.decode())
        expected = {'non_field_errors': ['Both fields needs to be filled']}
        self.assertEqual(response.status_code, 400)
        self.assertEqual(data, expected)
Пример #4
0
 def setUp(self):
     """
     A user is created in during the migrations. Hence, there will be at least one user in the database.
     1 user in the database = none user created during the test.
     """
     self.url = '/api/v1/users/profiles/'
     self.user = UserFactory(verified=True)
Пример #5
0
class UserViewSetChangePasswordTestCase(TestCase):
    """Tests for .viewsets.UserViewSet.forgot_password"""
    def setUp(self):
        self.user = UserFactory(verified=True)
        self.client._login(self.user)
        self.url = f'/api/v1/users/profiles/change_password/'

    def test_change_password(self):
        response = self.client.put(self.url,
                                   data=json.dumps({
                                       'password': '******',
                                       'confirmed_password': '******'
                                   }),
                                   content_type='application/json')
        self.user.refresh_from_db()
        self.assertEqual(response.status_code, 200)
        self.assertTrue(self.user.check_password('test'))

    def test_change_password_as_unauthenticated(self):
        """A unauthenticated user should not be able to change password"""
        self.client.logout()
        response = self.client.put(self.url,
                                   data=json.dumps({
                                       'password': '******',
                                       'confirmed_password': '******'
                                   }),
                                   content_type='application/json')
        self.user.refresh_from_db()
        self.assertEqual(response.status_code, 401)
        self.assertFalse(self.user.check_password('test'))
Пример #6
0
class TestUserUpdateViewSet(TestCase):
    def setUp(self):
        self.clinic = ClinicFactory()
        self.url = '/api/v1/users/profiles/'
        self.user = UserFactory(verified=True)

    def test_update_user(self):

        self.client._login(self.user)
        self.treatment_time = timezone.now()
        data = {
            'username': '******',
        }

        data = json.dumps(data, cls=DjangoJSONEncoder)
        response = self.client.put(self.url + str(self.user.link_id) + '/',
                                   data=data,
                                   content_type='application/json')
        self.user.refresh_from_db()
        self.assertEqual(response.status_code, 200)
        self.assertEqual(User.objects.count(), 1)
        self.assertEqual(str(response.content, encoding='utf8'),
                         data.replace(" ", ""))
Пример #7
0
    def test_login_with_wrong_password(self):
        """
        Users can have None as phone or email. Test checks that authentication response is correct.
        If worong password is typed return ['Unable to login with provided credentials.']
        """
        UserFactory()
        response = self.client.post(self.url,
                                    data=json.dumps({
                                        'email': self.user.email,
                                        "password": '******'
                                    }),
                                    content_type='application/json')

        data = json.loads(response.content.decode())
        expected = {
            'non_field_errors': ['Unable to login with provided credentials.']
        }
        self.assertEqual(response.status_code, 400)
        self.assertEqual(data, expected)
Пример #8
0
 def setUp(self):
     self.clinic = ClinicFactory()
     self.url = '/api/v1/users/profiles/'
     self.user = UserFactory(verified=True)
Пример #9
0
 def setUp(self):
     self.user = UserFactory(verified=True)
     self.token = OneTimeToken(self.user)
     self.url = '/api/v1/users/profiles/password_token/'
     self.client._login(self.user)
Пример #10
0
 def setUp(self):
     self.user = UserFactory()
     self.url = f'/api/v1/users/profiles/reset_password/'
Пример #11
0
 def setUp(self):
     self.user = UserFactory(verified=True)
     self.client._login(self.user)
     self.url = f'/api/v1/users/profiles/change_password/'
Пример #12
0
 def setUp(self):
     self.user = UserFactory(verified=True)
     self.url = f'/api/v1/users/profiles/exists/'
     self.client._login(self.user)
Пример #13
0
 def setUp(self):
     self.user = UserFactory(verified=True)
     self.user.set_password('password')
     self.user.save()
     self.url = f'/login/'