Ejemplo n.º 1
0
    def test_update_readonly(self):
        response = self.client.get(
            '/api/1.0/dataset/%s/' % self.dataset.slug,
            content_type='application/json',
            **utils.get_auth_headers('*****@*****.**'))

        data = json.loads(response.content)

        row_count = data['row_count']
        data['row_count'] = 2717

        # Fixes issue with deserialization of users embedded in data_uploads -- is this a bug?
        data['data_uploads'] = [
            du['resource_uri'] for du in data['data_uploads']
        ]

        response = self.client.put(
            '/api/1.0/dataset/%s/' % self.dataset.slug,
            content_type='application/json',
            data=json.dumps(data),
            **utils.get_auth_headers('*****@*****.**'))

        new_data = json.loads(response.content)

        self.assertEqual(new_data['row_count'], row_count)

        # Refresh
        self.dataset = Dataset.objects.get(id=self.dataset.id)

        self.assertEqual(self.dataset.row_count, row_count)
Ejemplo n.º 2
0
    def test_update_as_different_user(self):
        new_user = {
            'email': '*****@*****.**',
            'password': '******',
            'first_name': 'Testy',
            'last_name': 'McTester'
        }

        response = self.client.post(
            '/api/1.0/user/',
            content_type='application/json',
            data=json.dumps(new_user),
            **utils.get_auth_headers('*****@*****.**'))

        self.assertEqual(response.status_code, 201)

        update_user = {
            'email': '*****@*****.**',
            'first_name': 'Testy',
            'last_name': 'McTester'
        }

        response = self.client.put(
            '/api/1.0/user/%i/' % self.user.id,
            content_type='application/json',
            data=json.dumps(update_user),
            **utils.get_auth_headers('*****@*****.**'))

        self.assertEqual(response.status_code, 401)
Ejemplo n.º 3
0
    def test_create_as_new_user(self):
        new_user = {
            'email': '*****@*****.**',
            'password': '******',
            'first_name': 'Testy',
            'last_name': 'McTester'
        }

        response = self.client.post(
            '/api/1.0/user/',
            content_type='application/json',
            data=json.dumps(new_user),
            **utils.get_auth_headers('*****@*****.**'))

        self.assertEqual(response.status_code, 201)

        new_dataset = {
            'name': 'New dataset!',
            'description': 'Its got yummy data!'
        }

        response = self.client.post(
            '/api/1.0/dataset/',
            content_type='application/json',
            data=json.dumps(new_dataset),
            **utils.get_auth_headers('*****@*****.**'))

        self.assertEqual(response.status_code, 201)
Ejemplo n.º 4
0
    def test_create_as_admin(self):
        new_user = {"email": "*****@*****.**", "password": "******", "first_name": "Testy", "last_name": "McTester"}

        response = self.client.post(
            "/api/1.0/user/",
            content_type="application/json",
            data=json.dumps(new_user),
            **utils.get_auth_headers("*****@*****.**")
        )

        self.assertEqual(response.status_code, 201)

        body = json.loads(response.content)

        self.assertEqual(body["email"], "*****@*****.**")
        self.assertEqual(body["first_name"], "Testy")
        self.assertEqual(body["last_name"], "McTester")

        new_user = User.objects.get(username="******")

        self.assertEqual(new_user.username, "*****@*****.**")
        self.assertEqual(new_user.email, "*****@*****.**")
        self.assertEqual(new_user.first_name, "Testy")
        self.assertEqual(new_user.last_name, "McTester")
        self.assertEqual(new_user.password[:5], "sha1$")
        self.assertNotEqual(new_user.api_key, None)

        self.assertEqual(list(new_user.groups.all()), [self.panda_user_group])
