Skip to content

Commit 9816280

Browse files
authored
[BitBucket] Add mockup for the URL response in the test of bitbucket. (#623)
* [BitBucket] Add mockup for the URL response in the test of bitbucket. * [BitBucket] Fix paged API for second call
1 parent 1f58dfc commit 9816280

File tree

41 files changed

+1687
-40
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+1687
-40
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ __pycache__/
88
*.py[cod]
99
*$py.class
1010

11+
# Temporary created when running tox
12+
atlassian-python-api-*
13+
1114
# C extensions
1215
*.so
1316

Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,10 @@ tox:
3737
tox
3838

3939
docker-qa: export TEST_OPTS := $(TEST_OPTS)
40+
docker-qa: export PYTHONDONTWRITEBYTECODE := 1
4041

4142
docker-qa: | docker-qa-build
42-
docker run --rm -e TEST_OPTS -v `pwd`:/atlassian-python-api $(QA_CONTAINER)
43+
docker run --rm -e TEST_OPTS -e PYTHONDONTWRITEBYTECODE -v `pwd`:/atlassian-python-api $(QA_CONTAINER)
4344

4445
docker-qa-build: Dockerfile.qa requirements.txt requirements-dev.txt
4546
docker build \
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"folders": [
3+
{
4+
"path": "."
5+
}
6+
],
7+
"settings": {
8+
"files.exclude": {
9+
".mypy_cache": true,
10+
".tox": true,
11+
"**/__pycache__": true,
12+
"**/*.pyc": true,
13+
"atlassian_python_api.egg-info": true
14+
}
15+
}
16+
}

atlassian/bitbucket/base.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ def __init__(self, url, *args, **kwargs):
3030
def __str__(self):
3131
return PrettyPrinter(indent=4).pformat(self.__data)
3232

33-
def _get_paged(self, url, params={}, data=None, flags=None, trailing=None, absolute=False):
33+
def _get_paged(self, url, params=None, data=None, flags=None, trailing=None, absolute=False):
3434
"""
3535
Used to get the paged data
3636
:param url: The url to retrieve.
@@ -40,6 +40,9 @@ def _get_paged(self, url, params={}, data=None, flags=None, trailing=None, absol
4040
:return: nothing
4141
"""
4242

43+
if params is None:
44+
params = {}
45+
4346
while True:
4447
response = self.get(url, trailing=trailing, params=params, data=data, flags=flags, absolute=absolute)
4548
if "values" not in response:
@@ -70,6 +73,13 @@ def _new_session_args(self):
7073
api_version=self.api_version,
7174
)
7275

76+
def update(self, **kwargs):
77+
"""
78+
Fields not present in the request body are ignored.
79+
"""
80+
self.__data = super(BitbucketBase, self).put(None, data=kwargs)
81+
return self
82+
7383
@property
7484
def data(self):
7585
return copy.copy(self.__data)

