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
|
import unittest
import gitlab
import os
import pickle
import tempfile
import json
import unittest
import requests
from gitlab import * # noqa
from gitlab.v4.objects import * # noqa
from httmock import HTTMock, urlmatch, response # noqa
headers = {"content-type": "application/json"}
class TestProjectSnippets(unittest.TestCase):
def setUp(self):
self.gl = Gitlab(
"http://localhost",
private_token="private_token",
ssl_verify=True,
api_version=4,
)
def test_list_project_snippets(self):
title = "Example Snippet Title"
visibility = "private"
@urlmatch(
scheme="http",
netloc="localhost",
path="/api/v4/projects/1/snippets",
method="get",
)
def resp_list_snippet(url, request):
content = """[{
"title": "%s",
"description": "More verbose snippet description",
"file_name": "example.txt",
"content": "source code with multiple lines",
"visibility": "%s"}]""" % (
title,
visibility,
)
content = content.encode("utf-8")
return response(200, content, headers, None, 25, request)
with HTTMock(resp_list_snippet):
snippets = self.gl.projects.get(1, lazy=True).snippets.list()
self.assertEqual(len(snippets), 1)
self.assertEqual(snippets[0].title, title)
self.assertEqual(snippets[0].visibility, visibility)
def test_get_project_snippets(self):
title = "Example Snippet Title"
visibility = "private"
@urlmatch(
scheme="http",
netloc="localhost",
path="/api/v4/projects/1/snippets/1",
method="get",
)
def resp_get_snippet(url, request):
content = """{
"title": "%s",
"description": "More verbose snippet description",
"file_name": "example.txt",
"content": "source code with multiple lines",
"visibility": "%s"}""" % (
title,
visibility,
)
content = content.encode("utf-8")
return response(200, content, headers, None, 25, request)
with HTTMock(resp_get_snippet):
snippet = self.gl.projects.get(1, lazy=True).snippets.get(1)
self.assertEqual(snippet.title, title)
self.assertEqual(snippet.visibility, visibility)
def test_create_update_project_snippets(self):
title = "Example Snippet Title"
visibility = "private"
@urlmatch(
scheme="http",
netloc="localhost",
path="/api/v4/projects/1/snippets",
method="put",
)
def resp_update_snippet(url, request):
content = """{
"title": "%s",
"description": "More verbose snippet description",
"file_name": "example.txt",
"content": "source code with multiple lines",
"visibility": "%s"}""" % (
title,
visibility,
)
content = content.encode("utf-8")
return response(200, content, headers, None, 25, request)
@urlmatch(
scheme="http",
netloc="localhost",
path="/api/v4/projects/1/snippets",
method="post",
)
def resp_create_snippet(url, request):
content = """{
"title": "%s",
"description": "More verbose snippet description",
"file_name": "example.txt",
"content": "source code with multiple lines",
"visibility": "%s"}""" % (
title,
visibility,
)
content = content.encode("utf-8")
return response(200, content, headers, None, 25, request)
with HTTMock(resp_create_snippet, resp_update_snippet):
snippet = self.gl.projects.get(1, lazy=True).snippets.create(
{
"title": title,
"file_name": title,
"content": title,
"visibility": visibility,
}
)
self.assertEqual(snippet.title, title)
self.assertEqual(snippet.visibility, visibility)
title = "new-title"
snippet.title = title
snippet.save()
self.assertEqual(snippet.title, title)
self.assertEqual(snippet.visibility, visibility)
|