-
Notifications
You must be signed in to change notification settings - Fork 330
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
make bitbucket configurable via api v2
- Loading branch information
John Tordoff
committed
Nov 29, 2023
1 parent
3141057
commit d413391
Showing
4 changed files
with
147 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
59 changes: 59 additions & 0 deletions
59
api_tests/addons_tests/bitbucket/test_bitbucket_configure.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
import mock | ||
import pytest | ||
from framework.auth.core import Auth | ||
from api.base.settings.defaults import API_BASE | ||
from osf_tests.factories import ProjectFactory, AuthUserFactory, ExternalAccountFactory | ||
from addons.bitbucket.tests.factories import BitbucketUserSettingsFactory | ||
|
||
|
||
@pytest.mark.django_db | ||
class TestBitbucketConfig: | ||
|
||
@pytest.fixture() | ||
def user(self): | ||
return AuthUserFactory() | ||
|
||
@pytest.fixture() | ||
def node(self, user): | ||
return ProjectFactory(creator=user) | ||
|
||
@pytest.fixture() | ||
def enabled_addon(self, node, user): | ||
addon = node.get_or_add_addon('bitbucket', auth=Auth(user)) | ||
addon.user_settings = BitbucketUserSettingsFactory(owner=user) | ||
addon.save() | ||
return addon | ||
|
||
@pytest.fixture() | ||
def node_with_authorized_addon(self, user, node, enabled_addon): | ||
external_account = ExternalAccountFactory(provider='bitbucket') | ||
enabled_addon.external_account = external_account | ||
user_settings = enabled_addon.user_settings | ||
user_settings.oauth_grants[node._id] = {enabled_addon.external_account._id: []} | ||
user_settings.save() | ||
user.external_accounts.add(external_account) | ||
user.save() | ||
enabled_addon.save() | ||
return node | ||
|
||
def setup_bitbucket_mock(self, mock_client): | ||
mock_return = lambda attributes: type('MockObject', (mock.Mock,), attributes) | ||
mock_client.return_value = mock_return({ | ||
'repos': lambda *args, **kwargs: [ | ||
{ | ||
'full_name': 'bitbucket-user-name/test-folder' | ||
} | ||
], | ||
'repo': mock_return({}) | ||
}) | ||
|
||
@mock.patch('addons.bitbucket.models.BitbucketClient') | ||
def test_addon_folders_PATCH(self, mock_bitbucket, app, node_with_authorized_addon, user): | ||
self.setup_bitbucket_mock(mock_bitbucket) | ||
|
||
payload = {'data': {'attributes': {'folder_id': 'bitbucket-user-name/test-folder'}}} | ||
|
||
resp = app.patch_json_api(f'/{API_BASE}nodes/{node_with_authorized_addon._id}/addons/bitbucket/', payload, auth=user.auth) | ||
assert resp.status_code == 200 | ||
assert resp.json['data']['attributes']['folder_id'] == 'test-folder' | ||
assert resp.json['data']['attributes']['folder_path'] == 'test-folder' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters