Esempio n. 1
0
 def test_invalid_site(self):
     """Verify that the view returns a 404 if user_credentials are displayed on a site
     they are not associated with.
     """
     domain = "unused.testsite"
     site_configuration = SiteConfigurationFactory(
         site__domain=domain,
     )
     test_site = site_configuration.site
     test_program_certificate = factories.ProgramCertificateFactory(site=test_site)
     test_signatory_1 = factories.SignatoryFactory()
     test_signatory_2 = factories.SignatoryFactory()
     test_program_certificate.signatories.add(test_signatory_1, test_signatory_2)
     test_user_credential = factories.UserCredentialFactory(
         username=self.MOCK_USER_DATA["username"], credential=test_program_certificate
     )
     response = self.client.get(test_user_credential.get_absolute_url())
     self.assertEqual(response.status_code, 404)
     # Change the program certificate site to the client's site and check that the
     # response returns the user's certificate.
     test_program_certificate.site = self.site
     test_program_certificate.save()
     response = self._render_user_credential(
         user_credential=test_user_credential, program_certificate=test_program_certificate
     )
     self.assertEqual(response.status_code, 200)
Esempio n. 2
0
 def setUp(self):
     super(RenderCredentialPageTests, self).setUp()
     self.program_certificate = factories.ProgramCertificateFactory(site=self.site)
     self.signatory_1 = factories.SignatoryFactory()
     self.signatory_2 = factories.SignatoryFactory()
     self.program_certificate.signatories.add(self.signatory_1, self.signatory_2)
     self.user_credential = factories.UserCredentialFactory(credential=self.program_certificate)
Esempio n. 3
0
 def test_partial_update(self, user_kwargs, expected_status):
     """
     The partial update (PATCH) method requires the 'change' permission.
     """
     program_cert = factories.ProgramCertificateFactory()
     user_credential = factories.UserCredentialFactory.create(
         credential=program_cert, username='******')
     detail_path = reverse("api:v1:usercredential-detail",
                           args=[user_credential.id])
     post_data = {
         'username':
         '******',
         'credential': {
             'program_id': program_cert.program_id
         },
         'attributes': [{
             'name': 'dummy-attr-name',
             'value': 'dummy-attr-value'
         }],
     }
     self.client.force_authenticate(self.make_user(**user_kwargs))
     response = self.client.patch(path=detail_path,
                                  data=json.dumps(post_data),
                                  content_type=JSON_CONTENT_TYPE)
     self.assertEqual(response.status_code, expected_status)
Esempio n. 4
0
    def test_create_with_in_active_program_certificate(self):
        """ Verify the endpoint throws error if Program is inactive. """
        program_certificate = factories.ProgramCertificateFactory(
            is_active=False)
        data = {
            "username":
            self.username,
            "credential": {
                "program_id": program_certificate.program_id
            },
            "attributes": [
                {
                    "name": self.user_credential_attribute.name,
                    "value": self.user_credential_attribute.value
                },
            ]
        }

        msg = "Credential ID [{cred_id}] for ProgramCertificate matching query does not exist.".format(
            cred_id=program_certificate.program_id)

        # Verify log is captured.
        with LogCapture(LOGGER_NAME_SERIALIZER) as l:
            response = self._attempt_create_user_credentials(data)
            l.check((LOGGER_NAME_SERIALIZER, 'ERROR', msg))

        self.assertEqual(response.status_code, 400)
Esempio n. 5
0
 def test_create_with_programcertificate(self):
     """ Verify the endpoint supports issuing a new ProgramCertificate credential. """
     program_certificate = factories.ProgramCertificateFactory()
     data = {
         "username":
         self.username,
         "credential": {
             "program_id": program_certificate.program_id
         },
         "attributes": [
             {
                 "name": self.user_credential_attribute.name,
                 "value": self.user_credential_attribute.value
             },
         ]
     }
     response = self._attempt_create_user_credentials(data)
     self.assertEqual(response.status_code, 201)
     user_credential = UserCredential.objects.get(username=self.username)
     self.assertEqual(
         dict(response.data),
         dict(
             UserCredentialSerializer(user_credential,
                                      context={
                                          'request': self.request
                                      }).data))
Esempio n. 6
0
    def setUp(self):
        super(ProgramCredentialViewSetTests, self).setUp()

        self.program_certificate = factories.ProgramCertificateFactory()
        self.program_id = self.program_certificate.program_id
        self.user_credential = factories.UserCredentialFactory.create(
            credential=self.program_certificate)
        self.request = APIRequestFactory().get('/')
