def _static_validation_for_rule(self, operation, identifier, req_id): try: ConstraintCreator.create_constraint(operation.get(CONSTRAINT)) except (ValueError, KeyError) as exp: raise InvalidClientRequest(identifier, req_id, exp) StaticAuthRuleHelper.check_auth_key(operation, identifier, req_id, self.write_req_validator.auth_map)
def _doStaticValidationAuthRule(self, identifier, reqId, operation): constraint = operation.get(CONSTRAINT) ConstraintCreator.create_constraint(constraint) action = operation.get(AUTH_ACTION, None) if OLD_VALUE not in operation and action == EDIT_PREFIX: raise InvalidClientRequest( identifier, reqId, "Transaction for change authentication " "rule for {}={} must contain field {}".format( AUTH_ACTION, EDIT_PREFIX, OLD_VALUE)) if OLD_VALUE in operation and action == ADD_PREFIX: raise InvalidClientRequest( identifier, reqId, "Transaction for change authentication " "rule for {}={} must not contain field {}".format( AUTH_ACTION, ADD_PREFIX, OLD_VALUE)) auth_key = self.get_auth_key(operation) if auth_key not in self.write_req_validator.auth_map and \ auth_key not in self.write_req_validator.anyone_can_write_map: raise InvalidClientRequest( identifier, reqId, "Unknown authorization rule: key '{}' is not " "found in authorization map".format(auth_key))
def test_get_all_auth_rule_transactions_after_write(looper, sdk_wallet_trustee, sdk_pool_handle): auth_action = ADD_PREFIX auth_type = NYM field = ROLE new_value = ENDORSER auth_constraint = generate_constraint_list(auth_constraints=[generate_constraint_entity(role=TRUSTEE), generate_constraint_entity(role=STEWARD)]) resp = sdk_send_and_check_auth_rule_request(looper, sdk_pool_handle, sdk_wallet_trustee, auth_action=auth_action, auth_type=auth_type, field=field, new_value=new_value, constraint=auth_constraint) auth_key = StaticAuthRuleHelper.get_auth_key(resp[0][0][OPERATION]) resp = sdk_send_and_check_get_auth_rule_request(looper, sdk_pool_handle, sdk_wallet_trustee) result = resp[0][1]["result"][DATA] full_auth_map = OrderedDict(auth_map) full_auth_map.update(sovtoken_auth_map) full_auth_map.update(sovtokenfees_auth_map) full_auth_map[auth_key] = ConstraintCreator.create_constraint(auth_constraint) for i, (auth_key, constraint) in enumerate(full_auth_map.items()): rule = result[i] assert auth_key == StaticAuthRuleHelper.get_auth_key(rule) if constraint is None: assert {} == rule[CONSTRAINT] else: assert constraint.as_dict == rule[CONSTRAINT]
def _doStaticValidationAuthRule(self, identifier, reqId, operation): try: ConstraintCreator.create_constraint(operation.get(CONSTRAINT)) except ValueError as exp: raise InvalidClientRequest(identifier, reqId, exp) action = operation.get(AUTH_ACTION, None) if OLD_VALUE not in operation and action == EDIT_PREFIX: raise InvalidClientRequest( identifier, reqId, "Transaction for change authentication " "rule for {}={} must contain field {}".format( AUTH_ACTION, EDIT_PREFIX, OLD_VALUE)) if OLD_VALUE in operation and action == ADD_PREFIX: raise InvalidClientRequest( identifier, reqId, "Transaction for change authentication " "rule for {}={} must not contain field {}".format( AUTH_ACTION, ADD_PREFIX, OLD_VALUE)) self._check_auth_key(operation, identifier, reqId)
def test_constraint_creator(constraints_as_dict, constraints): from_creator = [ ConstraintCreator.create_constraint(c) for c in constraints_as_dict ] assert all(map(lambda a, b: a == b, constraints, from_creator))
def get_auth_constraint(operation): return ConstraintCreator.create_constraint(operation.get(CONSTRAINT))