File: test_commits.py

package info (click to toggle)
python-gitlab 1%3A4.9.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,048 kB
  • sloc: python: 24,168; makefile: 171; ruby: 27; javascript: 3
file content (138 lines) | stat: -rw-r--r-- 3,938 bytes parent folder | download
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
"""
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"',
    }

    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,
        )
        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_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