Projekt

Obecné

Profil

Stáhnout (9.35 KB) Statistiky
| Větev: | Tag: | Revize:
1
def test_import(server):
2
    assert 1 + 2 + 3 + 4 != -1 / 12
3

    
4
    ret = server.get("/")
5
    assert ret.status_code == 200
6
    assert str(ret.data, encoding='utf-8') == "Welcome to the X.509 management application homepage!"
7

    
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
    assert "data" in d
58
    assert d["data"] == "Invalid request, missing parameters."
59
    assert "success" in d
60
    assert not d["success"]
61

    
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
    assert "data" in d
88
    assert d["data"] == "Invalid request, wrong parameters."
89
    assert "success" in d
90
    assert not d["success"]
91

    
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
    assert "data" in d
118
    assert d["data"] == "Invalid request, wrong parameters."
119
    assert "success" in d
120
    assert not d["success"]
121

    
122

    
123
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
def test_root_inter_ca(server):
155
    ret = server.post("/api/certificates", content_type="application/json", json={
156
        "subject": {
157
            "C": "CZ",
158
            "CN": "Another Root CA s.r.o.",
159
            "L": "Pilsen",
160
            "O": "Another Root CA s.r.o.",
161
            "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
        "CA": 2,
185
        "subject": {
186
            "C": "CZ",
187
            "CN": "Intermediate CA s.r.o.",
188
            "L": "Pilsen",
189
            "O": "Intermediate CA s.r.o.",
190
            "OU": "IT department",
191
            "ST": "Pilsen Region",
192
            "emailAddress": "inter@ca.com"
193
        },
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
    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
    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
    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
    assert ret.json["data"] == "No certificates found."
(2-2/3)