Esempio n. 7
0
 def setUp(self):
     super().setUp()
     self.program_certificate = factories.ProgramCertificateFactory(
         site=self.site)
     self.signatory_1 = factories.SignatoryFactory()
     self.signatory_2 = factories.SignatoryFactory()
     self.program_certificate.signatories.add(self.signatory_1,
                                              self.signatory_2)
     self.user_credential = factories.UserCredentialFactory(
         credential=self.program_certificate)
     self.platform_name = self.site.siteconfiguration.platform_name
Esempio n. 8
0
 def setUp(self):
     super().setUp()
     self.program_certificate = factories.ProgramCertificateFactory(site=self.site)
     self.signatory_1 = factories.SignatoryFactory()
     self.signatory_2 = factories.SignatoryFactory()
     self.program_certificate.signatories.add(self.signatory_1, self.signatory_2)
     self.user_credential = factories.UserCredentialFactory(
         username=self.MOCK_USER_DATA['username'], credential=self.program_certificate
     )
     self.platform_name = self.site.siteconfiguration.platform_name
     user = UserFactory(username=self.MOCK_USER_DATA['username'])
     self.client.login(username=user.username, password=USER_PASSWORD)
Esempio n. 9
0
    def setUp(self):
        super(UserCredentialViewSetTests, self).setUp()

        self.user = UserFactory()
        self.client.force_authenticate(self.user)

        self.program_cert = factories.ProgramCertificateFactory()
        self.program_id = self.program_cert.program_id
        self.user_credential = factories.UserCredentialFactory.create(
            credential=self.program_cert)
        self.user_credential_attribute = factories.UserCredentialAttributeFactory.create(
            user_credential=self.user_credential)
        self.username = "******"
        self.request = APIRequestFactory().get('/')
Esempio n. 10
0
    def test_retrieve(self, user_kwargs, expected_status):
        """
        The retrieve (GET) method requires the 'view' permission, or for the
        requested object to be associated with the username of the requesting
        user.
        """
        program_cert = factories.ProgramCertificateFactory()
        user_credential = factories.UserCredentialFactory.create(
            credential=program_cert, username='******')
        detail_path = reverse("api:v1:usercredential-detail",
                              args=[user_credential.id])

        self.client.force_authenticate(self.make_user(**user_kwargs))
        response = self.client.get(detail_path)
        self.assertEqual(response.status_code, expected_status)
Esempio n. 11
0
 def setUp(self):
     super().setUp()
     self.program_certificate = factories.ProgramCertificateFactory(site=self.site)
     self.signatory_1 = factories.SignatoryFactory()
     self.signatory_2 = factories.SignatoryFactory()
     self.program_certificate.signatories.add(self.signatory_1, self.signatory_2)
     self.user_credential = factories.UserCredentialFactory(
         username=self.MOCK_USER_DATA["username"], credential=self.program_certificate
     )
     self.visible_date_attr = factories.UserCredentialAttributeFactory(
         user_credential=self.user_credential,
         name="visible_date",
         value="1970-01-01T01:01:01Z",
     )
     self.platform_name = self.site.siteconfiguration.platform_name
     user = UserFactory(username=self.MOCK_USER_DATA["username"])
     self.client.login(username=user.username, password=USER_PASSWORD)
Esempio n. 12
0
    def test_create(self, user_kwargs, expected_status):
        """
        The creation (POST) method requires the 'add' permission.
        """
        list_path = reverse('api:v1:usercredential-list')
        program_certificate = factories.ProgramCertificateFactory()
        post_data = {
            'username': '******',
            'credential': {
                'program_id': program_certificate.program_id
            },
            'attributes': [],
        }

        self.client.force_authenticate(self.make_user(**user_kwargs))
        response = self.client.post(list_path,
                                    data=json.dumps(post_data),
                                    content_type=JSON_CONTENT_TYPE)
        self.assertEqual(response.status_code, expected_status)
Esempio n. 13
0
 def test_list_with_program_id_filter(self):
     """ Verify the list endpoint supports filter data by program_id."""
     program_cert = factories.ProgramCertificateFactory(program_id=001)
     factories.UserCredentialFactory.create(credential=program_cert)
     self.assert_list_with_id_filter(data={'program_id': self.program_id})