def test_auth_rule_static_validation_failed_with_incorrect_key(auth_rule_request, auth_rule_handler: AuthRuleHandler): auth_rule_request.operation = generate_auth_rule_operation(auth_action=ADD_PREFIX, auth_type="wrong_type", field=ROLE, new_value=ENDORSER) with pytest.raises(InvalidClientRequest, match="key .* is not found in authorization map"): auth_rule_handler.static_validation(auth_rule_request)
def test_auth_rule_static_validation_failed_with_excess_field( auth_rule_request, auth_rule_handler: AuthRuleHandler): auth_rule_request.operation[OLD_VALUE] = "old_value" auth_rule_request.operation[AUTH_TYPE] = ADD_PREFIX with pytest.raises(InvalidClientRequest, match="ADD must not contain field old_value"): auth_rule_handler.static_validation(auth_rule_request)
def test_auth_rule_static_validation_failed_without_old_value(auth_rule_request, auth_rule_handler: AuthRuleHandler): if OLD_VALUE in auth_rule_request.operation: del auth_rule_request.operation[OLD_VALUE] auth_rule_request.operation[AUTH_ACTION] = EDIT_PREFIX with pytest.raises(InvalidClientRequest, match="EDIT must contain field old_value"): auth_rule_handler.static_validation(auth_rule_request)
def test_update_state(auth_rule_request, auth_rule_handler: AuthRuleHandler): txn = reqToTxn(auth_rule_request) payload = get_payload_data(txn) constraint = StaticAuthRuleHelper.get_auth_constraint(payload) auth_key = StaticAuthRuleHelper.get_auth_key(payload) path = AbstractAuthRuleHandler.make_state_path_for_auth_rule(auth_key) auth_rule_handler.update_state(txn, None, auth_rule_request) assert auth_rule_handler.get_from_state(path) == constraint.as_dict
def test_auth_rule_dynamic_validation(auth_rule_request, auth_rule_handler: AuthRuleHandler, creator): auth_rule_handler.write_req_validator.validate = get_exception(False) add_to_idr(auth_rule_handler.database_manager.idr_cache, creator, TRUSTEE) auth_rule_handler.dynamic_validation(auth_rule_request) auth_rule_handler.write_req_validator.validate = get_exception(True) with pytest.raises(UnauthorizedClientRequest): auth_rule_handler.dynamic_validation(auth_rule_request)
def _register_config_req_handlers(self): # Read handlers get_auth_rule_handler = GetAuthRuleHandler(database_manager=self.node.db_manager, write_req_validator=self.node.write_req_validator) # Write handlers auth_rule_handler = AuthRuleHandler(database_manager=self.node.db_manager, write_req_validator=self.node.write_req_validator) auth_rule_handler_1_9_1 = AuthRuleHandler191(database_manager=self.node.db_manager, write_req_validator=self.node.write_req_validator) auth_rules_handler = AuthRulesHandler(database_manager=self.node.db_manager, write_req_validator=self.node.write_req_validator) pool_config_handler = PoolConfigHandler(database_manager=self.node.db_manager, write_req_validator=self.node.write_req_validator, pool_config=self.node.poolCfg) pool_upgrade_handler = PoolUpgradeHandler(database_manager=self.node.db_manager, upgrader=self.node.upgrader, write_req_validator=self.node.write_req_validator, pool_manager=self.node.poolManager) taa_aml_handler = TxnAuthorAgreementAmlHandler(database_manager=self.node.db_manager, write_req_validator=self.node.write_req_validator) taa_handler = TxnAuthorAgreementHandler(database_manager=self.node.db_manager, write_req_validator=self.node.write_req_validator) taa_handler_v1 = TxnAuthorAgreementHandlerV1(database_manager=self.node.db_manager, write_req_validator=self.node.write_req_validator) taa_disable_handler = TxnAuthorAgreementDisableHandler(database_manager=self.node.db_manager, write_req_validator=self.node.write_req_validator) get_taa_aml_handler = GetTxnAuthorAgreementAmlHandler(database_manager=self.node.db_manager) get_taa_handler = GetTxnAuthorAgreementHandler(database_manager=self.node.db_manager) node_upgrade_handler = NodeUpgradeHandler(database_manager=self.node.db_manager) ledgers_freeze_handler = LedgersFreezeHandler(database_manager=self.node.db_manager, write_req_validator=self.node.write_req_validator) get_frozen_ledgers_handler = GetFrozenLedgersHandler(database_manager=self.node.db_manager) # Register write handlers self.node.write_manager.register_req_handler(auth_rule_handler) self.node.write_manager.register_req_handler(auth_rules_handler) self.node.write_manager.register_req_handler(pool_config_handler) self.node.write_manager.register_req_handler(pool_upgrade_handler) self.node.write_manager.register_req_handler(taa_aml_handler) self.node.write_manager.register_req_handler(taa_handler) self.node.write_manager.register_req_handler(taa_disable_handler) self.node.write_manager.register_req_handler(node_upgrade_handler) self.node.write_manager.register_req_handler(ledgers_freeze_handler) # Register read handlers self.node.read_manager.register_req_handler(get_auth_rule_handler) self.node.read_manager.register_req_handler(get_taa_aml_handler) self.node.read_manager.register_req_handler(get_taa_handler) self.node.read_manager.register_req_handler(get_frozen_ledgers_handler) # Register write handlers for a version self.node.write_manager.register_req_handler_with_version(auth_rule_handler_1_9_1, version="1.9.1") self.node.write_manager.register_req_handler_with_version(taa_handler_v1, version="1")
def register_config_req_handlers(self): # Read handlers get_auth_rule_handler = GetAuthRuleHandler( database_manager=self.node.db_manager, write_req_validator=self.node.write_req_validator) # Write handlers auth_rule_handler = AuthRuleHandler( database_manager=self.node.db_manager, write_req_validator=self.node.write_req_validator) auth_rules_handler = AuthRulesHandler( database_manager=self.node.db_manager, write_req_validator=self.node.write_req_validator) pool_config_handler = PoolConfigHandler( database_manager=self.node.db_manager, write_req_validator=self.node.write_req_validator, pool_config=self.node.poolCfg) pool_upgrade_handler = PoolUpgradeHandler( database_manager=self.node.db_manager, upgrader=self.node.upgrader, write_req_validator=self.node.write_req_validator, pool_manager=self.node.poolManager) taa_aml_handler = TxnAuthorAgreementAmlHandler( database_manager=self.node.db_manager, bls_crypto_verifier=self.node.bls_bft.bls_crypto_verifier, write_req_validator=self.node.write_req_validator) taa_handler = TxnAuthorAgreementHandler( database_manager=self.node.db_manager, bls_crypto_verifier=self.node.bls_bft.bls_crypto_verifier, write_req_validator=self.node.write_req_validator) get_taa_aml_handler = GetTxnAuthorAgreementAmlHandler( database_manager=self.node.db_manager) get_taa_handler = GetTxnAuthorAgreementHandler( database_manager=self.node.db_manager) node_upgrade_handler = NodeUpgradeHandler( database_manager=self.node.db_manager) # Register write handlers self.node.write_manager.register_req_handler(auth_rule_handler) self.node.write_manager.register_req_handler(auth_rules_handler) self.node.write_manager.register_req_handler(pool_config_handler) self.node.write_manager.register_req_handler(pool_upgrade_handler) self.node.write_manager.register_req_handler(taa_aml_handler) self.node.write_manager.register_req_handler(taa_handler) self.node.write_manager.register_req_handler(node_upgrade_handler) # Register read handlers self.node.read_manager.register_req_handler(get_auth_rule_handler) self.node.read_manager.register_req_handler(get_taa_aml_handler) self.node.read_manager.register_req_handler(get_taa_handler)
def register_config_req_handlers(self): # Read handlers get_auth_rule_handler = GetAuthRuleHandler(database_manager=self.db_manager, write_req_validator=self.write_req_validator) # Write handlers auth_rule_handler = AuthRuleHandler(database_manager=self.db_manager, write_req_validator=self.write_req_validator) auth_rules_handler = AuthRulesHandler(database_manager=self.db_manager, write_req_validator=self.write_req_validator) pool_config_handler = PoolConfigHandler(database_manager=self.db_manager, write_req_validator=self.write_req_validator, pool_config=self.poolCfg) pool_upgrade_handler = PoolUpgradeHandler(database_manager=self.db_manager, upgrader=self.upgrader, write_req_validator=self.write_req_validator, pool_manager=self.poolManager) # Register write handlers self.write_manager.register_req_handler(auth_rule_handler) self.write_manager.register_req_handler(auth_rules_handler) self.write_manager.register_req_handler(pool_config_handler) self.write_manager.register_req_handler(pool_upgrade_handler) # Register read handlers self.read_manager.register_req_handler(get_auth_rule_handler)
def test_auth_rule_static_validation(auth_rule_request, auth_rule_handler: AuthRuleHandler): auth_rule_handler.static_validation(auth_rule_request)
def auth_rule_handler(db_manager): f = FakeSomething() f.validate = lambda request, action_list: True f.auth_map = auth_map return AuthRuleHandler(db_manager, f)
def test_auth_rule_dynamic_validation(auth_rule_request, auth_rule_handler: AuthRuleHandler, creator): add_to_idr(auth_rule_handler.database_manager.idr_cache, creator, TRUSTEE) auth_rule_handler.dynamic_validation(auth_rule_request, 0)
def test_auth_rule_dynamic_validation_without_permission(auth_rule_request, auth_rule_handler: AuthRuleHandler, creator): add_to_idr(auth_rule_handler.database_manager.idr_cache, creator, STEWARD) with pytest.raises(UnauthorizedClientRequest): auth_rule_handler.dynamic_validation(auth_rule_request, 0)
def auth_rule_handler(db_manager, write_auth_req_validator): return AuthRuleHandler(db_manager, write_auth_req_validator)