def test_dataverse_root_not_published(self, mock_files, mock_connection, mock_text): mock_connection.return_value = create_mock_connection() mock_files.return_value = [] mock_text.return_value = 'Do you want to publish?' self.project.set_privacy('public') self.project.save() alias = self.node_settings.dataverse_alias doi = self.node_settings.dataset_doi external_account = create_external_account() self.user.external_accounts.add(external_account) self.user.save() self.node_settings.set_auth(external_account, self.user) self.node_settings.dataverse_alias = alias self.node_settings.dataset_doi = doi self.node_settings.save() url = api_url_for('dataverse_root_folder', pid=self.project._primary_key) # Contributor gets draft, no options res = self.app.get(url, auth=self.user.auth) assert_true(res.json[0]['permissions']['edit']) assert_false(res.json[0]['hasPublishedFiles']) assert_equal(res.json[0]['version'], 'latest') # Non-contributor gets nothing user2 = AuthUserFactory() res = self.app.get(url, auth=user2.auth) assert_equal(res.json, [])
def test_dataverse_root_published(self, mock_files, mock_connection): mock_connection.return_value = create_mock_connection() mock_files.return_value = ['mock_file'] self.project.set_privacy('public') self.project.save() alias = self.node_settings.dataverse_alias doi = self.node_settings.dataset_doi external_account = create_external_account() self.user.external_accounts.add(external_account) self.user.save() self.node_settings.set_auth(external_account, self.user) self.node_settings.dataverse_alias = alias self.node_settings.dataset_doi = doi self.node_settings.save() url = api_url_for('dataverse_root_folder', pid=self.project._primary_key) # Contributor can select between states, current state is correct res = self.app.get(url, auth=self.user.auth) assert_true(res.json[0]['permissions']['edit']) assert_true(res.json[0]['hasPublishedFiles']) assert_equal(res.json[0]['version'], 'latest-published') # Non-contributor gets published version, no options user2 = AuthUserFactory() res = self.app.get(url, auth=user2.auth) assert_false(res.json[0]['permissions']['edit']) assert_true(res.json[0]['hasPublishedFiles']) assert_equal(res.json[0]['version'], 'latest-published')
def test_connect_from_settings_or_401(self, mock_connect): node_settings = NodeSettings() node_settings.external_account = create_external_account( self.host, self.token, ) connection = connect_from_settings_or_401(node_settings) assert_true(connection) mock_connect.assert_called_once_with(self.host, self.token)
def test_connect_from_settings_or_401_forbidden(self, mock_connection): mock_connection.side_effect = UnauthorizedError() node_settings = NodeSettings() node_settings.external_account = create_external_account( self.host, self.token, ) with assert_raises(HTTPError) as e: connect_from_settings_or_401(node_settings) mock_connection.assert_called_once_with(self.host, self.token) assert_equal(e.exception.code, 401)
def test_user_config_get(self): url = api_url_for('dataverse_user_config_get') new_user = AuthUserFactory() res = self.app.get(url, auth=new_user.auth) result = res.json.get('result') assert_false(result['userHasAuth']) assert_in('hosts', result) assert_in('create', result['urls']) # userHasAuth is true with external accounts new_user.external_accounts.add(create_external_account()) new_user.save() res = self.app.get(url, auth=self.user.auth) result = res.json.get('result') assert_true(result['userHasAuth'])