-
-
Notifications
You must be signed in to change notification settings - Fork 281
/
Copy pathtest_brain_ssl.py
47 lines (38 loc) · 1.71 KB
/
test_brain_ssl.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html
# For details: https://github.com/PyCQA/astroid/blob/main/LICENSE
# Copyright (c) https://github.com/PyCQA/astroid/blob/main/CONTRIBUTORS.txt
"""Tests for the ssl brain."""
from astroid import bases, nodes, parse
def test_ssl_brain() -> None:
"""Test ssl brain transform."""
module = parse(
"""
import ssl
ssl.PROTOCOL_TLSv1
ssl.VerifyMode
ssl.TLSVersion
ssl.VerifyMode.CERT_REQUIRED
"""
)
inferred_protocol = next(module.body[1].value.infer())
assert isinstance(inferred_protocol, nodes.Const)
inferred_verifymode = next(module.body[2].value.infer())
assert isinstance(inferred_verifymode, nodes.ClassDef)
assert inferred_verifymode.name == "VerifyMode"
assert len(inferred_verifymode.bases) == 1
# Check that VerifyMode correctly inherits from enum.IntEnum
int_enum = next(inferred_verifymode.bases[0].infer())
assert isinstance(int_enum, nodes.ClassDef)
assert int_enum.name == "IntEnum"
assert int_enum.parent.name == "enum"
# TLSVersion is inferred from the main module, not from the brain
inferred_tlsversion = next(module.body[3].value.infer())
assert isinstance(inferred_tlsversion, nodes.ClassDef)
assert inferred_tlsversion.name == "TLSVersion"
# TLSVersion is inferred from the main module, not from the brain
inferred_cert_required = next(module.body[4].value.infer())
assert isinstance(inferred_cert_required, bases.Instance)
assert inferred_cert_required._proxied.name == "VerifyMode"
value_node = inferred_cert_required.getattr("value")[0]
assert isinstance(value_node, nodes.Const)
assert value_node.value == 2