add webhook tests

This commit is contained in:
Cayo Puigdefabregas 2024-06-14 14:21:25 +02:00
parent b7233a7ca8
commit 7dd92c0e54
1 changed files with 75 additions and 2 deletions

View File

@ -1,3 +1,76 @@
from django.test import TestCase
import json
# Create your tests here.
from uuid import uuid4
from django.test import TestCase
from django.core.cache import cache
from django.urls import reverse
from django.conf import settings
from idhub_auth.models import User
from oidc4vp.models import Organization
from webhook.models import Token
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)
settings.DOMAIN = self.org.name
settings.ENABLE_EMAIL = False
self.client.login(email='adminuser@example.org', password='adminpass12')
def get_credential(self):
return {'@context': ['https://www.w3.org/2018/credentials/v1', 'https://idhub.pangea.org/context/base.jsonld', 'https://idhub.pangea.org/context/membership-card.jsonld'], 'type': ['VerifiableCredential', 'VerifiableAttestation', 'MembershipCard'], 'id': 'http://localhost/credentials/1', 'issuer': {'id': 'did:web:idhub.pangea.org:dids:z6Mko7ParpJZzBopW48DY8125Tcz9hMCaH7YzteWKnFcVzhu', 'name': 'Pangea'}, 'issuanceDate': '2024-06-11T14:41:12Z', 'issued': '2024-06-11T14:41:12Z', 'validFrom': '2024-06-11T14:41:12Z', 'name': [{'value': 'Membership Card', 'lang': 'en'}, {'value': 'Carnet de soci/a', 'lang': 'ca_ES'}, {'value': 'Carnet de socio/a', 'lang': 'es'}], 'description': [{'value': "The membership card specifies an individual's subscription or enrollment in specific services or benefits issued by an organization.", 'lang': 'en'}, {'value': "El carnet de soci especifica la subscripció o la inscripció d'un individu en serveis o beneficis específics emesos per una organització.", 'lang': 'ca_ES'}, {'value': 'El carnet de socio especifica la suscripción o inscripción de un individuo en servicios o beneficios específicos emitidos por uns organización.', 'lang': 'es'}], 'credentialSubject': {'id': 'did:web:localhost:did-registry:z6MkoAQJ96ppDQFw1idhvcR9NssPJQLFBoVDD2L62r7fh5yS', 'firstName': 'Pedro', 'lastName': 'Lagasta', 'email': 'user1@example.org', 'typeOfPerson': 'natural', 'organisation': 'Pangea', 'membershipType': 'Employee', 'membershipId': '1a', 'affiliatedSince': '2023-01-01'}, 'credentialSchema': {'id': 'https://idhub.pangea.org/vc_schemas/membership-card.json', 'type': 'FullJsonSchemaValidator2021'}, 'proof': {'type': 'Ed25519Signature2018', 'proofPurpose': 'assertionMethod', 'verificationMethod': 'did:web:idhub.pangea.org:dids:z6Mko7ParpJZzBopW48DY8125Tcz9hMCaH7YzteWKnFcVzhu#z6Mko7ParpJZzBopW48DY8125Tcz9hMCaH7YzteWKnFcVzhu', 'created': '2024-06-11T14:59:37Z', 'jws': 'eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..kC2_QSkWRQ_fZ6C0_lRWvf4xuuxOueeCMb6dQFPKyn1h3gAHg_tb98RETIZeaQD6759wjJuH-IPJpvo4vzCDDA'}}
def test_render_tokens_page(self):
response = self.client.get('/webhook/tokens/', follow=True)
self.assertEqual(response.status_code, 200)
def test_new_token(self):
response = self.client.get('/webhook/tokens/new', follow=True)
self.assertEqual(response.status_code, 200)
self.assertEqual(Token.objects.count(), 1)
tk = Token.objects.first()
url = "/webhook/tokens/{}/del".format(tk.id)
response = self.client.get(url, follow=True)
self.assertEqual(Token.objects.count(), 0)
def test_verify(self):
token = uuid4()
Token.objects.create(token=token)
data = {
"type": "credential",
"data": self.get_credential()
}
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}
response = self.client.post(
reverse('webhook:verify'),
content_type='application/json',
data=data,
headers=headers
)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json(), {'status': 'success'})
self.client.headers = None