implement pseduo nkode api

This commit is contained in:
2024-07-12 19:29:14 -05:00
parent c71d29c076
commit a14ed46edf
4 changed files with 251 additions and 0 deletions

View File

@@ -0,0 +1,43 @@
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
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.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),
)
)
])
def test_dispersion(user):
pre_dispersion_interface = user.user_interface
post_dispersion_interface = disperse_interface(user.user_interface)
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]))