File: test_configuration.py

package info (click to toggle)
python-bsblan 2.2.5-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 784 kB
  • sloc: python: 2,890; makefile: 3
file content (75 lines) | stat: -rw-r--r-- 2,637 bytes parent folder | download
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
"""Tests for BSBLAN configuration methods."""

# file deepcode ignore W0212: this is a testfile
# pylint: disable=protected-access

import pytest

from bsblan import BSBLAN
from bsblan.bsblan import BSBLANConfig
from bsblan.constants import MULTI_PARAMETER_ERROR_MSG
from bsblan.exceptions import BSBLANError


def test_build_url() -> None:
    """Test the _build_url method."""
    # Test without passkey
    config = BSBLANConfig(host="example.com")
    bsblan = BSBLAN(config)
    url = bsblan._build_url("/JQ")
    assert str(url) == "http://example.com/JQ"

    # Test with passkey
    config_with_passkey = BSBLANConfig(host="example.com", passkey="1234")
    bsblan_with_passkey = BSBLAN(config_with_passkey)
    url_with_passkey = bsblan_with_passkey._build_url("/JQ")
    assert str(url_with_passkey) == "http://example.com/1234/JQ"

    # Test with custom port
    config_with_port = BSBLANConfig(host="example.com", port=8080)
    bsblan_with_port = BSBLAN(config_with_port)
    url_with_port = bsblan_with_port._build_url("/JQ")
    assert str(url_with_port) == "http://example.com:8080/JQ"


def test_get_headers() -> None:
    """Test the _get_headers method."""
    config = BSBLANConfig(host="example.com")
    bsblan = BSBLAN(config)

    # Test with firmware version not set (default)
    headers = bsblan._get_headers()
    assert "User-Agent" in headers
    assert "PythonBSBLAN/None" in headers["User-Agent"]
    assert "Accept" in headers
    assert headers["Accept"] == "application/json, */*"

    # Test with firmware version set
    bsblan._firmware_version = "1.0.38"
    headers_with_version = bsblan._get_headers()
    assert "PythonBSBLAN/1.0.38" in headers_with_version["User-Agent"]


def test_validate_single_parameter() -> None:
    """Test the _validate_single_parameter method."""
    config = BSBLANConfig(host="example.com")
    bsblan = BSBLAN(config)

    # Test with exactly one parameter
    bsblan._validate_single_parameter(1, None, None, error_msg="Test error")

    # Test with no parameters
    with pytest.raises(BSBLANError, match=MULTI_PARAMETER_ERROR_MSG):
        bsblan._validate_single_parameter(
            None, None, None, error_msg=MULTI_PARAMETER_ERROR_MSG
        )

    # Test with multiple parameters
    with pytest.raises(BSBLANError, match=MULTI_PARAMETER_ERROR_MSG):
        bsblan._validate_single_parameter(
            1, 2, None, error_msg=MULTI_PARAMETER_ERROR_MSG
        )

    # Test with all parameters
    with pytest.raises(BSBLANError, match=MULTI_PARAMETER_ERROR_MSG):
        bsblan._validate_single_parameter(1, 2, 3, error_msg=MULTI_PARAMETER_ERROR_MSG)