Skip to content

Commit 0dd1900

Browse files
authored
[Bitbucket] Fix AssertionError error in pagination. (#653)
* [Bitbucket] Fix AssertionError error in pagination. * Update test data. * Fix default value for get_data. * Consistence behavior of delete for OO interface. * Fix tests.
1 parent cf5cb0c commit 0dd1900

File tree

13 files changed

+28
-44
lines changed

13 files changed

+28
-44
lines changed

atlassian/bitbucket/base.py

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,7 @@ def _get_paged(self, url, params=None, data=None, flags=None, trailing=None, abs
3838
if "values" not in response:
3939
return
4040

41-
values = response.get("values", [])
42-
if not response.get("size", -1) == len(values):
43-
raise AssertionError(
44-
"Wrong response for url [{}], the size attribute doesn't match the number of recieved values:\n{}".format(
45-
self.url, response
46-
)
47-
)
48-
49-
for value in values:
41+
for value in response.get("values", []):
5042
yield value
5143

5244
if self.cloud:

atlassian/bitbucket/cloud/base.py

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,7 @@ def _get_paged(self, url, params=None, data=None, flags=None, trailing=None, abs
5858
if "values" not in response:
5959
return
6060

61-
values = response.get("values", [])
62-
if not response.get("size", -1) == len(values):
63-
raise AssertionError(
64-
"Wrong response for url [{}], the size attribute doesn't match the number of recieved values:\n{}".format(
65-
self.url, response
66-
)
67-
)
68-
69-
for value in values:
61+
for value in response.get("values", []):
7062
yield value
7163

7264
url = response.get("next")
@@ -88,8 +80,8 @@ def update(self, **kwargs):
8880
def data(self):
8981
return copy.copy(self.__data)
9082

91-
def get_data(self, id):
92-
return copy.copy(self.__data[id])
83+
def get_data(self, id, default=None):
84+
return copy.copy(self.__data[id]) if id in self.__data else default
9385

9486
def get_link(self, link):
9587
return self.__data["links"][link]["href"]

atlassian/bitbucket/cloud/repositories/branchRestrictions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,6 @@ def delete(self):
144144
Deletes the branch restriction
145145
"""
146146
data = super(BranchRestriction, self).delete(None)
147-
if "errors" in data:
147+
if data is None or "errors" in data:
148148
return
149149
return BranchRestriction(data, **self._new_session_args)

atlassian/bitbucket/cloud/repositories/defaultReviewers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,6 @@ def delete(self):
9595
Deletes the default reviewer
9696
"""
9797
data = super(DefaultReviewer, self).delete(None)
98-
if "errors" in data:
98+
if data is None or "errors" in data:
9999
return
100100
return DefaultReviewer(self.url, data, **self._new_session_args)

atlassian/bitbucket/cloud/repositories/issues.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,6 @@ def delete(self):
128128
Deletes the issue
129129
"""
130130
data = super(Issue, self).delete(None)
131-
if "errors" in data:
131+
if data is None or "errors" in data:
132132
return
133133
return Issue(data, **self._new_session_args)

atlassian/bitbucket/cloud/workspaces/projects.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,4 +151,7 @@ def delete(self):
151151
"""
152152
Delete the project
153153
"""
154-
return super(Project, self).delete(None)
154+
data = super(Project, self).delete(None)
155+
if data is None or "errors" in data:
156+
return
157+
return data

atlassian/bitbucket/server/base.py

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,7 @@ def _get_paged(self, url, params=None, data=None, flags=None, trailing=False, ab
5959
if "values" not in response:
6060
return
6161

62-
values = response.get("values", [])
63-
if not response.get("size", -1) == len(values):
64-
raise AssertionError(
65-
"Wrong response for url [{}], the size attribute doesn't match the number of recieved values:\n{}".format(
66-
self.url, response
67-
)
68-
)
69-
70-
for value in values:
62+
for value in response.get("values", []):
7163
yield value
7264

7365
if response.get("nextPageStart") is None:
@@ -100,16 +92,16 @@ def delete(self):
10092
if self.__can_delete is False:
10193
raise NotImplementedError("Delete not implemented for this object type.")
10294
data = super(BitbucketServerBase, self).delete(None)
103-
if "errors" in data:
95+
if data is None or "errors" in data:
10496
return
10597
return True
10698

10799
@property
108100
def data(self):
109101
return copy.copy(self.__data)
110102

111-
def get_data(self, id):
112-
return copy.copy(self.__data[id])
103+
def get_data(self, id, default=None):
104+
return copy.copy(self.__data[id]) if id in self.__data else default
113105

114106
def get_link(self, link):
115107
return [x["href"] for x in self.__data["links"][link]]

atlassian/bitbucket/server/common/__init__.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ def delete(self):
159159
if self.url is None:
160160
raise NotImplementedError("Delete not implemented for this object type.")
161161
data = super(BitbucketServerBase, self).delete(None, params={"name": self.name})
162-
if "errors" in data:
162+
if data is None or "errors" in data:
163163
return
164164
return True
165165

@@ -180,7 +180,6 @@ def __init__(self, data, *args, **kwargs):
180180
super(User, self).__init__(None, *args, data=data, **kwargs)
181181

182182
def __userdata(self, key):
183-
print(self.__dict__)
184183
if self.url is None:
185184
return self.get_data(key)
186185
return self.get_data("user")[key]

atlassian/bitbucket/server/globalPermissions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ def delete(self):
156156
if self.url is None:
157157
raise NotImplementedError("Delete not implemented for this object type.")
158158
data = super(BitbucketServerBase, self).delete(None, params={"name": self.name})
159-
if "errors" in data:
159+
if data is None or "errors" in data:
160160
return
161161
return True
162162

tests/responses/bitbucket/cloud/2.0/repositories/TestWorkspace1/testrepository1/pipelines/{PipelineUuid}/GET

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ responses[None] = {
5050
"account_id": "OwnerTestWorkspace1AccountId",
5151
},
5252
"created_on": "2020-11-03T22:14:50.671Z",
53-
"completed_on": "2020-11-03T22:14:53.173Z",
5453
"target": {
5554
"type": "pipeline_ref_target",
5655
"ref_type": "branch",

0 commit comments

Comments
 (0)