debugging set, confirm
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user