private void RunTest(CardAndPhoneUsage policyValue, bool expectedValid, string card, string phone) { var protocolSettings = ProtocolSettings.CreateEmpty(); protocolSettings.CardAndPhoneUsage = policyValue; var sampleRequest = new ConfirmPurchaseRequest { PosId = "12345", CardNumber = card, PhoneNumber = phone, Transactions = { "12345" }, }; var isValid = new LikePharmaValidator(protocolSettings).TryValidateObject(sampleRequest, out var results); if (expectedValid) { Assert.True(isValid); Assert.Empty(results); } else { Assert.False(isValid); Assert.Single(results); } }
public void SuccessValidationWithoutValidator() { var protocolSettings = new ProtocolSettings { CardNumberValidator = null }; var sample = new SampleClass { SampleProperty = "12345" }; var isValid = new LikePharmaValidator(protocolSettings).TryValidateObject(sample, out var results); Assert.True(isValid); Assert.Empty(results); }
public void FailedValidationForIncorrect(string value) { var protocolSettings = new ProtocolSettings { PharmacyIdUsage = Usage.Required }; var sample = new SampleClass { SampleProperty = value }; var isValid = new LikePharmaValidator(protocolSettings).TryValidateObject(sample, out var results); Assert.False(isValid); Assert.Equal(sample.SampleProperty, value); Assert.Single(results); }
public void SuccessValidation() { var validator = new DummyCardValidator(ValidationResult.Success); var protocolSettings = new ProtocolSettings { CardNumberValidator = validator }; var sample = new SampleClass { SampleProperty = "12345" }; var isValid = new LikePharmaValidator(protocolSettings).TryValidateObject(sample, out var results); Assert.True(isValid); // потому что answer это Success; Assert.Equal(sample.SampleProperty, validator.ValidatedValue); Assert.Empty(results); }
public async Task NegativeResponsesAreValid() { var jsonOpts = LikePharmaClientOptions.CreateDefaultJsonSerializerOptions(); var protSet = ProtocolSettings.CreateOlekstra(); var req = new GetDiscountRequest { PosId = "12345", PharmacyId = "123", CardNumber = "1234567890", PhoneNumber = "+79000000000", AnyData = "abc", }; var jsonText = LikePharmaClient.SerializeJson(req, protSet, jsonOpts); var jsonBytes = Encoding.UTF8.GetBytes(jsonText); using var body = new MemoryStream(); body.Write(jsonBytes, 0, jsonBytes.Length); body.Position = 0; context.Request.Method = "POST"; context.Request.Path = "/get_discount"; context.Request.ContentType = "application/json"; context.Request.Body = body; context.Response.Body = new MemoryStream(); await middleware.InvokeAsync(context).ConfigureAwait(false); Assert.Equal(200, context.Response.StatusCode); context.Response.Body.Position = 0; using var sr = new StreamReader(context.Response.Body); var respText = await sr.ReadToEndAsync().ConfigureAwait(false); var resp = LikePharmaClient.DeserializeJson <GetDiscountResponse>(respText, protSet, jsonOpts); var validator = new LikePharmaValidator(protSet); var valid = validator.TryValidateObject(resp, out var results); Assert.Empty(results); Assert.True(valid); }
public void FailedValidation() { var answer = new ValidationResult("abc"); var validator = new DummyCardValidator(answer); var protocolSettings = new ProtocolSettings { CardNumberValidator = validator }; var sample = new SampleClass { SampleProperty = "12345" }; var isValid = new LikePharmaValidator(protocolSettings).TryValidateObject(sample, out var results); Assert.False(isValid); // потому что answer это Success; Assert.Equal(sample.SampleProperty, validator.ValidatedValue); Assert.Single(results); Assert.Same(answer, results[0]); }
public void AcceptAnyWhenOptional() { var protocolSettings = new ProtocolSettings { PharmacyIdUsage = Usage.Optional }; var sample = new SampleClass { SampleProperty = ValidPharmacyId }; var isValid = new LikePharmaValidator(protocolSettings).TryValidateObject(sample, out _); Assert.True(isValid); sample = new SampleClass { SampleProperty = string.Empty }; isValid = new LikePharmaValidator(protocolSettings).TryValidateObject(sample, out _); Assert.True(isValid); }
public void RejectValueWhenForbidden() { var protocolSettings = new ProtocolSettings { PharmacyIdUsage = Usage.Forbidden }; var sample = new SampleClass { SampleProperty = ValidPharmacyId }; var isValid = new LikePharmaValidator(protocolSettings).TryValidateObject(sample, out _); Assert.False(isValid); sample = new SampleClass { SampleProperty = string.Empty }; isValid = new LikePharmaValidator(protocolSettings).TryValidateObject(sample, out _); Assert.True(isValid); }
/// <summary> /// Конструктор по умолчанию. /// </summary> /// <param name="next">Следующий <see cref="RequestDelegate"/> в цепочке (будет проигнорирован!).</param> /// <param name="options">Параметры работы.</param> /// <param name="logger">Экземпляр логгера.</param> #pragma warning disable CA1801 // Can't unused parameter 'next' - required by ASP.NET Core! public LikePharmaMiddleware(RequestDelegate next, LikePharmaMiddlewareOptions options, ILogger <LikePharmaMiddleware <TUser> > logger) { this.logger = logger ?? throw new ArgumentNullException(nameof(logger)); this.options = options ?? throw new ArgumentNullException(nameof(options)); this.validator = new LikePharmaValidator(options.ProtocolSettings ?? ProtocolSettings.CreateEmpty()); }