Projekt

Obecné

Profil

Stáhnout (10.5 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 fb987403 Captain_Trojan
def test_invalid_params_4(server):
124
    ret = server.post("/api/certificates", content_type="application/json", json={
125
        "CA": 80081358008135,
126
        "subject": {
127
            "C": "CZ",
128
            "CN": "Root CA s.r.o.",
129
            "L": "Pilsen",
130
            "O": "Root CA s.r.o.",
131
            "OU": "IT department",
132
            "ST": "Pilsen",
133
            "emailAddress": "root@ca.com"
134
        },
135
        "usage": {
136
            "CA": True,
137
            "SSL": True,
138
            "authentication": True,
139
            "digitalSignature": True
140
        },
141
        "validityDays": 30
142
    })
143
144
    assert ret.status_code == 400
145
146
    d = ret.json
147
148
    assert "data" in d
149
    assert d["data"] == "No certificate authority with such unique ID exists."
150
    assert "success" in d
151
    assert not d["success"]
152
153
154 a0d4dda1 Captain_Trojan
def test_root_inter_ca(server):
155
    ret = server.post("/api/certificates", content_type="application/json", json={
156
        "subject": {
157
            "C": "CZ",
158 1e07432d Captain_Trojan
            "CN": "Another Root CA s.r.o.",
159 a0d4dda1 Captain_Trojan
            "L": "Pilsen",
160 1e07432d Captain_Trojan
            "O": "Another Root CA s.r.o.",
161 a0d4dda1 Captain_Trojan
            "OU": "IT department",
162
            "ST": "Pilsen Region",
163
            "emailAddress": "root@ca.com"
164
        },
165
        "usage": {
166
            "CA": True,
167
            "SSL": True,
168
            "authentication": True,
169
            "digitalSignature": True
170
        },
171
        "validityDays": 30
172
    })
173
174
    assert ret.status_code == 201
175
176
    d = ret.json
177
178
    assert "data" in d
179
    assert d["data"] == 2
180
    assert "success" in d
181
    assert d["success"]
182
183
    ret = server.post("/api/certificates", content_type="application/json", json={
184 1e07432d Captain_Trojan
        "CA": 2,
185 a0d4dda1 Captain_Trojan
        "subject": {
186
            "C": "CZ",
187 1e07432d Captain_Trojan
            "CN": "Intermediate CA s.r.o.",
188 a0d4dda1 Captain_Trojan
            "L": "Pilsen",
189 1e07432d Captain_Trojan
            "O": "Intermediate CA s.r.o.",
190 a0d4dda1 Captain_Trojan
            "OU": "IT department",
191
            "ST": "Pilsen Region",
192 1e07432d Captain_Trojan
            "emailAddress": "inter@ca.com"
193 a0d4dda1 Captain_Trojan
        },
194
        "usage": {
195
            "CA": True,
196
            "SSL": True,
197
            "authentication": True,
198
            "digitalSignature": True
199
        },
200
        "validityDays": 30
201
    })
202
203
    assert ret.status_code == 201
204
205
    d = ret.json
206
207
    assert "data" in d
208
    assert d["data"] == 3
209
    assert "success" in d
210 1e07432d Captain_Trojan
    assert d["success"]
211
212
213
def test_list_of_certificates(server):
214
    ret = server.get("/api/certificates")
215
216
    assert ret.status_code == 200
217
218
    usage_dict = {'CA': True, 'SSL': True, 'authentication': True, 'digitalSignature': True}
219
    s1 = "Root CA s.r.o."
220
    s2 = "Another Root CA s.r.o."
221
    s3 = "Intermediate CA s.r.o."
222
223
    assert "data" in ret.json
224
    assert "success" in ret.json
225
    assert ret.json["success"]
226
227
    d = ret.json["data"]
228
229
    # print(d)
230
231
    assert d[0]['CN'] == s1
232
    assert d[1]['CN'] == s2
233
    assert d[2]['CN'] == s3
234
235
    assert all(d[i]['id'] == i + 1 for i in range(3))
236
    assert all(d[i]['usage'] == usage_dict for i in range(3))
237
238
    assert d[0]['issuer']['CN'] == s1
239
    assert d[1]['issuer']['CN'] == s2
240
    assert d[2]['issuer']['CN'] == s2
241
242
    assert d[0]['issuer']['id'] == 1
243
    assert d[1]['issuer']['id'] == 2
244
    assert d[2]['issuer']['id'] == 2
245
246
247
def test_sign_by_non_ca(server):
248
    ret = server.post("/api/certificates", content_type="application/json", json={
249
        "CA": 2,
250
        "subject": {
251
            "C": "CZ",
252
            "CN": "Fake Intermediate CA s.r.o.",
253
            "L": "Pilsen",
254
            "O": "Fake Intermediate CA s.r.o.",
255
            "OU": "IT department",
256
            "ST": "Pilsen Region",
257
            "emailAddress": "inter@ca.com"
258
        },
259
        "usage": {
260
            "CA": False,
261
            "SSL": True,
262
            "authentication": True,
263
            "digitalSignature": True
264
        },
265
        "validityDays": 30
266
    })
267
268
    assert ret.status_code == 201
269
270
    d = ret.json
271
272
    assert "data" in d
273
    assert d["data"] == 4
274
    assert "success" in d
275
    assert d["success"]
276
277
    ret = server.post("/api/certificates", content_type="application/json", json={
278
        "CA": 2,
279
        "subject": {
280
            "C": "CZ",
281
            "CN": "End certificate signed by end certificate s.r.o.",
282
            "L": "Pilsen",
283
            "O": "This is probably bad s.r.o.",
284
            "OU": "IT department",
285
            "ST": "Pilsen Region",
286
            "emailAddress": "end@ca.com"
287
        },
288
        "usage": {
289
            "CA": False,
290
            "SSL": True,
291
            "authentication": True,
292
            "digitalSignature": True
293
        },
294
        "validityDays": 30
295
    })
296
297
    # TODO discussion -> assert ret.status_code == 400
298
    assert ret.status_code == 201
299
300
    d = ret.json
301
302
    assert "data" in d
303
    assert d["data"] == 5
304
    assert "success" in d
305 49f22fd9 Captain_Trojan
    assert d["success"]
306
307
308
def test_filtering(server):
309
    ret = server.get("/api/certificates", json={"filtering": {"CA": True}})
310
311
    assert ret.status_code == 200
312
313
    usage_dict = {'CA': True, 'SSL': True, 'authentication': True, 'digitalSignature': True}
314
    s1 = "Root CA s.r.o."
315
    s2 = "Another Root CA s.r.o."
316
    s3 = "Intermediate CA s.r.o."
317
318
    assert "data" in ret.json
319
    assert "success" in ret.json
320
    assert ret.json["success"]
321
322
    d = ret.json["data"]
323
324
    # print(d)
325
326
    assert d[0]['CN'] == s1
327
    assert d[1]['CN'] == s2
328
    assert d[2]['CN'] == s3
329
330
    assert all(d[i]['id'] == i + 1 for i in range(3))
331
    assert all(d[i]['usage'] == usage_dict for i in range(3))
332
333
    assert d[0]['issuer']['CN'] == s1
334
    assert d[1]['issuer']['CN'] == s2
335
    assert d[2]['issuer']['CN'] == s2
336
337
    assert d[0]['issuer']['id'] == 1
338
    assert d[1]['issuer']['id'] == 2
339 fb987403 Captain_Trojan
    assert d[2]['issuer']['id'] == 2
340
341
342
def test_get_one(server):
343
    ret = server.get("/api/certificates/1")
344
345
    assert ret.status_code == 200
346
347
    assert "data" in ret.json
348
    assert "success" in ret.json
349
    assert ret.json["success"]
350
351
    d = ret.json["data"]
352
353
    assert str(d).startswith("-----BEGIN CERTIFICATE-----")
354
355
356
def test_get_one_bad_param(server):
357
    ret = server.get("/api/certificates/whoopsie")
358
359
    assert ret.status_code == 400
360
    assert "data" in ret.json
361
    assert "success" in ret.json
362
    assert not ret.json["success"]
363
    assert ret.json["data"] == "Invalid request, wrong parameters."
364
365
366
def test_get_one_bad_param_2(server):
367
    ret = server.get("/api/certificates/805")
368
369
    assert ret.status_code == 205
370
    assert "data" in ret.json
371
    assert "success" in ret.json
372
    assert not ret.json["success"]
373 5b6d9513 Captain_Trojan
    assert ret.json["data"] == "No certificates found."
374
375
376
def test_get_detes(server):
377
    original = {
378
        "CA": 1,
379
        "subject": {
380
            "C": "CZ",
381
            "CN": "Good boy end cert s.r.o.",
382
            "L": "Pilsen",
383
            "O": "This is most likely a good s.r.o.",
384
            "OU": "IT department",
385
            "ST": "Pilsen Region",
386
            "emailAddress": "end@ca.com"
387
        },
388
        "usage": {
389
            "CA": False,
390
            "SSL": True,
391
            "authentication": False,
392
            "digitalSignature": True
393
        },
394
        "validityDays": 30
395
    }
396
    ret = server.post("/api/certificates", content_type="application/json", json=original)
397
398
    assert ret.status_code == 201
399
400
    assert "data" in ret.json
401
    assert "success" in ret.json
402
    assert ret.json["success"]
403
404
    d = ret.json
405
406
    assert d["data"] == 6
407
408
    id = d["data"]
409
410
    ret = server.get(f"/api/certificates/{id}/details")
411
412
    assert ret.status_code == 200
413
414
    assert "data" in ret.json
415
    assert "success" in ret.json
416
    assert ret.json["success"]
417
418
    d = ret.json
419
420
    new = d["data"]
421
422
    assert original["CA"] == new["CA"]
423
    assert original["subject"] == new["subject"]
424
    assert original["usage"] == new["usage"]