Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 163f57d0

Přidáno uživatelem David Friesecký před asi 4 roky(ů)

Re #8578 - Remaked tests files
- created tests for new functions
- set_certificate_revoked, clear_certificate_revocation, get_all_revoked_by, get_all_issued_by

Zobrazit rozdíly:

src/constants.py
4 4
DATABASE_FILE_LOCATION = FileAnchor("aswi2021jmsd", DATABASE_FILE)
5 5
DATETIME_FORMAT = "%d.%m.%Y %H:%M:%S"
6 6

  
7
REV_REASON_UNSPECIFIED = "unspecified"
8

  
7 9
# Types of certificates
8 10
ROOT_CA_ID = 1
9 11
INTERMEDIATE_CA_ID = 2
tests/integration_tests/dao/certificate_repository/conftest.py
1
import pytest
2
import sqlite3
3
from sqlite3 import Connection, Cursor
4

  
5
from src.dao.certificate_repository import CertificateRepository
6
from src.constants import DATABASE_FILE
7

  
8

  
9
@pytest.fixture
10
def repository():
11
    connection: Connection = sqlite3.connect(DATABASE_FILE)
12
    cursor: Cursor = connection.cursor()
13
    return CertificateRepository(connection, cursor)
tests/integration_tests/dao/certificate_repository/create_certificate_test.py
1
import pytest
2
from src.constants import *
3

  
4

  
5
def test_connection(repository):
6
    sql = f"SELECT * FROM {TAB_CERTIFICATE_TYPES}"
7
    repository.cursor.execute(sql)
8
    selected_rows = repository.cursor.fetchall()
9

  
10
    assert len(selected_rows) > 1
11
    assert selected_rows[ROOT_CA_ID - 1][1] == "ROOT_CA"
12
    assert selected_rows[INTERMEDIATE_CA_ID - 1][1] == "INTERMEDIATE_CA"
13
    assert selected_rows[CERTIFICATE_ID - 1][1] == "CERTIFICATE"
tests/integration_tests/dao/certificate_repository_test.py
1
import pytest
2
from src.constants import *
3
from src.model.certificate import Certificate
4
from src.model.private_key import PrivateKey
5

  
6
# type=CA => usage={CA:True}
7

  
8

  
9
def test_set_certificate_revoked(certificate_repository, private_key_repository):
10
    private_key = PrivateKey(private_key_id=-1, private_key="test_pk", password="test_password")
11
    private_key_id = private_key_repository.create(private_key)
12

  
13
    assert type(private_key_id) is int
14

  
15
    certificate = Certificate(certificate_id=-1, common_name="test_common_name", valid_from="test_from",
16
                              valid_to="test_to", pem_data="test_pem_data", private_key_id=private_key_id,
17
                              type_id=ROOT_CA_ID, parent_id=-1, usages={CA_ID: True})
18
    certificate_id = certificate_repository.create(certificate)
19

  
20
    assert type(certificate_id) is int
21

  
22
    certificate = certificate_repository.read(certificate_id)
23

  
24
    assert certificate.parent_id == certificate_id
25
    assert certificate.revocation_date == ""
26
    assert certificate.revocation_reason == ""
27

  
28
    check_revoked = certificate_repository.set_certificate_revoked(
29
        certificate_id=certificate_id, revocation_date="test_rev_date_1")
30

  
31
    assert check_revoked is True
32

  
33
    certificate = certificate_repository.read(certificate_id)
34

  
35
    assert certificate.revocation_date == "test_rev_date_1"
36
    assert certificate.revocation_reason == REV_REASON_UNSPECIFIED
37

  
38
    check_revoked = certificate_repository.set_certificate_revoked(
39
        certificate_id=certificate_id, revocation_date="test_rev_date_2")
40

  
41
    assert check_revoked is False
42

  
43
    certificate = certificate_repository.read(certificate_id)
44

  
45
    assert certificate.revocation_date != "test_rev_date_2"
46
    assert certificate.revocation_date == "test_rev_date_1"
47
    assert certificate.revocation_reason == REV_REASON_UNSPECIFIED
48

  
49

  
50
def test_clear_certificate_revocation(certificate_repository, private_key_repository):
51
    private_key = PrivateKey(private_key_id=-1, private_key="test_pk", password="test_password")
52
    private_key_id = private_key_repository.create(private_key=private_key)
53

  
54
    assert type(private_key_id) is int
55

  
56
    certificate = Certificate(certificate_id=-1, common_name="test_common_name", valid_from="test_from",
57
                              valid_to="test_to", pem_data="test_pem_data", private_key_id=private_key_id,
58
                              type_id=ROOT_CA_ID, parent_id=-1, usages={CA_ID: True})
59
    certificate_id = certificate_repository.create(certificate=certificate)
60

  
61
    assert type(certificate_id) is int
62

  
63
    certificate = certificate_repository.read(certificate_id=certificate_id)
64

  
65
    assert certificate.parent_id == certificate_id
66
    assert certificate.revocation_date == ""
67
    assert certificate.revocation_reason == ""
68

  
69
    check_revoked = certificate_repository.set_certificate_revoked(
70
        certificate_id=certificate_id, revocation_date="test_rev_date_1")
71

  
72
    assert check_revoked is True
73

  
74
    certificate = certificate_repository.read(certificate_id=certificate_id)
75

  
76
    assert certificate.revocation_date == "test_rev_date_1"
