from django.core import mail from rest_framework import status from userausfall.models import TrustBridge from userausfall.rest_api.tests import UserausfallAPITestCase, UserMixin class TrustBridgeTestCase(UserMixin, UserausfallAPITestCase): def create_trust_bridge(self): self.trust_giver = self.create_user() self.create_user() self.trust_bridge = TrustBridge.objects.create(trust_taker=self.user, trust_giver=self.trust_giver) return self.trust_bridge def test_create_trust_bridge(self): """Create a trust bridge for the current user.""" url = "/trust-bridges/" trust_giver = self.create_user() self.create_user() self.authenticate_user() response = self.client.post( self.get_api_url(url), { "trust_giver": { "username": trust_giver.username, }, }, ) self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(TrustBridge.objects.count(), 1) self.assertEqual(TrustBridge.objects.get().trust_giver, trust_giver) def test_retrieve_trust_bridge(self): """Retrieve the trust bridge information of a user without an ldap account.""" url = "/trust-bridges/{pk}/" self.create_trust_bridge() self.authenticate_user() response = self.client.get(self.get_api_url(url, pk=self.trust_bridge.pk)) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual( response.data, { "is_trusted": False, "trust_giver": { "username": self.trust_giver.username, }, }, ) def test_send_confirmation_email_on_creation(self): """When setting a trust giver a confirmation email is sent.""" self.create_trust_bridge() self.assertEqual(len(mail.outbox), 1) self.assertIn(self.user.trust_bridge.get_confirmation_token(), mail.outbox[0].body)