Beispiel #1
0
    def test_get_required_empty_claims(self):
        """
            Test getting the claims that are required and empty.

            Expected Result: Only the names of claims that are not optional, but have no value are returned.
        """

        easyjwt = EasyJWT(self.key)

        # Assert there is an optional, empty claim. This claim is not included in the output.
        self.assertIsNone(easyjwt.not_before_date)
        self.assertTrue(easyjwt._is_optional_claim('nbf'))

        # Set an optional claim. This claim is not included in the output.
        easyjwt.expiration_date = self.expiration_date
        self.assertTrue(easyjwt._is_optional_claim('exp'))

        # Create a non-optional claim and set a value. This claim is not included in the output.
        easyjwt.required = True
        self.assertTrue(easyjwt._is_claim('required'))

        # Create a non-optional, empty claim. This claim is included in the output.
        required_empty_claim = 'required_empty'
        easyjwt.required_empty = None
        self.assertTrue(easyjwt._is_claim(required_empty_claim))

        self.assertSetEqual({required_empty_claim},
                            easyjwt._get_required_empty_claims())
Beispiel #2
0
    def test_is_claim_whitelist(self):
        """
            Test if the instance variables in the whitelist are claims.

            Expected Result: `True` for all variables in the whitelist.
        """

        for instance_var in EasyJWT._private_claims:
            self.assertTrue(EasyJWT._is_claim(instance_var),
                            f'{instance_var} unexpectedly is not a claim')
Beispiel #3
0
    def test_is_claim_public_instance_vars(self):
        """
            Test if public instance variables that are not in the blacklist are claims.

            Expected Result: `True`
        """

        instance_var = 'part_of_the_claim_set'
        self.assertNotIn(instance_var, EasyJWT._private_claims)
        self.assertTrue(EasyJWT._is_claim(instance_var))
Beispiel #4
0
    def test_is_claim_private_instance_vars(self):
        """
            Test if private instance variables that are not in the whitelist are claims.

            Expected Result: `False`
        """

        instance_var = '_not_part_of_the_claim_set'
        self.assertNotIn(instance_var, EasyJWT._private_claims)
        self.assertFalse(EasyJWT._is_claim(instance_var))
Beispiel #5
0
    def test_is_claim_blacklist(self):
        """
            Test if the instance variables in the blacklist are claims.

            Expected Result: `False` for all variables in the blacklist.
        """

        for instance_var in EasyJWT._public_non_claims:
            self.assertFalse(EasyJWT._is_claim(instance_var),
                             f'{instance_var} unexpectedly is a claim')
Beispiel #6
0
    def test_registered_claim_subject(self):
        """
            Test the registered claim ``sub``.

            Expected Result: The field is an optional claim and correctly mapped to the claim name and vice versa.
        """
        instance_var_name = 'subject'
        claim_name = 'sub'

        self.assertTrue(EasyJWT._is_claim(instance_var_name))
        self.assertTrue(EasyJWT._is_optional_claim(claim_name))
        self.assertEqual(instance_var_name,
                         EasyJWT._map_claim_name_to_instance_var(claim_name))
        self.assertEqual(
            claim_name,
            EasyJWT._map_instance_var_to_claim_name(instance_var_name))
Beispiel #7
0
    def test_create_failure_missing_required_claims(self):
        """
            Test creating a token if required claims are empty.

            Expected Result: An `MissingRequiredClaimsError` error is raised.
        """

        # Unset the claim for the EasyJWT class which is always required.
        easyjwt = EasyJWT(self.key)
        easyjwt._easyjwt_class = None
        self.assertTrue(easyjwt._is_claim('_easyjwt_class'))

        with self.assertRaises(MissingRequiredClaimsError) as exception_cm:
            token = easyjwt.create()
            self.assertIsNone(token)

        self.assertEqual('Required empty claims: {_easyjwt_class}',
                         str(exception_cm.exception))
Beispiel #8
0
    def test_verify_failure_invalid_claim_set(self):
        """
            Test verifying a token with unsupported claims.

            Expected Result: An `InvalidClaimSetError` error is raised.
        """

        easyjwt_creation = EasyJWT(self.key)

        # Add some claim to the object that is not part of the class.
        fake_claim = 'part_of_the_claim_set'
        easyjwt_creation.part_of_the_claim_set = True
        self.assertTrue(easyjwt_creation._is_claim(fake_claim))

        token = easyjwt_creation.create()

        with self.assertRaises(InvalidClaimSetError) as exception_cm:
            easyjwt_verification = EasyJWT.verify(token, self.key)
            self.assertIsNone(easyjwt_verification)

        self.assertIn(fake_claim, str(exception_cm.exception))