Projekt

Obecné

Profil

Stáhnout (7.73 KB) Statistiky
| Větev: | Tag: | Revize:
1 a0d4dda1 Captain_Trojan
def test_import(server):
2
    assert 1 + 2 + 3 + 4 != -1 / 12
3
4
    ret = server.get("/")
5 5b57121e Captain_Trojan
    assert ret.status_code == 200
6
    assert str(ret.data, encoding='utf-8') == "Welcome to the X.509 management application homepage!"
7 a0d4dda1 Captain_Trojan
8
9
def test_root_ca(server):
10
    ret = server.post("/api/certificates", content_type="application/json", json={
11
        "subject": {
12
            "C": "CZ",
13
            "CN": "Root CA s.r.o.",
14
            "L": "Pilsen",
15
            "O": "Root CA s.r.o.",
16
            "OU": "IT department",
17
            "ST": "Pilsen Region",
18
            "emailAddress": "root@ca.com"
19
        },
20
        "usage": {
21
            "CA": True,
22
            "SSL": True,
23
            "authentication": True,
24
            "digitalSignature": True
25
        },
26
        "validityDays": 30
27
    })
28
29
    assert ret.status_code == 201
30
31
    d = ret.json
32
33
    assert "data" in d
34
    assert d["data"] == 1
35
    assert "success" in d
36
    assert d["success"]
37
38
39
def test_invalid_params_1(server):
40
    ret = server.post("/api/certificates", content_type="application/json", json={
41
        "subject": {
42
            "C": "CZ",
43
            "CN": "Root CA s.r.o.",
44
            "L": "Pilsen",
45
            "O": "Root CA s.r.o.",
46
            "OU": "IT department",
47
            "ST": "Pilsen Region",
48
            "emailAddress": "root@ca.com"
49
        },
50
        "validityDays": 30
51
    })
52
53
    assert ret.status_code == 400
54
55
    d = ret.json
56
57 5b57121e Captain_Trojan
    assert "data" in d
58
    assert d["data"] == "Invalid request, missing parameters."
59
    assert "success" in d
60
    assert not d["success"]
61 a0d4dda1 Captain_Trojan
62
63
def test_invalid_params_2(server):
64
    ret = server.post("/api/certificates", content_type="application/json", json={
65
        "subject": {
66
            "C": "CZ",
67
            "CN": "Root CA s.r.o.",
68
            "L": "Pilsen",
69
            "O": "Root CA s.r.o.",
70
            "OU": "IT department",
71
            "ST": "Pilsen Region",
72
            "emailAddress": "root@ca.com"
73
        },
74
        "usage": {
75
            "CA": True,
76
            "SSL": True,
77
            "authentication": True,
78
            "digitalSignature": True
79
        },
80
        "validityDays": "tak mesic treba plus minus"
81
    })
82
83
    assert ret.status_code == 400
84
85
    d = ret.json
86
87 5b57121e Captain_Trojan
    assert "data" in d
88
    assert d["data"] == "Invalid request, wrong parameters."
89
    assert "success" in d
90
    assert not d["success"]
91 a0d4dda1 Captain_Trojan
92
93
def test_invalid_params_3(server):
94
    ret = server.post("/api/certificates", content_type="application/json", json={
95
        "subject": {
96
            "C": "CZ",
97
            "CN": "Root CA s.r.o.",
98
            "L": "Pilsen",
99
            "O": "Root CA s.r.o.",
100
            "OU": "IT department",
101
            "ST": ["Bosna", "Herzegovina"],
102
            "emailAddress": "root@ca.com"
103
        },
104
        "usage": {
105
            "CA": True,
106
            "SSL": True,
107
            "authentication": True,
108
            "digitalSignature": True
109
        },
110
        "validityDays": 30
111
    })
112
113
    assert ret.status_code == 400
114
115
    d = ret.json
116
117 5b57121e Captain_Trojan
    assert "data" in d
118
    assert d["data"] == "Invalid request, wrong parameters."
119
    assert "success" in d
120
    assert not d["success"]
121 a0d4dda1 Captain_Trojan
122
123
def test_root_inter_ca(server):
124
    ret = server.post("/api/certificates", content_type="application/json", json={
125
        "subject": {
126
            "C": "CZ",
127 1e07432d Captain_Trojan
            "CN": "Another Root CA s.r.o.",
128 a0d4dda1 Captain_Trojan
            "L": "Pilsen",
129 1e07432d Captain_Trojan
            "O": "Another Root CA s.r.o.",
130 a0d4dda1 Captain_Trojan
            "OU": "IT department",
131
            "ST": "Pilsen Region",
132
            "emailAddress": "root@ca.com"
133
        },
134
        "usage": {
135
            "CA": True,
136
            "SSL": True,
137
            "authentication": True,
138
            "digitalSignature": True
139
        },
140
        "validityDays": 30
141
    })
142
143
    assert ret.status_code == 201
144
145
    d = ret.json
146
147
    assert "data" in d
148
    assert d["data"] == 2
149
    assert "success" in d
150
    assert d["success"]
