def test_bin(self): xproto = """ policy output < (ctx.is_admin = True | obj.empty = True) | False> """ args = XOSProcessorArgs() args.inputs = xproto args.target = self.target output = XOSProcessor.process(args) exec( output ) # This loads the generated function, which should look like this: """ def policy_output_validator(obj, ctx): i2 = (ctx.is_admin == True) i3 = (obj.empty == True) i1 = (i2 or i3) if (not i1): raise Exception('Necessary Failure') """ obj = FakeObject() obj.empty = False ctx = FakeObject() ctx.is_admin = False with self.assertRaises(Exception): verdict = policy_output_validator(obj, ctx)
def test_bin(self): xproto = """ policy output < (ctx.is_admin = True | obj.empty = True) | False> """ args = XOSProcessorArgs() args.inputs = xproto args.target = self.target output = XOSProcessor.process(args) exec(output) # This loads the generated function, which should look like this: """ def policy_output_validator(obj, ctx): i2 = (ctx.is_admin == True) i3 = (obj.empty == True) i1 = (i2 or i3) if (not i1): raise Exception('Necessary Failure') """ obj = FakeObject() obj.empty = False ctx = FakeObject() ctx.is_admin = False with self.assertRaises(Exception): verdict = policy_output_validator(obj, ctx)
def test_bin(self): xproto = """ policy output < ctx.is_admin = True | obj.empty = True> """ args = XOSProcessorArgs(inputs=xproto, target=self.target) output = XOSProcessor.process(args) exec(output, globals( )) # This loads the generated function, which should look like this: """ def output_security_check(obj, ctx): i2 = (ctx.is_admin == True) i3 = (obj.empty == True) i1 = (i2 or i3) return i1 """ obj = FakeObject() obj.empty = True ctx = FakeObject() ctx.is_admin = True verdict = output_security_check(obj, ctx) self.assertTrue(verdict)
def test_bin(self): xproto = """ policy output < ctx.is_admin = True | obj.empty = True> """ args = XOSProcessorArgs(inputs=xproto, target=self.target) output = XOSProcessor.process(args) exec(output, globals()) # This loads the generated function, which should look like this: """ def output_security_check(obj, ctx): i2 = (ctx.is_admin == True) i3 = (obj.empty == True) i1 = (i2 or i3) return i1 """ obj = FakeObject() obj.empty = True ctx = FakeObject() ctx.is_admin = True verdict = output_security_check(obj, ctx) self.assertTrue(verdict)
def test_bin(self): xproto = """ policy slice_admin < slice.is_admin | obj.empty > """ target = XProtoTestHelpers.write_tmp_target("{{ proto.policies.slice_admin }}") args = XOSProcessorArgs() args.inputs = xproto args.target = target output = XOSProcessor.process(args) slice = FakeObject() slice.is_admin = False obj = FakeObject() obj.empty = [] (op, operands), = eval(output).items() expr = op.join(operands).replace("|", " or ") self.assertFalse(eval(expr))
def test_bin(self): xproto = """ policy slice_admin < slice.is_admin | obj.empty > """ target = XProtoTestHelpers.write_tmp_target( "{{ proto.policies.slice_admin }}") args = XOSProcessorArgs() args.inputs = xproto args.target = target output = XOSProcessor.process(args) slice = FakeObject() slice.is_admin = False obj = FakeObject() obj.empty = [] (op, operands), = eval(output).items() expr = op.join(operands).replace("|", " or ") self.assertFalse(eval(expr))