private Resp HandleInvalidBaseRequest(IInputValidationResult failedBaseValidation) { // TODO we may have an issue if the request class suddenly needs parameters in the constructor // In that case we may need to "push" the instantiation to the implementer class Resp result = (Resp)Activator.CreateInstance(typeof(Resp)); result.ErrorCode = 1; result.ErrorMessage = "Validation of request failed"; result.ErrorLevel = ErrorLevelType.Error; return(result); }
public void TestExternalRequestBaseValidator_InvalidRequest() { // Initalize ExternalRequestBaseValidator externalRequestBaseValidator = new ExternalRequestBaseValidator(); // Create invalid request (This is simple as we made ApplicationId > 0 equal success ExternalRequestBase externalRequest = new ExternalRequestBase() { ApplicationId = 0 }; // Validate our complicated request IInputValidationResult result = externalRequestBaseValidator.Validate(externalRequest); // We expect this to be error Assert.AreEqual(ValidationResultType.Error, result.ValidationResult); }
public Resp ProcessRequest(Req request) { Resp result = null; // Validate BaseRequest IInputValidationResult baseValidationResult = _baseValidator.Validate(request); // If BaseRequest is valid - then validate specific request if (baseValidationResult.ValidationResult == ValidationResultType.Success) { IRequestValidator <Req> validator = GetInputRequestValidator(request); InpValRes validationResult = (InpValRes)validator.Validate(request); switch (validationResult.ValidationResult) { case ValidationResultType.Success: result = HandleValidRequest(request, validationResult); break; case ValidationResultType.Warning: result = HandleWarningRequest(request, validationResult); break; case ValidationResultType.Error: result = HandleInvalidRequest(request, validationResult); break; default: throw new ArgumentOutOfRangeException("Unknown ValidationResult"); } } else { // Should we handle it here in the base manager or send it back to the implementing class as HandleInvalidRequest ? // I think we should handle it here // TODO - Decorate response from BaseRequestValidator with enough information to set these properties below with valid // information across all interfaces result = HandleInvalidBaseRequest(baseValidationResult); } // TODO Log outgoing request - perhaps? return(result); }