Пример #1
0
class UserLogoViewTest(OCLAPITestCase):
    def setUp(self):
        super().setUp()
        self.user = UserProfileFactory(username='******')
        self.token = self.user.get_token()

    @patch('core.common.services.S3.upload_base64')
    def test_post_200(self, upload_base64_mock):
        upload_base64_mock.return_value = 'users/username1/logo.png'
        self.assertIsNone(self.user.logo_url)
        self.assertIsNone(self.user.logo_path)

        response = self.client.post(self.user.uri + 'logo/',
                                    dict(base64='base64-data'),
                                    HTTP_AUTHORIZATION='Token ' + self.token,
                                    format='json')

        self.assertEqual(response.status_code, 200)
        expected_logo_url = 'http://oclapi2-dev.s3.amazonaws.com/users/username1/logo.png'
        self.assertEqual(
            response.data['logo_url'].replace('https://', 'http://'),
            expected_logo_url)
        self.user.refresh_from_db()
        self.assertEqual(self.user.logo_url.replace('https://', 'http://'),
                         expected_logo_url)
        self.assertEqual(self.user.logo_path, 'users/username1/logo.png')
        upload_base64_mock.assert_called_once_with('base64-data',
                                                   'users/username1/logo.png',
                                                   False, True)
Пример #2
0
    def test_request_and_reset(self, send_mail_mock):
        user = UserProfileFactory(username='******', email='*****@*****.**')
        self.assertIsNone(user.verification_token)

        response = self.client.post('/users/password/reset/',
                                    dict(),
                                    format='json')
        self.assertEqual(response.status_code, 400)

        response = self.client.post('/users/password/reset/',
                                    dict(email='*****@*****.**'),
                                    format='json')
        self.assertEqual(response.status_code, 404)

        response = self.client.post('/users/password/reset/',
                                    dict(email='*****@*****.**'),
                                    format='json')
        self.assertEqual(response.status_code, 200)
        user.refresh_from_db()
        self.assertIsNotNone(user.verification_token)
        send_mail_mock.assert_called_once()

        response = self.client.put('/users/password/reset/',
                                   dict(),
                                   format='json')
        self.assertEqual(response.status_code, 400)

        response = self.client.put('/users/password/reset/',
                                   dict(token='bad-token'),
                                   format='json')
        self.assertEqual(response.status_code, 400)

        response = self.client.put('/users/password/reset/',
                                   dict(new_password='******'),
                                   format='json')
        self.assertEqual(response.status_code, 400)

        response = self.client.put('/users/password/reset/',
                                   dict(token='bad-token',
                                        new_password='******'),
                                   format='json')
        self.assertEqual(response.status_code, 404)

        response = self.client.put('/users/password/reset/',
                                   dict(token=user.verification_token,
                                        new_password='******'),
                                   format='json')
        self.assertEqual(response.status_code, 200)

        user.refresh_from_db()
        self.assertIsNone(user.verification_token)
        self.assertTrue(user.check_password('new-password123'))

        response = self.client.post('/users/login/',
                                    dict(username='******',
                                         password='******'),
                                    format='json')

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data, dict(token=user.get_token()))
Пример #3
0
    def test_login(self):
        response = self.client.post('/users/login/', {})

        self.assertEqual(response.status_code, 400)
        self.assertEqual(
            response.data,
            dict(username=['This field is required.'],
                 password=['This field is required.']))

        response = self.client.post('/users/login/',
                                    dict(username='******', password='******'))

        self.assertEqual(response.status_code, 400)
        self.assertEqual(
            response.data,
            dict(non_field_errors=[
                "Unable to log in with provided credentials."
            ]))

        user = UserProfileFactory()
        user.set_password('password')
        user.save()
        self.assertIsNone(user.last_login)

        response = self.client.post(
            '/users/login/', dict(username=user.username, password='******'))

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data, dict(token=ANY))
        user.refresh_from_db()
        self.assertIsNotNone(user.last_login)
Пример #4
0
 def test_put_204(self):
     inactive_user = UserProfileFactory(is_active=False)
     response = self.client.put(
         '/users/{}/reactivate/'.format(inactive_user.username),
         HTTP_AUTHORIZATION='Token ' + self.superuser.get_token(),
         format='json')
     self.assertEqual(response.status_code, 204)
     inactive_user.refresh_from_db()
     self.assertTrue(inactive_user.is_active)
Пример #5
0
    def test_mark_verified(self):
        user = UserProfileFactory(verified=False,
                                  verification_token='some-token')
        self.assertFalse(user.verified)

        self.assertFalse(user.mark_verified(token='wrong-token'))
        user.refresh_from_db()
        self.assertEqual(user.verification_token, 'some-token')
        self.assertFalse(user.verified)

        self.assertTrue(user.mark_verified(token='some-token'))
        user.refresh_from_db()
        self.assertIsNone(user.verification_token)
        self.assertTrue(user.verified)

        user.save = Mock()
        self.assertTrue(user.mark_verified(token='some-token'))
        self.assertIsNone(user.verification_token)
        user.save.assert_not_called()
