Files
ai-training/tests/test_hardware_hash.py
T

54 lines
1.5 KiB
Python

import re
from types import SimpleNamespace
import pytest
from security import Security
def test_bt_hsh_01_deterministic_hw_hash():
h1 = Security.get_hw_hash("test-hardware-info")
h2 = Security.get_hw_hash("test-hardware-info")
assert h1 == h2
def test_bt_hsh_02_different_hardware_different_hash():
assert Security.get_hw_hash("hw-a") != Security.get_hw_hash("hw-b")
def test_bt_hsh_03_output_valid_base64():
h = Security.get_hw_hash("test-hardware-info")
assert re.match(r"^[A-Za-z0-9+/]+=*$", h)
@pytest.mark.security
def test_st_hsh_01_hardware_hash_deterministic():
h1 = Security.get_hw_hash("test-hardware-info")
h2 = Security.get_hw_hash("test-hardware-info")
assert h1 == h2
@pytest.mark.security
def test_st_hsh_02_different_hardware_different_hash():
assert Security.get_hw_hash("hw-a") != Security.get_hw_hash("hw-b")
@pytest.mark.security
def test_st_hsh_03_api_key_depends_on_hardware():
creds = SimpleNamespace(email="a@b.com", password="pass1")
hw1 = Security.get_hw_hash("hw-1")
hw2 = Security.get_hw_hash("hw-2")
k1 = Security.get_api_encryption_key(creds, hw1)
k2 = Security.get_api_encryption_key(creds, hw2)
assert k1 != k2
@pytest.mark.security
def test_st_hsh_04_api_key_depends_on_credentials():
hw = Security.get_hw_hash("fixed-hw")
c1 = SimpleNamespace(email="a@b.com", password="pass1")
c2 = SimpleNamespace(email="x@y.com", password="pass2")
k1 = Security.get_api_encryption_key(c1, hw)
k2 = Security.get_api_encryption_key(c2, hw)
assert k1 != k2