Projekt

Obecné

Profil

« Předchozí | Další » 

Revize fb987403

Přidáno uživatelem Michal Seják před asi 4 roky(ů)

Re #8476 - Added and tested `get_certificate(id)`.

Zobrazit rozdíly:

app.py
20 20
    return CertController.get_certificate_list()
21 21

  
22 22

  
23
@app.route('/api/certificates/<id>', methods=["GET"])
24
def get_cert(id):
25
    return CertController.get_certificate_by_id(id)
26

  
27

  
23 28
if __name__ == '__main__':
24 29
    host = "0.0.0.0"
25 30
    port = 5000
src/controllers/certificates_controller.py
156 156
        """
157 157
        CertController.setup()  # TODO remove after issue fixed
158 158

  
159
        if connexion.request.is_json:
160
            id = IdParameter.from_dict(connexion.request.get_json())  # noqa: E501
161
        return 'do some magic!'
159
        try:
160
            v = int(id)
161
        except ValueError:
162
            return E_WRONG_PARAMETERS, 400
163

  
164
        cert = CERTIFICATE_SERVICE.get_certificate(v)
165

  
166
        if cert is None:
167
            return E_NO_CERTIFICATES_FOUND, 205                 # TODO related to 204 issue
168
        else:
169
            return {"success": True, "data": cert.pem_data}
162 170

  
163 171
    @staticmethod
164 172
    def get_certificate_details_by_id(id):  # noqa: E501
......
217 225
        if certs is None:
218 226
            return E_GENERAL_ERROR, 500
219 227
        elif len(certs) == 0:
220
            return E_NO_CERTIFICATES_FOUND, 204
228
            return E_NO_CERTIFICATES_FOUND, 205         # TODO related to 204 issue
221 229
        else:
222 230
            ret = []
223 231
            for c in certs:
tests/unit_tests/rest_api/certificates.py
120 120
    assert not d["success"]
121 121

  
122 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

  
123 154
def test_root_inter_ca(server):
124 155
    ret = server.post("/api/certificates", content_type="application/json", json={
125 156
        "subject": {
......
305 336

  
306 337
    assert d[0]['issuer']['id'] == 1
307 338
    assert d[1]['issuer']['id'] == 2
308
    assert d[2]['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."

Také k dispozici: Unified diff