Exemplo n.º 1
0
async def test_claims_requirement_mapping():
    requirement = ClaimsRequirement({'name': 'Charlie'})

    context = AuthorizationContext(User({'name': 'Charlie'}), [requirement])

    requirement.handle(context)

    assert context.has_succeeded

    context = AuthorizationContext(User({'name': 'Sally'}), [requirement])

    await requirement.handle(context)

    assert context.has_succeeded is False
Exemplo n.º 2
0
async def test_claims_requirement_sequence():
    requirement = ClaimsRequirement(['name', 'foo'])

    context = AuthorizationContext(User({'name': 'Charlie', 'foo': 'foo'}), [requirement])

    requirement.handle(context)

    assert context.has_succeeded

    context = AuthorizationContext(User({'name': 'Charlie', 'ufo': 'nope'}), [requirement])

    requirement.handle(context)

    assert context.has_succeeded is False
Exemplo n.º 3
0
def test_authenticated_requirement_succeeds_with_identity():
    requirement = AuthenticatedRequirement()

    context = AuthorizationContext(User({}, 'oidc'), [requirement])

    requirement.handle(context)

    assert context.has_succeeded
Exemplo n.º 4
0
def test_claims_requirement_fails_for_missing_identity():
    requirement = ClaimsRequirement('name')

    context = AuthorizationContext(None, [requirement])

    requirement.handle(context)

    assert context.forced_failure == 'Missing identity'
Exemplo n.º 5
0
    def _handle_with_policy(policy: Policy, identity: Identity):
        with AuthorizationContext(identity, policy.requirements) as context:

            for requirement in policy.requirements:
                requirement.handle(context)

            if not context.has_succeeded:
                raise UnauthorizedError(context.forced_failure,
                                        context.pending_requirements)
Exemplo n.º 6
0
    async def _handle_with_policy(policy: Policy, identity: Identity):
        with AuthorizationContext(identity, policy.requirements) as context:

            for requirement in policy.requirements:
                if isinstance(requirement, SyncRequirement):
                    requirement.handle(context)
                else:
                    await requirement.handle(context)

            if not context.has_succeeded:
                raise UnauthorizedError(context.forced_failure,
                                        context.pending_requirements)
Exemplo n.º 7
0
    def handle(self, context: AuthorizationContext):
        identity = context.identity

        if identity is not None and identity.claims.get("role") == "admin":
            context.succeed(self)
Exemplo n.º 8
0
 async def handle(self, context: AuthorizationContext):
     context.succeed(self)
Exemplo n.º 9
0
        async def handle(self, context: AuthorizationContext):
            assert context.identity is not None

            if context.identity.has_claim_value('name', self.expected_name):
                context.succeed(self)
Exemplo n.º 10
0
 async def handle(self, context: AuthorizationContext):
     context.succeed(self)
     context.fail('Crash Test')  # <-- force failure
Exemplo n.º 11
0
    def handle(self, context: AuthorizationContext):
        identity = context.identity

        if identity is not None and identity['role'] == 'admin':
            context.succeed(self)