Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 1 addition & 9 deletions atlassian/bitbucket/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,15 +38,7 @@ def _get_paged(self, url, params=None, data=None, flags=None, trailing=None, abs
if "values" not in response:
return

values = response.get("values", [])
if not response.get("size", -1) == len(values):
raise AssertionError(
"Wrong response for url [{}], the size attribute doesn't match the number of recieved values:\n{}".format(
self.url, response
)
)

for value in values:
for value in response.get("values", []):
yield value

if self.cloud:
Expand Down
14 changes: 3 additions & 11 deletions atlassian/bitbucket/cloud/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,15 +58,7 @@ def _get_paged(self, url, params=None, data=None, flags=None, trailing=None, abs
if "values" not in response:
return

values = response.get("values", [])
if not response.get("size", -1) == len(values):
raise AssertionError(
"Wrong response for url [{}], the size attribute doesn't match the number of recieved values:\n{}".format(
self.url, response
)
)

for value in values:
for value in response.get("values", []):
yield value

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

def get_data(self, id):
return copy.copy(self.__data[id])
def get_data(self, id, default=None):
return copy.copy(self.__data[id]) if id in self.__data else default

def get_link(self, link):
return self.__data["links"][link]["href"]
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,6 @@ def delete(self):
Deletes the branch restriction
"""
data = super(BranchRestriction, self).delete(None)
if "errors" in data:
if data is None or "errors" in data:
return
return BranchRestriction(data, **self._new_session_args)
2 changes: 1 addition & 1 deletion atlassian/bitbucket/cloud/repositories/defaultReviewers.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,6 @@ def delete(self):
Deletes the default reviewer
"""
data = super(DefaultReviewer, self).delete(None)
if "errors" in data:
if data is None or "errors" in data:
return
return DefaultReviewer(self.url, data, **self._new_session_args)
2 changes: 1 addition & 1 deletion atlassian/bitbucket/cloud/repositories/issues.py
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,6 @@ def delete(self):
Deletes the issue
"""
data = super(Issue, self).delete(None)
if "errors" in data:
if data is None or "errors" in data:
return
return Issue(data, **self._new_session_args)
5 changes: 4 additions & 1 deletion atlassian/bitbucket/cloud/workspaces/projects.py
Original file line number Diff line number Diff line change
Expand Up @@ -151,4 +151,7 @@ def delete(self):
"""
Delete the project
"""
return super(Project, self).delete(None)
data = super(Project, self).delete(None)
if data is None or "errors" in data:
return
return data
16 changes: 4 additions & 12 deletions atlassian/bitbucket/server/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,15 +59,7 @@ def _get_paged(self, url, params=None, data=None, flags=None, trailing=False, ab
if "values" not in response:
return

values = response.get("values", [])
if not response.get("size", -1) == len(values):
raise AssertionError(
"Wrong response for url [{}], the size attribute doesn't match the number of recieved values:\n{}".format(
self.url, response
)
)

for value in values:
for value in response.get("values", []):
yield value

if response.get("nextPageStart") is None:
Expand Down Expand Up @@ -100,16 +92,16 @@ def delete(self):
if self.__can_delete is False:
raise NotImplementedError("Delete not implemented for this object type.")
data = super(BitbucketServerBase, self).delete(None)
if "errors" in data:
if data is None or "errors" in data:
return
return True

@property
def data(self):
return copy.copy(self.__data)

def get_data(self, id):
return copy.copy(self.__data[id])
def get_data(self, id, default=None):
return copy.copy(self.__data[id]) if id in self.__data else default

def get_link(self, link):
return [x["href"] for x in self.__data["links"][link]]
3 changes: 1 addition & 2 deletions atlassian/bitbucket/server/common/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ def delete(self):
if self.url is None:
raise NotImplementedError("Delete not implemented for this object type.")
data = super(BitbucketServerBase, self).delete(None, params={"name": self.name})
if "errors" in data:
if data is None or "errors" in data:
return
return True

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

def __userdata(self, key):
print(self.__dict__)
if self.url is None:
return self.get_data(key)
return self.get_data("user")[key]
Expand Down
2 changes: 1 addition & 1 deletion atlassian/bitbucket/server/globalPermissions.py
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ def delete(self):
if self.url is None:
raise NotImplementedError("Delete not implemented for this object type.")
data = super(BitbucketServerBase, self).delete(None, params={"name": self.name})
if "errors" in data:
if data is None or "errors" in data:
return
return True

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ responses[None] = {
"account_id": "OwnerTestWorkspace1AccountId",
},
"created_on": "2020-11-03T22:14:50.671Z",
"completed_on": "2020-11-03T22:14:53.173Z",
"target": {
"type": "pipeline_ref_target",
"ref_type": "branch",
Expand Down
4 changes: 2 additions & 2 deletions tests/responses/bitbucket/cloud/2.0/workspaces/GET
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
responses[None] = {
"page": 1,
"pagelen": 2,
"size": 2,
"size": 3,
"next": "workspaces?nextPage",
"values": [
{
Expand Down Expand Up @@ -46,7 +46,7 @@ responses[None] = {
responses["nextPage"] = {
"page": 2,
"pagelen": 2,
"size": 1,
"size": 3,
"values": [
{
"created_on": "2020-10-28T12:00:00.0+00:00",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
responses[None] = {
"size": 2,
"size": 3,
"limit": 2,
"isLastPage": false,
"values": [
Expand Down Expand Up @@ -64,7 +64,7 @@ responses[None] = {
"nextPageStart": 5,
}
responses["start=5"] = {
"size": 1,
"size": 3,
"limit": 2,
"isLastPage": true,
"values": [
Expand Down
7 changes: 7 additions & 0 deletions tests/test_bitbucket_cloud.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import sys

from atlassian import Bitbucket
from atlassian.bitbucket import Cloud

BITBUCKET = None
try:
Expand All @@ -11,6 +12,7 @@
BITBUCKET = Bitbucket(
"{}/bitbucket/cloud".format(mockup_server()), username="username", password="password", cloud=True
)
CLOUD = Cloud("{}/bitbucket/cloud".format(mockup_server()), username="username", password="password")
except ImportError:
pass

Expand All @@ -35,6 +37,11 @@ def test_trigger_pipeline(self):
def test_get_pipeline(self):
result = BITBUCKET.get_pipeline("TestWorkspace1", "testrepository1", "{PipelineUuid}")
assert result["state"]["name"] == "COMPLETED", "Result of [get_pipeline(...)]"
result = (
CLOUD.workspaces.get("TestWorkspace1").repositories.get("testrepository1").pipelines.get("{PipelineUuid}")
)
assert result.get_data("state")["name"] == "COMPLETED", "Pipeline state"
assert result.completed_on == "never completed", "Pipeline completed time"

@pytest.mark.skipif(sys.version_info < (3, 4), reason="requires python3.4")
def test_stop_pipeline(self):
Expand Down