77
    assert certificate.revocation_reason == REV_REASON_UNSPECIFIED
78

  
79
    check_cleared = certificate_repository.clear_certificate_revocation(certificate_id=certificate_id)
80

  
81
    assert check_cleared is True
82

  
83
    certificate = certificate_repository.read(certificate_id=certificate_id)
84

  
85
    assert certificate.revocation_date == ""
86
    assert certificate.revocation_reason == ""
87

  
88

  
89
def test_get_all_revoked_by(certificate_repository, private_key_repository):
90
    private_key = PrivateKey(private_key_id=-1, private_key="test_pk", password="test_password")
91
    private_key_id = private_key_repository.create(private_key=private_key)
92

  
93
    assert type(private_key_id) is int
94

  
95
    certificate = Certificate(certificate_id=-1, common_name="test_common_name", valid_from="test_from",
96
                              valid_to="test_to", pem_data="test_pem_data", private_key_id=private_key_id,
97
                              type_id=ROOT_CA_ID, parent_id=-1, usages={CA_ID: True})
98
    certificate_id = certificate_repository.create(certificate=certificate)
99

  
100
    assert type(certificate_id) is int
101

  
102
    certificate.type_id = INTERMEDIATE_CA_ID
103
    certificate.parent_id = certificate_id
104

  
105
    certificate.common_name = "child_1"
106
    child_1_id = certificate_repository.create(certificate=certificate)
107

  
108
    certificate.common_name = "child_2"
109
    child_2_id = certificate_repository.create(certificate=certificate)
110

  
111
    certificate.common_name = "child_3"
112
    child_3_id = certificate_repository.create(certificate=certificate)
113

  
114
    certificate_repository.set_certificate_revoked(
115
        certificate_id=child_1_id, revocation_date="test_revoke_child_1", revocation_reason="test_parent")
116
    certificate_repository.set_certificate_revoked(
117
        certificate_id=child_3_id, revocation_date="test_revoke_child_3", revocation_reason="test_parent")
118

  
119
    certificates = certificate_repository.get_all_revoked_by(certificate_id=certificate_id)
120

  
121
    assert len(certificates) == 2
122
    assert certificates[0].certificate_id == child_1_id and certificates[1].certificate_id == child_3_id
123

  
124

  
125
def test_get_all_issued_by(certificate_repository, private_key_repository):
126
    private_key = PrivateKey(private_key_id=-1, private_key="test_pk", password="test_password")
127
    private_key_id = private_key_repository.create(private_key=private_key)
128

  
129
    assert type(private_key_id) is int
130

  
131
    certificate = Certificate(certificate_id=-1, common_name="test_common_name", valid_from="test_from",
132
                              valid_to="test_to", pem_data="test_pem_data", private_key_id=private_key_id,
133
                              type_id=ROOT_CA_ID, parent_id=-1, usages={CA_ID: True})
134
    certificate_id = certificate_repository.create(certificate=certificate)
135

  
136
    assert type(certificate_id) is int
137

  
138
    certificate.type_id = INTERMEDIATE_CA_ID
139
    certificate.parent_id = certificate_id
140

  
141
    certificate.common_name = "child_1"
142
    child_1_id = certificate_repository.create(certificate=certificate)
143

  
144
    certificate.common_name = "child_2"
145
    child_2_id = certificate_repository.create(certificate=certificate)
146

  
147
    certificate.common_name = "child_3"
148
    child_3_id = certificate_repository.create(certificate=certificate)
149

  
150
    certificate_repository.set_certificate_revoked(
151
        certificate_id=child_1_id, revocation_date="test_revoke_child_1", revocation_reason="test_parent")
152
    certificate_repository.set_certificate_revoked(
153
        certificate_id=child_3_id, revocation_date="test_revoke_child_3", revocation_reason="test_parent")
154

  
155
    certificates = certificate_repository.get_all_issued_by(certificate_id=certificate_id)
156

  
157
    assert len(certificates) == 3
158
    assert certificates[0].certificate_id == child_1_id and \
159
           certificates[1].certificate_id == child_2_id and \
160
           certificates[2].certificate_id == child_3_id
tests/integration_tests/dao/conftest.py
1
import pytest
2
import sqlite3
3
from sqlite3 import Connection, Cursor
4

  
5
from src.dao.certificate_repository import CertificateRepository
6
from src.dao.private_key_repository import PrivateKeyRepository
7
from src.db.init_queries import SCHEMA_SQL, DEFAULT_VALUES_SQL
8

  
9

  
10
# scope="module" means that this fixture is run once per module
11
@pytest.fixture(scope="module")
12
def connection():
13
    print("Creating a new SQLITE connection to the test DB")
14
    connection: Connection = sqlite3.connect(':memory:')
15

  
16
    # yield the created connection
17
    yield connection
18

  
19

  
20
@pytest.fixture(scope="module")
21
def cursor(connection):
22
    cursor = connection.cursor()
23

  
24
    # execute db initialisation script
25
    cursor.executescript(SCHEMA_SQL)
26

  
27
    # insert default values
28
    cursor.executescript(DEFAULT_VALUES_SQL)
29

  
30
    return cursor
31

  
32
@pytest.fixture
33
def certificate_repository(connection, cursor):
34
    return CertificateRepository(connection, cursor)
35

  
36
@pytest.fixture
37
def private_key_repository(connection, cursor):
38
    return PrivateKeyRepository(connection, cursor)

Také k dispozici: Unified diff