Ejemplo n.º 5
0
    def test_create_as_admin(self):
        new_user = {
            'email': '*****@*****.**',
            'password': '******',
            'first_name': 'Testy',
            'last_name': 'McTester'
        }

        response = self.client.post(
            '/api/1.0/user/',
            content_type='application/json',
            data=json.dumps(new_user),
            **utils.get_auth_headers('*****@*****.**'))

        self.assertEqual(response.status_code, 201)

        body = json.loads(response.content)

        self.assertEqual(body['email'], '*****@*****.**')
        self.assertEqual(body['first_name'], 'Testy')
        self.assertEqual(body['last_name'], 'McTester')

        new_user = User.objects.get(username='******')

        self.assertEqual(new_user.username, '*****@*****.**')
        self.assertEqual(new_user.email, '*****@*****.**')
        self.assertEqual(new_user.first_name, 'Testy')
        self.assertEqual(new_user.last_name, 'McTester')
        self.assertNotEqual(new_user.api_key, None)

        self.assertEqual(list(new_user.groups.all()), [self.panda_user_group])

        self.assertEqual(
            authenticate(username='******', password='******'),
            new_user)
Ejemplo n.º 6
0
    def test_update_as_admin(self):
        update_user = {
            'email': '*****@*****.**',
            'first_name': 'Testy',
            'last_name': 'McTester'
        }

        before_user = self.user

        response = self.client.put(
            '/api/1.0/user/%i/' % self.user.id,
            content_type='application/json',
            data=json.dumps(update_user),
            **utils.get_auth_headers('*****@*****.**'))

        self.assertEqual(response.status_code, 202)

        after_user = UserProxy.objects.get(id=self.user.id)

        self.assertEqual(after_user.email, '*****@*****.**')
        self.assertEqual(after_user.username, '*****@*****.**')
        self.assertEqual(after_user.first_name, 'Testy')
        self.assertEqual(after_user.last_name, 'McTester')
        self.assertEqual(before_user.date_joined, after_user.date_joined)
        self.assertEqual(before_user.is_active, after_user.is_active)
        self.assertEqual(before_user.last_login, after_user.last_login)
        self.assertEqual(before_user.password, after_user.password)
Ejemplo n.º 7
0
    def setUp(self):
        self.user = utils.get_panda_user()
        self.dataset = utils.get_test_dataset(self.user)
        self.upload = utils.get_test_related_upload(self.user, self.dataset)

        self.auth_headers = utils.get_auth_headers()

        self.client = Client()
Ejemplo n.º 8
0
    def setUp(self):
        self.user = utils.get_panda_user()
        self.dataset = utils.get_test_dataset(self.user)
        self.upload = utils.get_test_data_upload(self.user, self.dataset)

        self.auth_headers = utils.get_auth_headers()

        self.client = Client()
Ejemplo n.º 9
0
    def test_get_unauthorized(self):
        User.objects.create_user('*****@*****.**', '*****@*****.**', 'password')

        notification = Notification.objects.get(related_dataset=self.dataset)

        response = self.client.get('/api/1.0/notification/%i/' % notification.id, **utils.get_auth_headers('*****@*****.**')) 

        self.assertEqual(response.status_code, 404)
Ejemplo n.º 10
0
    def setUp(self):
        settings.CELERY_ALWAYS_EAGER = True

        self.user = utils.get_panda_user()
        self.panda_user_group = Group.objects.get(name='panda_user')

        self.auth_headers = utils.get_auth_headers()

        self.client = Client()
Ejemplo n.º 11
0
    def setUp(self):
        settings.CELERY_ALWAYS_EAGER = True

        self.user = utils.get_panda_user() 
        self.panda_user_group = Group.objects.get(name='panda_user')
        
        self.auth_headers = utils.get_auth_headers()

        self.client = Client()
