class TestAddonGithubNodeSettings(OsfTestCase): def setUp(self): OsfTestCase.setUp(self) self.user = UserFactory() self.user.add_addon('github') self.user_settings = self.user.get_addon('github') self.oauth_settings = AddonGitHubOauthSettings(oauth_access_token='foobar') self.oauth_settings.github_user_id = 'testuser' self.oauth_settings.save() self.user_settings.oauth_settings = self.oauth_settings self.user_settings.save() self.node_settings = AddonGitHubNodeSettings( owner=ProjectFactory(), user='******', repo='openpokemon', user_settings=self.user_settings, ) self.node_settings.save() def test_complete_true(self): assert_true(self.node_settings.has_auth) assert_true(self.node_settings.complete) def test_complete_false(self): self.node_settings.user = None assert_true(self.node_settings.has_auth) assert_false(self.node_settings.complete) def test_complete_repo_false(self): self.node_settings.repo = None assert_true(self.node_settings.has_auth) assert_false(self.node_settings.complete) def test_complete_auth_false(self): self.node_settings.user_settings = None assert_false(self.node_settings.has_auth) assert_false(self.node_settings.complete) @mock.patch('website.addons.github.api.GitHub.delete_hook') def test_delete_hook(self, mock_delete_hook): self.node_settings.hook_id = 'hook' self.node_settings.save() args = ( self.node_settings.user, self.node_settings.repo, self.node_settings.hook_id, ) res = self.node_settings.delete_hook() assert_true(res) mock_delete_hook.assert_called_with(*args) @mock.patch('website.addons.github.api.GitHub.delete_hook') def test_delete_hook_no_hook(self, mock_delete_hook): res = self.node_settings.delete_hook() assert_false(res) assert_false(mock_delete_hook.called) @mock.patch('website.addons.github.api.GitHub.delete_hook') def test_delete_hook_not_found(self, mock_delete_hook): self.node_settings.hook_id = 'hook' self.node_settings.save() mock_delete_hook.side_effect = NotFoundError args = ( self.node_settings.user, self.node_settings.repo, self.node_settings.hook_id, ) res = self.node_settings.delete_hook() assert_false(res) mock_delete_hook.assert_called_with(*args) @mock.patch('website.addons.github.api.GitHub.delete_hook') def test_delete_hook_error(self, mock_delete_hook): self.node_settings.hook_id = 'hook' self.node_settings.save() mock_delete_hook.side_effect = GitHubError(mock.Mock()) args = ( self.node_settings.user, self.node_settings.repo, self.node_settings.hook_id, ) res = self.node_settings.delete_hook() assert_false(res) mock_delete_hook.assert_called_with(*args) def test_to_json_noauthorizing_authed_user(self): user = UserFactory() user.add_addon('github') user_settings = user.get_addon('github') oauth_settings = AddonGitHubOauthSettings(oauth_access_token='foobar') oauth_settings.github_user_id = 'testuser' oauth_settings.save() user_settings.oauth_settings = self.oauth_settings user_settings.save() self.node_settings.to_json(user)