-
Notifications
You must be signed in to change notification settings - Fork 675
Expand file tree
/
Copy pathtest_commits.py
More file actions
155 lines (129 loc) · 4.7 KB
/
test_commits.py
File metadata and controls
155 lines (129 loc) · 4.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
"""
GitLab API: https://docs.gitlab.com/ce/api/commits.html
"""
import pytest
import responses
@pytest.fixture
def resp_create_commit():
content = {
"id": "ed899a2f4b50b4370feeea94676502b42383c746",
"short_id": "ed899a2f",
"title": "Commit message",
}
with responses.RequestsMock() as rsps:
rsps.add(
method=responses.POST,
url="http://localhost/api/v4/projects/1/repository/commits",
json=content,
content_type="application/json",
status=200,
)
yield rsps
@pytest.fixture
def resp_commit():
get_content = {
"id": "6b2257eabcec3db1f59dafbd84935e3caea04235",
"short_id": "6b2257ea",
"title": "Initial commit",
}
revert_content = {
"id": "8b090c1b79a14f2bd9e8a738f717824ff53aebad",
"short_id": "8b090c1b",
"title": 'Revert "Initial commit"',
}
cherry_pick_content = {
"id": "8b090c1b79a14f2bd9e8a738f717824ff53aebad",
"short_id": "8b090c1b",
"title": "Initial commit",
"message": "Initial commit\n\n\n(cherry picked from commit 6b2257eabcec3db1f59dafbd84935e3caea04235)",
}
with responses.RequestsMock(assert_all_requests_are_fired=False) as rsps:
rsps.add(
method=responses.GET,
url="http://localhost/api/v4/projects/1/repository/commits/6b2257ea",
json=get_content,
content_type="application/json",
status=200,
)
rsps.add(
method=responses.POST,
url="http://localhost/api/v4/projects/1/repository/commits/6b2257ea/revert",
json=revert_content,
content_type="application/json",
status=200,
)
rsps.add(
method=responses.POST,
url="http://localhost/api/v4/projects/1/repository/commits/6b2257ea/cherry_pick",
json=cherry_pick_content,
content_type="application/json",
status=200,
)
yield rsps
@pytest.fixture
def resp_get_commit_gpg_signature():
content = {
"gpg_key_id": 1,
"gpg_key_primary_keyid": "8254AAB3FBD54AC9",
"gpg_key_user_name": "John Doe",
"gpg_key_user_email": "johndoe@example.com",
"verification_status": "verified",
"gpg_key_subkey_id": None,
}
with responses.RequestsMock() as rsps:
rsps.add(
method=responses.GET,
url="http://localhost/api/v4/projects/1/repository/commits/6b2257ea/signature",
json=content,
content_type="application/json",
status=200,
)
yield rsps
@pytest.fixture
def resp_get_commit_sequence():
content = {"count": 1}
with responses.RequestsMock() as rsps:
rsps.add(
method=responses.GET,
url="http://localhost/api/v4/projects/1/repository/commits/6b2257ea/sequence",
json=content,
content_type="application/json",
status=200,
)
yield rsps
def test_get_commit(project, resp_commit):
commit = project.commits.get("6b2257ea")
assert commit.short_id == "6b2257ea"
assert commit.title == "Initial commit"
def test_create_commit(project, resp_create_commit):
data = {
"branch": "main",
"commit_message": "Commit message",
"actions": [{"action": "create", "file_path": "README", "content": ""}],
}
commit = project.commits.create(data)
assert commit.short_id == "ed899a2f"
assert commit.title == data["commit_message"]
def test_cherry_pick_commit(project, resp_commit):
commit = project.commits.get("6b2257ea", lazy=True)
cherry_pick_commit = commit.cherry_pick(branch="main")
assert cherry_pick_commit["short_id"] == "8b090c1b"
assert cherry_pick_commit["title"] == "Initial commit"
assert (
cherry_pick_commit["message"]
== "Initial commit\n\n\n(cherry picked from commit 6b2257eabcec3db1f59dafbd84935e3caea04235)"
)
def test_revert_commit(project, resp_commit):
commit = project.commits.get("6b2257ea", lazy=True)
revert_commit = commit.revert(branch="main")
assert revert_commit["short_id"] == "8b090c1b"
assert revert_commit["title"] == 'Revert "Initial commit"'
def test_get_commit_gpg_signature(project, resp_get_commit_gpg_signature):
commit = project.commits.get("6b2257ea", lazy=True)
signature = commit.signature()
assert signature["gpg_key_primary_keyid"] == "8254AAB3FBD54AC9"
assert signature["verification_status"] == "verified"
def test_get_commit_sequence(project, resp_get_commit_sequence):
commit = project.commits.get("6b2257ea", lazy=True)
sequence = commit.sequence()
assert sequence["count"] == 1