Ejemplo n.º 12
0
    def setUp(self):
        settings.CELERY_ALWAYS_EAGER = True
        
        self.user = utils.get_panda_user()
        self.dataset = utils.get_test_dataset(self.user)
        self.upload = utils.get_test_data_upload(self.user, self.dataset)

        self.auth_headers = utils.get_auth_headers()

        self.client = Client()
    def test_get_unauthorized(self):
        UserProxy.objects.create_user('*****@*****.**', '*****@*****.**', 'password')

        sub = SearchSubscription.objects.create(
            user=self.user,
            dataset=self.dataset,
            query='*'
        )

        response = self.client.get('/api/1.0/search_subscription/%i/' % sub.id, **utils.get_auth_headers('*****@*****.**')) 

        self.assertEqual(response.status_code, 404)
Ejemplo n.º 14
0
    def test_get_unauthorized(self):
        UserProxy.objects.create_user('*****@*****.**', '*****@*****.**',
                                      'password')

        sub = SearchSubscription.objects.create(user=self.user,
                                                dataset=self.dataset,
                                                query='*')

        response = self.client.get(
            '/api/1.0/search_subscription/%i/' % sub.id,
            **utils.get_auth_headers('*****@*****.**'))

        self.assertEqual(response.status_code, 404)
Ejemplo n.º 15
0
    def test_list_unauthorized(self):
        User.objects.create_user('*****@*****.**', '*****@*****.**', 'password')

        response = self.client.get('/api/1.0/notification/?', data={ 'limit': 5 }, **utils.get_auth_headers('*****@*****.**')) 

        self.assertEqual(response.status_code, 200)

        body = json.loads(response.content)

        self.assertEqual(len(body['objects']), 0)
        self.assertEqual(body['meta']['total_count'], 0)
        self.assertEqual(body['meta']['limit'], 5)
        self.assertEqual(body['meta']['offset'], 0)
        self.assertEqual(body['meta']['next'], None)
        self.assertEqual(body['meta']['previous'], None)
Ejemplo n.º 16
0
    def setUp(self):
        settings.CELERY_ALWAYS_EAGER = True

        utils.setup_test_solr()

        self.user = utils.get_panda_user()
        self.dataset = utils.get_test_dataset(self.user)
        self.upload = utils.get_test_data_upload(self.user, self.dataset)

        self.dataset.import_data(self.user, self.upload, 0)

        utils.wait()

        self.auth_headers = utils.get_auth_headers()

        self.client = Client()
Ejemplo n.º 17
0
    def test_list_unauthorized(self):
        User.objects.create_user("*****@*****.**", "*****@*****.**", "password")

        response = self.client.get(
            "/api/1.0/notification/?", data={"limit": 5}, **utils.get_auth_headers("*****@*****.**")
        )

        self.assertEqual(response.status_code, 200)

        body = json.loads(response.content)

        self.assertEqual(len(body["objects"]), 0)
        self.assertEqual(body["meta"]["total_count"], 0)
        self.assertEqual(body["meta"]["limit"], 5)
        self.assertEqual(body["meta"]["offset"], 0)
        self.assertEqual(body["meta"]["next"], None)
        self.assertEqual(body["meta"]["previous"], None)
Ejemplo n.º 18
0
    def test_update_unauthorized(self):
        UserProxy.objects.create_user('*****@*****.**', '*****@*****.**',
                                      'password')

        sub = SearchSubscription.objects.create(user=self.user,
                                                dataset=self.dataset,
                                                query='*')

        response = self.client.put(
            '/api/1.0/search_subscription/%i/' % sub.id,
            data=json.dumps({}),
            content_type='application/json',
            **utils.get_auth_headers('*****@*****.**'))
        # This returns 201 (rather than 401), because the PUT fails to match an
        # existing subscription that the user has access to and thus falls
        # back to creating a new one.
        # This is probably not ideal, but works.
        self.assertEqual(response.status_code, 405)
