예제 #1
0
 def create_session(self):
     """
     Create a dataset and owner, along with the test user to be used for the test
     """
     owner, _ = create_testuser()
     dataset = create_test_dataset(owner)
     test_user, creds = create_testuser()
     dataset.shared_with.add(test_user)
     dataset.save()
     self.client = Client()
     logged_in = self.client.login(username=creds['username'],
                                   password=creds['password'])
     self.assertTrue(logged_in)
     return test_user, dataset
예제 #2
0
 def test_share_permissions(self):
     """
     Test that the shared with user will not be able to share the dataset
     Check both GET and POST requests to the /share/<dataset_id> endpoint
     """
     _, dataset = self.create_session()
     url = f'/share/{dataset.dataset_id}/'
     resp = self.client.get(url)
     # 403 is status code for 'Forbidden'
     self.assertEqual(resp.status_code, 403)
     resp = self.client.post(
         url, {
             'add_share[]': [create_testuser()[0].user_id],
             'remove_share[]': [create_testuser()[0].user_id]
         })
     self.assertEqual(resp.status_code, 403)
예제 #3
0
 def create_session(self):
     """
     Set up the test client with what will be the current user
     """
     user, creds = create_testuser()
     self.client = Client()
     logged_in = self.client.login(username=creds['username'],
                                   password=creds['password'])
     self.assertTrue(logged_in)
     return user
예제 #4
0
 def test_share_dataset(self):
     """
     Test that a dataset can be shared with another user
     """
     owner = self.create_session()
     dataset = create_test_dataset(owner)
     user2, _ = create_testuser()
     url = f'/share/{dataset.dataset_id}/'
     self.client.post(url, {"add_share[]": [user2.user_id]})
     self.assertTrue(
         dataset.shared_with.filter(username=user2.username).exists())
예제 #5
0
 def test_remove_share_dataset(self):
     """
     Test that removing a user for share works
     """
     owner = self.create_session()
     dataset = create_test_dataset(owner)
     user2, _ = create_testuser()
     # add user2 to dataset.shared_with
     dataset.shared_with.add(user2)
     dataset.save()
     # ensure that user2 is added to shared with
     self.assertTrue(
         dataset.shared_with.filter(username=user2.username).exists())
     url = f'/share/{dataset.dataset_id}/'
     self.client.post(url, {'remove_share[]': [user2.user_id]})
     self.assertFalse(
         dataset.shared_with.filter(username=user2.username).exists())
예제 #6
0
 def test_shared_json(self):
     """
     Test that sharing a dataset is reflected in the share GET request json data
     """
     owner = self.create_session()
     dataset = create_test_dataset(owner)
     user2, _ = create_testuser()
     # add user2 to dataset.shared_with
     dataset.shared_with.add(user2)
     self.assertTrue(
         dataset.shared_with.filter(username=user2.username).exists())
     url = f'/share/{dataset.dataset_id}/'
     # get share uses for dataset
     resp = self.client.get(url)
     data = json.loads(resp.content)
     # get json object for user
     user = list(
         filter(lambda u: u['username'] == user2.username,
                data['users']))[0]
     self.assertTrue(user['is_shared'])
예제 #7
0
 def test_verify_users(self):
     """
     Verify that making a get request to /share/<dataset_id>/ reuturns
     a json object of all users
     """
     owner = self.create_session()
     users = []
     for _ in range(10):
         users.append(create_testuser()[0])
     dataset = create_test_dataset(owner)
     url = f'/share/{dataset.dataset_id}/'
     # get request should return a json object with a list of users
     resp = self.client.get(url)
     resp_usernames = [
         u['username'] for u in json.loads(resp.content)['users']
     ]
     # check that the users array and the returned users match (using usernames)
     self.assertEqual(
         len(list(filter(lambda u: u.username not in resp_usernames,
                         users))), 0)