151
152
    ret = server.post("/api/certificates", content_type="application/json", json={
153 1e07432d Captain_Trojan
        "CA": 2,
154 a0d4dda1 Captain_Trojan
        "subject": {
155
            "C": "CZ",
156 1e07432d Captain_Trojan
            "CN": "Intermediate CA s.r.o.",
157 a0d4dda1 Captain_Trojan
            "L": "Pilsen",
158 1e07432d Captain_Trojan
            "O": "Intermediate CA s.r.o.",
159 a0d4dda1 Captain_Trojan
            "OU": "IT department",
160
            "ST": "Pilsen Region",
161 1e07432d Captain_Trojan
            "emailAddress": "inter@ca.com"
162 a0d4dda1 Captain_Trojan
        },
163
        "usage": {
164
            "CA": True,
165
            "SSL": True,
166
            "authentication": True,
167
            "digitalSignature": True
168
        },
169
        "validityDays": 30
170
    })
171
172
    assert ret.status_code == 201
173
174
    d = ret.json
175
176
    assert "data" in d
177
    assert d["data"] == 3
178
    assert "success" in d
179 1e07432d Captain_Trojan
    assert d["success"]
180
181
182
def test_list_of_certificates(server):
183
    ret = server.get("/api/certificates")
184
185
    assert ret.status_code == 200
186
187
    usage_dict = {'CA': True, 'SSL': True, 'authentication': True, 'digitalSignature': True}
188
    s1 = "Root CA s.r.o."
189
    s2 = "Another Root CA s.r.o."
190
    s3 = "Intermediate CA s.r.o."
191
192
    assert "data" in ret.json
193
    assert "success" in ret.json
194
    assert ret.json["success"]
195
196
    d = ret.json["data"]
197
198
    # print(d)
199
200
    assert d[0]['CN'] == s1
201
    assert d[1]['CN'] == s2
202
    assert d[2]['CN'] == s3
203
204
    assert all(d[i]['id'] == i + 1 for i in range(3))
205
    assert all(d[i]['usage'] == usage_dict for i in range(3))
206
207
    assert d[0]['issuer']['CN'] == s1
208
    assert d[1]['issuer']['CN'] == s2
209
    assert d[2]['issuer']['CN'] == s2
210
211
    assert d[0]['issuer']['id'] == 1
212
    assert d[1]['issuer']['id'] == 2
213
    assert d[2]['issuer']['id'] == 2
214
215
216
def test_sign_by_non_ca(server):
217
    ret = server.post("/api/certificates", content_type="application/json", json={
218
        "CA": 2,
219
        "subject": {
220
            "C": "CZ",
221
            "CN": "Fake Intermediate CA s.r.o.",
222
            "L": "Pilsen",
223
            "O": "Fake Intermediate CA s.r.o.",
224
            "OU": "IT department",
225
            "ST": "Pilsen Region",
226
            "emailAddress": "inter@ca.com"
227
        },
228
        "usage": {
229
            "CA": False,
230
            "SSL": True,
231
            "authentication": True,
232
            "digitalSignature": True
233
        },
234
        "validityDays": 30
235
    })
236
237
    assert ret.status_code == 201
238
239
    d = ret.json
240
241
    assert "data" in d
242
    assert d["data"] == 4
243
    assert "success" in d
244
    assert d["success"]
245
246
    ret = server.post("/api/certificates", content_type="application/json", json={
247
        "CA": 2,
248
        "subject": {
249
            "C": "CZ",
250
            "CN": "End certificate signed by end certificate s.r.o.",
251
            "L": "Pilsen",
252
            "O": "This is probably bad s.r.o.",
253
            "OU": "IT department",
254
            "ST": "Pilsen Region",
255
            "emailAddress": "end@ca.com"
256
        },
257
        "usage": {
258
            "CA": False,
259
            "SSL": True,
260
            "authentication": True,
261
            "digitalSignature": True
262
        },
263
        "validityDays": 30
264
    })
265
266
    # TODO discussion -> assert ret.status_code == 400
267
    assert ret.status_code == 201
268
269
    d = ret.json
270
271
    assert "data" in d
272
    assert d["data"] == 5
273
    assert "success" in d
274 49f22fd9 Captain_Trojan
    assert d["success"]
275
276
277
def test_filtering(server):
278
    ret = server.get("/api/certificates", json={"filtering": {"CA": True}})
279
280
    assert ret.status_code == 200
281
282
    usage_dict = {'CA': True, 'SSL': True, 'authentication': True, 'digitalSignature': True}
283
    s1 = "Root CA s.r.o."
284
    s2 = "Another Root CA s.r.o."
285
    s3 = "Intermediate CA s.r.o."
286
287
    assert "data" in ret.json
288
    assert "success" in ret.json
289
    assert ret.json["success"]
290
291
    d = ret.json["data"]
292
293
    # print(d)
294
295
    assert d[0]['CN'] == s1
296
    assert d[1]['CN'] == s2
297
    assert d[2]['CN'] == s3
298
299
    assert all(d[i]['id'] == i + 1 for i in range(3))
300
    assert all(d[i]['usage'] == usage_dict for i in range(3))
301
302
    assert d[0]['issuer']['CN'] == s1
303
    assert d[1]['issuer']['CN'] == s2
304
    assert d[2]['issuer']['CN'] == s2
305
306
    assert d[0]['issuer']['id'] == 1
307
    assert d[1]['issuer']['id'] == 2
308
    assert d[2]['issuer']['id'] == 2