atlassian/bitbucket/cloud/base.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def __init__(self, url, *args, **kwargs):
1515
"""
1616
super(BitbucketCloudBase, self).__init__(url, *args, **kwargs)
1717

18-
def _get_paged(self, url, params={}, data=None, flags=None, trailing=None, absolute=False):
18+
def _get_paged(self, url, params=None, data=None, flags=None, trailing=None, absolute=False):
1919
"""
2020
Used to get the paged data
2121
:param url: The url to retrieve.
@@ -25,6 +25,9 @@ def _get_paged(self, url, params={}, data=None, flags=None, trailing=None, absol
2525
:return: nothing
2626
"""
2727

28+
if params is None:
29+
params = {}
30+
2831
while True:
2932
response = super(BitbucketCloudBase, self).get(
3033
url,

atlassian/bitbucket/cloud/repositories/branchRestrictions.py

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -139,16 +139,11 @@ def groups(self):
139139
def value(self):
140140
return self.get_data("value")
141141

142-
def update(self, **kwargs):
143-
"""
144-
Updates an existing branch restriction rule.
145-
Fields not present in the request body are ignored.
146-
"""
147-
self.__data = super(BranchRestriction, self).put(self.url, absolute=True, data=kwargs)
148-
return self
149-
150142
def delete(self):
151143
"""
152144
Deletes the branch restriction
153145
"""
154-
return super(BranchRestriction, self).delete(self.url, absolute=True)
146+
data = super(BranchRestriction, self).delete(None)
147+
if "errors" in data:
148+
return
149+
return BranchRestriction(data, **self._new_session_args)

atlassian/bitbucket/cloud/repositories/defaultReviewers.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ def __init__(self, url, *args, **kwargs):
1212
def _get_object(self, data):
1313
if "errors" in data:
1414
return
15-
return DefaultReviewer(data, **self._new_session_args)
15+
return DefaultReviewer(self.url_joiner(self.url, data["display_name"]), data, **self._new_session_args)
1616

1717
def add(self, user):
1818
"""
@@ -62,7 +62,7 @@ def get(self, user):
6262
try:
6363
default_reviewer = self._get_object(super(DefaultReviewers, self).get(user))
6464
except HTTPError as e:
65-
# A 404 indicates that that specified user is not a default reviewer.
65+
# A 404 indicates that the specified user is not a default reviewer.
6666
if not e.response.status_code == 404:
6767
# Rethrow the exception
6868
raise
@@ -71,8 +71,8 @@ def get(self, user):
7171

7272

7373
class DefaultReviewer(BitbucketCloudBase):
74-
def __init__(self, data, *args, **kwargs):
75-
super(DefaultReviewer, self).__init__(None, *args, data=data, expected_type="user", **kwargs)
74+
def __init__(self, url, data, *args, **kwargs):
75+
super(DefaultReviewer, self).__init__(url, *args, data=data, expected_type="user", **kwargs)
7676

7777
@property
7878
def display_name(self):
@@ -94,4 +94,7 @@ def delete(self):
9494
"""
9595
Deletes the default reviewer
9696
"""
97-
return super(DefaultReviewer, self).delete(self.url, absolute=True)
97+
data = super(DefaultReviewer, self).delete(None)
98+
if "errors" in data:
99+
return
100+
return DefaultReviewer(self.url, data, **self._new_session_args)

atlassian/bitbucket/cloud/repositories/issues.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -123,15 +123,11 @@ def edited_on(self):
123123
def updated_on(self):
124124
return self.get_data("updated_on", "never updated")
125125

126-
def update(self, **kwargs):
127-
"""
128-
Update the issue.
129-
"""
130-
self.__data = super(Issue, self).put(self.url, absolute=True, data=kwargs)
131-
return self
132-
133126
def delete(self):
134127
"""
135128
Deletes the issue
136129
"""
137-
return super(Issue, self).delete(self.url, absolute=True)
130+
data = super(Issue, self).delete(None)
131+
if "errors" in data:
132+
return
133+
return Issue(data, **self._new_session_args)

atlassian/bitbucket/cloud/repositories/pipelines.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,7 @@ def __init__(self, url, *args, **kwargs):
1212
def _get_object(self, data):
1313
if "errors" in data:
1414
return
15-
# Change the URL to be able to use endpoints below
16-
data["links"]["self"]["href"] = self.url_joiner(self.url, data["uuid"])
17-
return Pipeline(data, **self._new_session_args)
15+
return Pipeline(self.url_joiner(self.url, data["uuid"]), data, **self._new_session_args)
1816

1917
def each(self, q=None, sort=None):
2018
"""
@@ -93,8 +91,8 @@ def trigger(self, branch="master", commit=None, pattern=None, variables=None):
9391

9492

9593
class Pipeline(BitbucketCloudBase):
96-
def __init__(self, data, *args, **kwargs):
97-
super(Pipeline, self).__init__(None, *args, data=data, expected_type="pipeline", **kwargs)
94+
def __init__(self, url, data, *args, **kwargs):
95+
super(Pipeline, self).__init__(url, *args, data=data, expected_type="pipeline", **kwargs)
9896

9997
def _get_object(self, data):
10098
if "errors" in data:
@@ -205,7 +203,7 @@ def log(self, start=None, end=None):
205203
try:
206204
response = self.get("log", headers=headers, advanced_mode=True)
207205
except HTTPError as e:
208-
# A 404 indicates that that specified user is not a default reviewer.
206+
# A 404 indicates that no log is present.
209207
if not e.response.status_code == 404:
210208
# Rethrow the exception
211209
raise

atlassian/bitbucket/cloud/workspaces/projects.py

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -146,15 +146,8 @@ def updated_on(self):
146146
def get_avatar(self):
147147
return self.get(self.get_link("avatar"), absolute=True)
148148

149-
def update(self, **kwargs):
150-
"""
151-
Update the project
152-
"""
153-
self.__data = super(Project, self).put(self.url, absolute=True, data=kwargs)
154-
return self
155-
156149
def delete(self):
157150
"""
158151
Delete the project
159152
"""
160-
return super(Project, self).delete(self.url, absolute=True)
153+
return super(Project, self).delete(None)

0 commit comments

Comments
 (0)