debugging set, confirm

This commit is contained in:
2024-07-13 16:29:58 -05:00
parent a14ed46edf
commit e4268959b3
8 changed files with 204 additions and 157 deletions

View File

View File

@@ -1,43 +1,29 @@
import pytest
from src.pseudo_nkode_api import UserDBModel
from src.utils import generate_random_index_interface, disperse_interface
from src.models import EncipheredNKode
from src.user_cipher_keys import UserCipherKeys
from src.pseudo_nkode_api import PseudoNKodeAPI, CustomerDBModel
def attribute_adjacency_graph(interface: list[list[int]]) -> dict[int, set[int]]:
graph = {}
for attr_set in interface:
for attr in attr_set:
graph[attr] = set(attr_set)
graph[attr].remove(attr)
return graph
@pytest.fixture()
def pseudo_nkode_api() -> PseudoNKodeAPI:
return PseudoNKodeAPI()
@pytest.mark.parametrize("user", [
(
UserDBModel(
username="test",
nkode=EncipheredNKode(
code="",
mask=""
),
user_keys=UserCipherKeys.new_user_encipher_keys(
numb_of_keys=10,
attrs_per_key=7,
set_values=list(range(7))
),
user_interface=generate_random_index_interface(10, 7),
)
)
@pytest.mark.parametrize("numb_keys,attrs_per_key,user_passcode", [
(10, 7, [3, 10, 27, 68]),
])
def test_dispersion(user):
pre_dispersion_interface = user.user_interface
post_dispersion_interface = disperse_interface(user.user_interface)
def test_create_new_user(pseudo_nkode_api, numb_keys, attrs_per_key, user_passcode):
username = "test_username"
customer = pseudo_nkode_api.create_new_customer(numb_keys, attrs_per_key)
session_id, set_interface = pseudo_nkode_api.generate_index_interface(customer.customer_id)
pre_dispresion_graph = attribute_adjacency_graph(pre_dispersion_interface)
post_dispersion_graph = attribute_adjacency_graph(post_dispersion_interface)
for _ in range(10000):
for attr, adj_graph in pre_dispresion_graph.items():
assert (adj_graph.isdisjoint(post_dispersion_graph[attr]))
key_selection = lambda interface: [interface.index(attr) % attrs_per_key for attr in user_passcode]
set_key_selection = key_selection(set_interface)
confirm_interface = pseudo_nkode_api.set_nkode(username, customer.customer_id, set_key_selection, session_id)
confirm_key_selection = key_selection(confirm_interface)
response = pseudo_nkode_api.confirm_nkode(
username,
customer.customer_id,
confirm_key_selection,
session_id
)
assert ("success" == response)

View File

@@ -0,0 +1,16 @@
import pytest
from src.user_interface import UserInterface
@pytest.mark.parametrize("user_interface", [
(
UserInterface.new_interface(7, 10)
)
])
def test_dispersion(user_interface):
pre_dispersion_graph = user_interface.attribute_adjacency_graph()
user_interface.disperse_interface()
post_dispersion_graph = user_interface.attribute_adjacency_graph()
for _ in range(10000):
for attr, adj_graph in pre_dispersion_graph.items():
assert (adj_graph.isdisjoint(post_dispersion_graph[attr]))