Ejemplo n.º 19
0
    def test_update_unauthorized(self):
        User.objects.create_user("*****@*****.**", "*****@*****.**", "password")

        notification = Notification.objects.get(related_dataset=self.dataset)

        data = json.dumps({"read_at": datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S")})

        response = self.client.put(
            "/api/1.0/notification/%i/" % notification.id,
            data=data,
            content_type="application/json",
            **utils.get_auth_headers("*****@*****.**")
        )
        # This returns 201 (rather than 401), because the PUT fails to match an
        # existing notification that the user has access to and thus falls
        # back to creating a new one.
        # This is probably not ideal, but works.
        self.assertEqual(response.status_code, 201)
Ejemplo n.º 20
0
    def test_list_unauthorized(self):
        UserProxy.objects.create_user('*****@*****.**', '*****@*****.**',
                                      'password')

        response = self.client.get(
            '/api/1.0/search_subscription/',
            data={'limit': 5},
            **utils.get_auth_headers('*****@*****.**'))

        self.assertEqual(response.status_code, 200)

        body = json.loads(response.content)

        self.assertEqual(len(body['objects']), 0)
        self.assertEqual(body['meta']['total_count'], 0)
        self.assertEqual(body['meta']['limit'], 5)
        self.assertEqual(body['meta']['offset'], 0)
        self.assertEqual(body['meta']['next'], None)
        self.assertEqual(body['meta']['previous'], None)
Ejemplo n.º 21
0
    def test_update_as_different_user(self):
        new_user = {
            'email': '*****@*****.**',
            'password': '******',
            'first_name': 'Testy',
            'last_name': 'McTester'
        }

        response = self.client.post('/api/1.0/user/', content_type='application/json', data=json.dumps(new_user), **utils.get_auth_headers('*****@*****.**'))

        self.assertEqual(response.status_code, 201)

        update_user = {
            'email': '*****@*****.**',
            'first_name': 'Testy',
            'last_name': 'McTester'
        }

        response = self.client.put('/api/1.0/user/%i/' % self.user.id, content_type='application/json', data=json.dumps(update_user), **utils.get_auth_headers('*****@*****.**'))

        self.assertEqual(response.status_code, 401)
Ejemplo n.º 22
0
    def test_update_readonly(self):
        response = self.client.get('/api/1.0/dataset/%s/' % self.dataset.slug, content_type='application/json', **utils.get_auth_headers('*****@*****.**'))

        data = json.loads(response.content)

        row_count = data['row_count']
        data['row_count'] = 2717

        # Fixes issue with deserialization of users embedded in data_uploads -- is this a bug?
        data['data_uploads'] = [du['resource_uri'] for du in data['data_uploads']]

        response = self.client.put('/api/1.0/dataset/%s/' % self.dataset.slug, content_type='application/json', data=json.dumps(data), **utils.get_auth_headers('*****@*****.**'))

        new_data = json.loads(response.content)

        self.assertEqual(new_data['row_count'], row_count)

        # Refresh
        self.dataset = Dataset.objects.get(id=self.dataset.id)

        self.assertEqual(self.dataset.row_count, row_count)
Ejemplo n.º 23
0
    def test_create_as_new_user(self):
        new_user = {
            'email': '*****@*****.**',
            'password': '******',
            'first_name': 'Testy',
            'last_name': 'McTester'
        }

        response = self.client.post('/api/1.0/user/', content_type='application/json', data=json.dumps(new_user), **utils.get_auth_headers('*****@*****.**'))

        self.assertEqual(response.status_code, 201)
        
        new_dataset = {
            'name': 'New dataset!',
            'description': 'Its got yummy data!'
        }

        response = self.client.post('/api/1.0/dataset/', content_type='application/json', data=json.dumps(new_dataset), **utils.get_auth_headers('*****@*****.**'))

        self.assertEqual(response.status_code, 201)        
    def test_update_unauthorized(self):
        UserProxy.objects.create_user('*****@*****.**', '*****@*****.**', 'password')

        sub = SearchSubscription.objects.create(
            user=self.user,
            dataset=self.dataset,
            query='*'
        )

        response = self.client.put('/api/1.0/search_subscription/%i/' % sub.id, data=json.dumps({}), content_type='application/json', **utils.get_auth_headers('*****@*****.**')) 
        # This returns 201 (rather than 401), because the PUT fails to match an
        # existing subscription that the user has access to and thus falls
        # back to creating a new one.
        # This is probably not ideal, but works.
        self.assertEqual(response.status_code, 405)
Ejemplo n.º 25
0
    def test_create_as_admin(self):
        new_user = {
            'email': '*****@*****.**',
            'password': '******',
            'first_name': 'Testy',
            'last_name': 'McTester'
        }

        response = self.client.post('/api/1.0/user/', content_type='application/json', data=json.dumps(new_user), **utils.get_auth_headers('*****@*****.**'))

        self.assertEqual(response.status_code, 201)
        
        body = json.loads(response.content)

        self.assertEqual(body['email'], '*****@*****.**')
        self.assertEqual(body['first_name'], 'Testy')
        self.assertEqual(body['last_name'], 'McTester')
        
        new_user = User.objects.get(username='******')

        self.assertEqual(new_user.username, '*****@*****.**')
        self.assertEqual(new_user.email, '*****@*****.**')
        self.assertEqual(new_user.first_name, 'Testy')
        self.assertEqual(new_user.last_name, 'McTester')
        self.assertNotEqual(new_user.api_key, None)

        self.assertEqual(list(new_user.groups.all()), [self.panda_user_group])

        self.assertEqual(authenticate(username='******', password='******'), new_user)
Ejemplo n.º 26
0
    def test_update_unauthorized(self):
        UserProxy.objects.create_user('*****@*****.**', '*****@*****.**', 'password')

        notification = Notification.objects.all()[0]

        data = json.dumps({ 'read_at': datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S') })

        response = self.client.put('/api/1.0/notification/%i/' % notification.id, data=data, content_type='application/json', **utils.get_auth_headers('*****@*****.**')) 
        # This returns 201 (rather than 401), because the PUT fails to match an
        # existing notification that the user has access to and thus falls
        # back to creating a new one.
        # This is probably not ideal, but works.
        self.assertEqual(response.status_code, 201)
Ejemplo n.º 27
0
    def test_update_readonly(self):
        response = self.client.get('/api/1.0/dataset/%s/' % self.dataset.slug, content_type='application/json', **utils.get_auth_headers('*****@*****.**'))

        data = json.loads(response.content)

        row_count = data['row_count']
        data['row_count'] = 2717

        response = self.client.put('/api/1.0/dataset/%s/' % self.dataset.slug, content_type='application/json', data=json.dumps(data), **utils.get_auth_headers('*****@*****.**'))

        new_data = json.loads(response.content)

        self.assertEqual(new_data['row_count'], row_count)

        # Refresh
        self.dataset = Dataset.objects.get(id=self.dataset.id)

        self.assertEqual(self.dataset.row_count, row_count)
Ejemplo n.º 28
0
    def test_update_as_admin(self):
        update_user = {
            'email': '*****@*****.**',
            'first_name': 'Testy',
            'last_name': 'McTester'
        }

        before_user = self.user

        response = self.client.put('/api/1.0/user/%i/' % self.user.id, content_type='application/json', data=json.dumps(update_user), **utils.get_auth_headers('*****@*****.**'))

        self.assertEqual(response.status_code, 202)

        after_user = User.objects.get(id=self.user.id)

        self.assertEqual(after_user.email, '*****@*****.**')
        self.assertEqual(after_user.username, '*****@*****.**')
        self.assertEqual(after_user.first_name, 'Testy')
        self.assertEqual(after_user.last_name, 'McTester')
        self.assertEqual(before_user.date_joined, after_user.date_joined)
        self.assertEqual(before_user.is_active, after_user.is_active)
        self.assertEqual(before_user.last_login, after_user.last_login)
        self.assertEqual(before_user.password, after_user.password)