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);
        }
Example #3
0
        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]);
        }
Example #7
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);
        }
Example #8
0
        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);
        }
Example #9
0
        /// <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());
        }