IdHub/idhub/tests/test_credentials.py
2024-03-04 18:55:07 +01:00

125 lines
4.1 KiB
Python

import os
import json
from pathlib import Path
from django.test import TestCase, RequestFactory
from django.core.files.uploadedfile import SimpleUploadedFile
from django.core.cache import cache
from django.urls import reverse
from django.conf import settings
from idhub_auth.models import User
from idhub.models import DID, Schemas
from oidc4vp.models import Organization
from idhub.admin.views import PeopleListView
class AdminDashboardViewTest(TestCase):
def setUp(self):
cache.set("KEY_DIDS", '1234', None)
self.user = User.objects.create_user(
email='normaluser@example.org',
password='testpass12',
)
self.user.accept_gdpr=True
self.user.save()
self.admin_user = User.objects.create_superuser(
email='adminuser@example.org',
password='adminpass12')
self.admin_user.accept_gdpr=True
self.admin_user.save()
self.org = Organization.objects.create(name="testserver", main=True)
self.client.login(email='adminuser@example.org',
password='adminpass12')
settings.DOMAIN = self.org.name
settings.ENABLE_EMAIL = False
self.create_schemas()
def create_did(self, label="Default"):
did = DID.objects.create(label=label, type=DID.Types.WEB.value)
did.set_did()
did.save()
return did
def create_schemas(self):
schemas_files = os.listdir(settings.SCHEMAS_DIR)
for x in schemas_files:
if Schemas.objects.filter(file_schema=x).exists():
continue
self._create_schemas(x)
def _create_schemas(self, file_name):
data = self.open_file(file_name)
try:
ldata = json.loads(data)
assert credtools.validate_schema(ldata)
dname = ldata.get('name')
title = ldata.get('title')
assert dname
assert title
except Exception:
title = ''
_name = ''
_name = json.dumps(ldata.get('name', ''))
_description = json.dumps(ldata.get('description', ''))
Schemas.objects.create(
file_schema=file_name,
data=data,
type=title,
_name=_name,
_description=_description
)
def open_file(self, file_name):
data = ''
filename = Path(settings.SCHEMAS_DIR).joinpath(file_name)
with filename.open() as schema_file:
data = schema_file.read()
return data
def test_create_did_web(self):
url = reverse('idhub:admin_dids_new')
data = {"label": "Default", "type": DID.Types.WEB.value}
response = self.client.get(url)
assert response.status_code == 200
response = self.client.post(url, data=data)
assert response.status_code == 302
assert response.url == reverse('idhub:admin_dids')
response = self.client.get(response.url)
assert "DID created successfully" in response.content.decode('utf-8')
def test_upload_data_membership(self):
fileschema = "membership-card"
did = self.create_did()
schema = Schemas.objects.get(file_schema__contains=fileschema)
url = reverse('idhub:admin_import_add')
response = self.client.get(url)
assert response.status_code == 200
examples = 'examples/excel_examples/'
name_file = '{}.xlsx'.format(fileschema)
with Path(__file__).parent.parent.parent.joinpath(examples).joinpath(
name_file
).open('rb') as _f:
file_content = _f.read()
uploaded_file = SimpleUploadedFile(name_file, file_content)
data = {
"did": did.did,
"schema": schema.id,
"file_import": uploaded_file
}
response = self.client.post(url, data=data)
assert response.status_code == 302
assert response.url == reverse('idhub:admin_import')
response = self.client.get(response.url)
assert "successfully" in response.content.decode('utf-8')