Projekt

Obecné

Profil

Stáhnout (6.85 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_root_inter_ca(server):
124
    ret = server.post("/api/certificates", content_type="application/json", json={
125
        "subject": {
126
            "C": "CZ",
127
            "CN": "Another Root CA s.r.o.",
128
            "L": "Pilsen",
129
            "O": "Another Root CA s.r.o.",
130
            "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
        "CA": 2,
154
        "subject": {
155
            "C": "CZ",
156
            "CN": "Intermediate CA s.r.o.",
157
            "L": "Pilsen",
158
            "O": "Intermediate CA s.r.o.",
159
            "OU": "IT department",
160
            "ST": "Pilsen Region",
161
            "emailAddress": "inter@ca.com"
162
        },
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
    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
    assert d["success"]
(2-2/3)