implement pseduo nkode api
This commit is contained in:
43
test/test_pseudo_nkode_api.py
Normal file
43
test/test_pseudo_nkode_api.py
Normal 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]))
|
||||
Reference in New Issue
Block a user