Пример #6
0
class UserDetailViewTest(OCLAPITestCase):
    def setUp(self):
        super().setUp()
        self.user = UserProfileFactory()
        self.token = self.user.get_token()
        self.superuser = UserProfile.objects.get(username='******')

    def test_get_200(self):
        response = self.client.get('/users/{}/'.format(self.user.username),
                                   HTTP_AUTHORIZATION='Token ' + self.token,
                                   format='json')

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data['username'], self.user.username)
        self.assertEqual(response.data['name'], self.user.name)
        self.assertEqual(response.data['url'], self.user.uri)

    def test_get_200_with_subscribed_orgs(self):
        response = self.client.get(
            '/users/{}/?includeSubscribedOrgs=false'.format(
                self.user.username),
            HTTP_AUTHORIZATION='Token ' + self.token,
            format='json')

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data['username'], self.user.username)
        self.assertEqual(response.data['name'], self.user.name)
        self.assertEqual(response.data['url'], self.user.uri)
        self.assertFalse('subscribed_orgs' in response.data)

        response = self.client.get(
            '/users/{}/?includeSubscribedOrgs=true'.format(self.user.username),
            HTTP_AUTHORIZATION='Token ' + self.token,
            format='json')

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data['username'], self.user.username)
        self.assertEqual(len(response.data['subscribed_orgs']), 0)

        org = OrganizationFactory()
        self.user.organizations.add(org)

        response = self.client.get(
            '/users/{}/?includeSubscribedOrgs=true'.format(self.user.username),
            HTTP_AUTHORIZATION='Token ' + self.token,
            format='json')

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data['username'], self.user.username)
        self.assertEqual(len(response.data['subscribed_orgs']), 1)

    def test_get_404(self):
        response = self.client.get('/users/foobar/',
                                   HTTP_AUTHORIZATION='Token ' + self.token,
                                   format='json')

        self.assertEqual(response.status_code, 404)

    def test_put_200(self):
        self.user.set_password('password')
        self.user.email = '*****@*****.**'
        self.user.save()
        self.assertTrue(self.user.check_password('password'))

        response = self.client.put('/users/{}/'.format(self.user.username),
                                   dict(password='******',
                                        email='*****@*****.**'),
                                   HTTP_AUTHORIZATION='Token ' + self.token,
                                   format='json')

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data['username'], self.user.username)
        self.user.refresh_from_db()
        self.assertTrue(self.user.check_password('newpassword123'))
        self.assertEqual(self.user.email, '*****@*****.**')

    def test_delete_self_405(self):
        response = self.client.delete(
            '/users/{}/'.format(self.superuser.username),
            HTTP_AUTHORIZATION='Token ' + self.superuser.get_token(),
            format='json')

        self.assertEqual(response.status_code, 405)

    def test_delete_403(self):
        random_user = UserProfileFactory()
        response = self.client.delete('/users/{}/'.format(self.user.username),
                                      HTTP_AUTHORIZATION='Token ' +
                                      random_user.get_token(),
                                      format='json')

        self.assertEqual(response.status_code, 403)

    def test_delete_204(self):
        response = self.client.delete('/users/{}/'.format(self.user.username),
                                      HTTP_AUTHORIZATION='Token ' +
                                      self.superuser.get_token(),
                                      format='json')

        self.assertEqual(response.status_code, 204)
        self.user.refresh_from_db()
        self.assertFalse(self.user.is_active)
Пример #7
0
class UserExtraRetrieveUpdateDestroyViewTest(OCLAPITestCase):
    def setUp(self):
        self.user = UserProfileFactory(extras=dict())
        self.token = self.user.get_token()

    def test_put(self):
        self.assertEqual(self.user.extras, {})

        response = self.client.put('/users/{}/extras/foo/'.format(
            self.user.username),
                                   dict(foo='bar'),
                                   HTTP_AUTHORIZATION='Token ' + self.token,
                                   format='json')
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data, dict(foo='bar'))
        self.user.refresh_from_db()
        self.assertEqual(self.user.extras, dict(foo='bar'))

        response = self.client.put('/users/{}/extras/bar/'.format(
            self.user.username),
                                   dict(foo='bar'),
                                   HTTP_AUTHORIZATION='Token ' + self.token,
                                   format='json')
        self.assertEqual(response.status_code, 400)
        self.assertEqual(response.data, ['Must specify bar param in body.'])
        self.user.refresh_from_db()
        self.assertEqual(self.user.extras, dict(foo='bar'))

        response = self.client.put('/users/random/extras/foo/',
                                   dict(foo='bar'),
                                   HTTP_AUTHORIZATION='Token ' + self.token,
                                   format='json')

        self.assertEqual(response.status_code, 404)

    def test_get(self):
        response = self.client.get('/users/{}/extras/foo/'.format(
            self.user.username),
                                   HTTP_AUTHORIZATION='Token ' + self.token,
                                   format='json')
        self.assertEqual(response.status_code, 404)

        self.user.extras = dict(foo='bar')
        self.user.save()

        response = self.client.get('/users/{}/extras/foo/'.format(
            self.user.username),
                                   HTTP_AUTHORIZATION='Token ' + self.token,
                                   format='json')
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data, dict(foo='bar'))

    def test_delete(self):
        response = self.client.delete('/users/{}/extras/foo/'.format(
            self.user.username),
                                      HTTP_AUTHORIZATION='Token ' + self.token,
                                      format='json')
        self.assertEqual(response.status_code, 404)

        self.user.extras = dict(foo='bar', tao='ching')
        self.user.save()

        response = self.client.delete('/users/{}/extras/foo/'.format(
            self.user.username),
                                      HTTP_AUTHORIZATION='Token ' + self.token,
                                      format='json')
        self.assertEqual(response.status_code, 204)
        self.user.refresh_from_db()
        self.assertEqual(self.user.extras, dict(tao='ching'))