public async Task ValidateRedirectUri_SucceedsForOtherUrisOnTheSameDomain(string redirectUri)
        {
            // Arrange
            var validator   = new ApplicationValidator <TestApplication>(new ApplicationErrorDescriber());
            var application = CreateApplication();
            var manager     = CreateTestManager();

            // Act
            var result = await validator.ValidateRedirectUriAsync(manager, application, redirectUri);

            // Assert
            Assert.True(result.Succeeded);
        }
        public async Task ValidateApplication_SucceedsWhenNameAndClientIdAreValid()
        {
            // Arrange
            var validator   = new ApplicationValidator <TestApplication>(new ApplicationErrorDescriber());
            var application = CreateApplication();
            var manager     = CreateTestManager();

            // Act
            var result = await validator.ValidateAsync(manager, application);

            // Assert
            Assert.True(result.Succeeded);
        }
        public async Task ValidateScope_SucceedsWhenScopesAreValid()
        {
            // Arrange
            var validator   = new ApplicationValidator <TestApplication>(new ApplicationErrorDescriber());
            var application = CreateApplication();
            var manager     = CreateTestManager();

            // Act
            var result = await validator.ValidateScopeAsync(manager, application, "offline_access");

            // Assert
            Assert.True(result.Succeeded);
        }
        public async Task ValidateLogoutUri_FailsIfTheUriIsNotHttps()
        {
            // Arrange
            var validator   = new ApplicationValidator <TestApplication>(new ApplicationErrorDescriber());
            var application = CreateApplication();
            var manager     = CreateTestManager();

            var expectedError = new List <IdentityServiceError> {
                errorDescriber.NoHttpsUri("http://www.example.com/signout-oidc")
            };

            // Act
            var result = await validator.ValidateLogoutUriAsync(manager, application, "http://www.example.com/signout-oidc");

            // Assert
            Assert.False(result.Succeeded);
            Assert.Equal(expectedError, result.Errors, ErrorsComparer.Instance);
        }
        public async Task ValidateRedirectUri_FailsIfTheApplicationAlreadyContainsTheUri(string redirectUri)
        {
            // Arrange
            var validator   = new ApplicationValidator <TestApplication>(new ApplicationErrorDescriber());
            var application = CreateApplication();
            var manager     = CreateTestManager();

            var expectedError = new List <IdentityServiceError> {
                errorDescriber.DuplicateRedirectUri(redirectUri)
            };

            // Act
            var result = await validator.ValidateRedirectUriAsync(manager, application, redirectUri);

            // Assert
            Assert.False(result.Succeeded);
            Assert.Equal(expectedError, result.Errors, ErrorsComparer.Instance);
        }
        public async Task ValidateRedirectUri_FailsIfTheUriIsRelative()
        {
            // Arrange
            var validator   = new ApplicationValidator <TestApplication>(new ApplicationErrorDescriber());
            var application = CreateApplication();
            var manager     = CreateTestManager();

            var expectedError = new List <IdentityServiceError> {
                errorDescriber.InvalidRedirectUri("/signin-oidc")
            };

            // Act
            var result = await validator.ValidateRedirectUriAsync(manager, application, "/signin-oidc");

            // Assert
            Assert.False(result.Succeeded);
            Assert.Equal(expectedError, result.Errors, ErrorsComparer.Instance);
        }
        public async Task ValidateRedirectUri_FailsIfTheUriIsNotInTheSameDomainAsTheOthers()
        {
            // Arrange
            var validator   = new ApplicationValidator <TestApplication>(new ApplicationErrorDescriber());
            var application = CreateApplication();
            var manager     = CreateTestManager();

            var expectedError = new List <IdentityServiceError> {
                errorDescriber.DifferentDomains()
            };

            // Act
            var result = await validator.ValidateRedirectUriAsync(manager, application, "https://www.contoso.com/signin-oidc");

            // Assert
            Assert.False(result.Succeeded);
            Assert.Equal(expectedError, result.Errors, ErrorsComparer.Instance);
        }
        public async Task ValidateApplication_FailsForDuplicateClientIds(string clientId)
        {
            // Arrange
            var validator   = new ApplicationValidator <TestApplication>(new ApplicationErrorDescriber());
            var application = CreateApplication("ApplicationId", "TestApplication", clientId);
            var manager     = CreateTestManager(duplicateClientId: true);

            var expectedError = new List <IdentityServiceError>
            {
                errorDescriber.DuplicateApplicationClientId(clientId)
            };

            // Act
            var result = await validator.ValidateAsync(manager, application);

            // Assert
            Assert.False(result.Succeeded);
            Assert.Equal(expectedError, result.Errors, ErrorsComparer.Instance);
        }
        public async Task ValidateRedirectUri_FailsForOtherNonHttpsUris()
        {
            // Arrange
            var validator   = new ApplicationValidator <TestApplication>(new ApplicationErrorDescriber());
            var application = CreateApplication();
            var manager     = CreateTestManager();

            var expectedError = new List <IdentityServiceError> {
                errorDescriber.NoHttpsUri("urn:self:aspnet:identity:integrated"),
                errorDescriber.DifferentDomains()
            };

            // Act
            var result = await validator.ValidateRedirectUriAsync(manager, application, "urn:self:aspnet:identity:integrated");

            // Assert
            Assert.False(result.Succeeded);
            Assert.Equal(expectedError, result.Errors, ErrorsComparer.Instance);
        }
        public async Task ValidateScope_FailsForDuplicateScopeValues(string scope)
        {
            // Arrange
            var validator   = new ApplicationValidator <TestApplication>(new ApplicationErrorDescriber());
            var application = CreateApplication();
            var manager     = CreateTestManager();

            var expectedError = new List <IdentityServiceError>
            {
                errorDescriber.DuplicateScope(scope)
            };

            // Act
            var result = await validator.ValidateScopeAsync(manager, application, scope);

            // Assert
            Assert.False(result.Succeeded);
            Assert.Equal(expectedError, result.Errors, ErrorsComparer.Instance);
        }
        public async Task ValidateApplication_FailsForDuplicateApplicationNames(string name)
        {
            // Arrange
            var validator   = new ApplicationValidator <TestApplication>(new ApplicationErrorDescriber());
            var application = CreateApplication("ApplicationId", name, Guid.NewGuid().ToString());
            var manager     = CreateTestManager(duplicateName: true);

            var expectedError = new List <IdentityServiceError>
            {
                errorDescriber.DuplicateApplicationName(name)
            };

            // Act
            var result = await validator.ValidateAsync(manager, application);

            // Assert
            Assert.False(result.Succeeded);
            Assert.Equal(expectedError, result.Errors, ErrorsComparer.Instance);
        }
            public void ValidationMessage()
            {
                ControlList list = new ControlList();
                RepeaterControl control = new RepeaterControl
                {
                    Controls = new ControlList(),
                    Id = 1,
                    Label = "Test Repeater",
                    MinimumCount = 1,
                    MaximumCount = 3,
                    Name = "Test_repeater"
                };
                list.Add(control);

                ApplicationData applicationData = new ApplicationData();
                applicationData["Test_repeater"] = new List<Dictionary<string, object>>().ToArray();

                ApplicationValidator localValidator = new ApplicationValidator(list);
                ValidationResults results = localValidator.Validate(new Application(applicationData));
                Assert.IsFalse(results.IsValid);
                Assert.AreEqual(
                    "Please add between 1 and 3 rows for 'Test Repeater'",
                    results.ToList().First().Message);
            }
 public void NoItems()
 {
     var app = this.GetTestDataBaseline();
     app.ApplicationData["Repeater2"] = new object[0];
     var validator = new ApplicationValidator(this.controlList, validatorList: this.validatorList);
     var results = validator.Validate(app);
     Assert.IsTrue(results.IsValid);
 }
 public void NotSubmittedForMandatoryField()
 {
     var app = this.GetTestDataBaseline();
     app.ApplicationData.Remove("MandatoryTextField");
     var validator = new ApplicationValidator(this.controlList, validatorList: this.validatorList);
     var results = validator.Validate(app);
     Assert.IsFalse(results.IsValid);
     Assert.AreEqual(1, results.Count);
 }
 public void InvalidOption()
 {
     var app = this.GetTestDataBaseline();
     app.ApplicationData["OptionalComboField"] = "InvalidOption";
     var validator = new ApplicationValidator(this.controlList, validatorList: this.validatorList);
     var results = validator.Validate(app);
     Assert.IsFalse(results.IsValid);
     Assert.AreEqual(1, results.Count);
 }
            public void TestInitialize()
            {
                ControlList list = new ControlList
                                   {
                                       new RepeaterControl
                                       {
                                           Id = 1,
                                           Name = "Master"
                                       },
                                       new RepeaterControl
                                       {
                                           Id = 1,
                                           Name = "Slave",
                                           MasterControlName = "Master"
                                       }
                                   };

                this.validator = new ApplicationValidator(list);
            }
            public void TestInitialize()
            {
                ControlList list = new ControlList
                                   {
                                       new TextControl
                                       {
                                           Id = 1,
                                           Name = "textbox1"
                                       },
                                       new TextControl
                                       {
                                           Id = 2,
                                           Name = "textbox2"
                                       }
                                   };

                TruthConditionList hideRuleValue = new TruthConditionList
                                                   {
                                                       new CompareTruthCondition
                                                       {
                                                           Value = new CompareDefinition
                                                                   {
                                                                       CompareTo = ComparisonType.Value,
                                                                       Field = "textbox1",
                                                                       Operator = Operator.Equals,
                                                                       Value = string.Empty
                                                                   }
                                                       }
                                                   };
                list[1].VisibilityRule = new HideTruthCondition { Value = hideRuleValue };

                TruthConditionList pageValidators = new TruthConditionList();
                TruthConditionList pageValidatorValue = new TruthConditionList
                                                        {
                                                            new CompareTruthCondition
                                                            {
                                                                Value = new CompareDefinition
                                                                        {
                                                                            CompareTo = ComparisonType.Value,
                                                                            Field = "textbox2",
                                                                            Operator = Operator.Equals,
                                                                            Value = string.Empty
                                                                        }
                                                            }
                                                        };
                pageValidators.Add(new ValidateTruthCondition { Error = new ValidationError { Message = "test", Position = "2" }, Value = pageValidatorValue });

                this.validator = new ApplicationValidator(list, pageRules: pageValidators, validatorList: this.validatorList);
            }
            public void NestedControlIsValidated()
            {
                var data = new ApplicationData();
                var validator = new ApplicationValidator(this.nestedControlList, validatorList: this.validatorList);
                var row1 = data.AddRepeaterRow("OuterRepeater");
                var innerRow1 = row1.AddRepeaterRow("InnerRepeater");
                innerRow1.Add("InnerRepeaterText", string.Empty);

                var results = validator.Validate(new Application(data));
                Assert.IsFalse(results.IsValid);
            }
            public void MaxLength_LessThan()
            {
                ControlList controls = new ControlList
                                       {
                                           new TextControl
                                           {
                                               Id = 1,
                                               MaxLength = 5,
                                               Name = "MaxLengthField"
                                           }
                                       };

                ApplicationData applicationData = new ApplicationData { { "MaxLengthField", "1234" } };

                ApplicationValidator localValidator = new ApplicationValidator(controls, validatorList: this.validatorList);
                ValidationResults results = localValidator.Validate(new Application(applicationData));
                Assert.IsTrue(results.IsValid);
            }
            public void VisibleMandatoryRepeaterField()
            {
                var app = this.GetTestDataBaseline();
                app.ApplicationData.SetValue("Repeater[0].Repeater_child_4", string.Empty);
                app.ApplicationData.SetValue("Repeater[0].Show_radio", "Yes");
                var validator = new ApplicationValidator(this.controlList, validatorList: this.validatorList);
                var results = validator.Validate(app);
                Assert.IsFalse(results.IsValid);

                app.ApplicationData.SetValue("Repeater[0].Repeater_child_4", "Some value");
                results = validator.Validate(app);
                Assert.IsTrue(results.IsValid);
            }
 public void TestNullForMandatoryCheckboxGroup()
 {
     var app = this.GetTestDataBaseline();
     app.ApplicationData["MandatoryCheckboxGroup"] = null;
     var validator = new ApplicationValidator(this.controlList, validatorList: this.validatorList);
     var results = validator.Validate(app);
     Assert.IsFalse(results.IsValid);
     Assert.AreEqual(1, results.Count);
 }
 public void ReadOnlyMandatoryField()
 {
     var app = this.GetTestDataBaseline();
     app.ApplicationData["MandatoryTextField"] = string.Empty;
     List<ControlAccess> controlsAccess = this.defaultControlsAccess;
     controlsAccess.FirstOrDefault(c => c.ControlId == 3).AccessLevel = AccessLevel.Read;
     var validator = new ApplicationValidator(this.controlList, controlsAccess: controlsAccess, validatorList: this.validatorList);
     var results = validator.Validate(app);
     Assert.IsTrue(results.IsValid);
 }
 public void OneOptionForMandatoryCheckboxGroup()
 {
     var app = this.GetTestDataBaseline();
     app.ApplicationData["MandatoryCheckboxGroup"] = new[] { "Opt2" };
     var validator = new ApplicationValidator(this.controlList, validatorList: this.validatorList);
     var results = validator.Validate(app);
     Assert.IsTrue(results.IsValid);
 }
            public void CurrentSubpageValidationFail()
            {
                ApplicationData data = new ApplicationData
                                           {
                                               { "User_name", string.Empty },
                                               { "Staff_name", "ABC" }
                                           };

                var subGroup = this.subpageControlList.FindRecursive<GroupControl>(x => x.Id == 1);
                var subControlList = new ControlList { subGroup };

                var validator = new ApplicationValidator(subControlList, validatorList: this.validatorList);
                var results = validator.Validate(new Application(data));

                Assert.IsFalse(results.IsValid);

                // Test other group
                data.SetValue("User_name", "ABC");
                data.SetValue("Staff_name", string.Empty);

                subGroup = this.subpageControlList.FindRecursive<GroupControl>(x => x.Id == 2);
                subControlList = new ControlList { subGroup };

                validator = new ApplicationValidator(subControlList, validatorList: this.validatorList);
                results = validator.Validate(new Application(data));

                Assert.IsFalse(results.IsValid);
            }
 public void EmptyStringForMandatoryTextField()
 {
     var app = this.GetTestDataBaseline();
     app.ApplicationData["MandatoryTextField"] = string.Empty;
     var validator = new ApplicationValidator(this.controlList, validatorList: this.validatorList);
     var results = validator.Validate(app);
     Assert.IsFalse(results.IsValid);
     Assert.AreEqual(1, results.Count);
 }
Exemple #26
0
        private async Task <UserPasswordInfo> GetInfoOperations(ITurnContext <IMessageActivity> turnContext, PwdResetConversationStates conversationState, UserPasswordInfo userState)
        {
            UserPasswordInfo userStateFromAdaptiveCard = JsonConvert.DeserializeObject <UserPasswordInfo>(turnContext.Activity.Value.ToString());

            // Kullanıcı adı validasyonu
            if (!UserNameValidator.Validate(userStateFromAdaptiveCard.UserName))
            {
                await turnContext.SendActivityAsync("Kullanıcı adınızı hatalı girdiniz. Lütfen bilgileri tekrar giriniz");

                userStateFromAdaptiveCard.Counter++;
                if (userStateFromAdaptiveCard.Counter < 3)
                {
                    Activity t = new Activity();
                    t.Type        = ActivityTypes.Message;
                    t.Attachments = new List <Attachment>()
                    {
                        CreateAdaptiveCardUsingJson()
                    };
                    await turnContext.SendActivityAsync(t);
                }
                else
                {
                    await turnContext.SendActivityAsync("3 kez hatalı giriş yaptınız.");

                    conversationState.CurrentState = PdwResetStates.Completed;
                }
            }
            else if (!EmailValidator.Validate(userStateFromAdaptiveCard.Email))
            {
                await turnContext.SendActivityAsync("Email bilgisini hatalı girdiniz. Lütfen bilgileri tekrar giriniz");

                userStateFromAdaptiveCard.Counter++;
                if (userStateFromAdaptiveCard.Counter < 3)
                {
                    Activity t = new Activity();
                    t.Type        = ActivityTypes.Message;
                    t.Attachments = new List <Attachment>()
                    {
                        CreateAdaptiveCardUsingJson()
                    };
                    await turnContext.SendActivityAsync(t);
                }
                else
                {
                    await turnContext.SendActivityAsync("3 kez hatalı giriş yaptınız.");

                    conversationState.CurrentState = PdwResetStates.Completed;
                }
            }
            else if (!ApplicationValidator.Validate(userStateFromAdaptiveCard.Application))
            {
                await turnContext.SendActivityAsync("Application bilgisini hatalı girdiniz. Lütfen bilgileri tekrar giriniz");

                userStateFromAdaptiveCard.Counter++;
                if (userStateFromAdaptiveCard.Counter < 3)
                {
                    Activity t = new Activity();
                    t.Type        = ActivityTypes.Message;
                    t.Attachments = new List <Attachment>()
                    {
                        CreateAdaptiveCardUsingJson()
                    };
                    await turnContext.SendActivityAsync(t);
                }
                else
                {
                    await turnContext.SendActivityAsync("3 kez hatalı giriş yaptınız.");

                    conversationState.CurrentState = PdwResetStates.Completed;
                }
            }
            else
            {
                await turnContext.SendActivityAsync($"{userStateFromAdaptiveCard.UserName} için şifreniz resetlenecektir. Onaylıyor musunuz?");

                conversationState.CurrentState = PdwResetStates.GetApproval;
            }
            return(userStateFromAdaptiveCard);
        }
 public void NullForNonMandatoryField()
 {
     var app = this.GetTestDataBaseline();
     app.ApplicationData["OptionalComboField"] = null;
     var validator = new ApplicationValidator(this.controlList, validatorList: this.validatorList);
     var results = validator.Validate(app);
     Assert.IsTrue(results.IsValid);
 }
 public void LessThanMinimumCount()
 {
     var app = this.GetTestDataBaseline();
     app.ApplicationData["Repeater"] = new Dictionary<string, object>[0];
     var validator = new ApplicationValidator(this.controlList, validatorList: this.validatorList);
     var results = validator.Validate(app);
     Assert.IsFalse(results.IsValid);
 }
 public void NestedControlIsValidated()
 {
     var app = this.GetTestDataBaseline();
     app.ApplicationData.SetValue("DateRangeField", "1999/12/31");
     var validator = new ApplicationValidator(this.controlList, validatorList: this.validatorList);
     var results = validator.Validate(app);
     Assert.IsFalse(results.IsValid);
 }
            public void MaximumOnlyValidationMessage()
            {
                ControlList list = new ControlList();
                RepeaterControl control = new RepeaterControl
                {
                    Controls = new ControlList(),
                    Id = 1,
                    Label = "Test Repeater",
                    MinimumCount = null,
                    MaximumCount = 2,
                    Name = "Test_repeater"
                };
                list.Add(control);

                ApplicationData applicationData = new ApplicationData();
                List<Dictionary<string, object>> repeaterArr = new List<Dictionary<string, object>>();
                for (int i = 0; i <= 2; i++)
                {
                    repeaterArr.Add(new Dictionary<string, object>());
                }

                applicationData["Test_repeater"] = repeaterArr.ToArray();

                ApplicationValidator localValidator = new ApplicationValidator(list, validatorList: this.validatorList);
                ValidationResults results = localValidator.Validate(new Application(applicationData));
                Assert.IsFalse(results.IsValid);
                Assert.AreEqual(
                    "Please add no more than 2 rows for 'Test Repeater'",
                    results.ToList().First().Message);
            }
 public void Baseline()
 {
     var validator = new ApplicationValidator(this.controlList, validatorList: this.validatorList);
     var results = validator.Validate(this.GetTestDataBaseline());
     Assert.IsTrue(results.IsValid);
 }
            public void MoreThanMaximumCount()
            {
                var app = this.GetTestDataBaseline();
                List<Dictionary<string, object>> repeaterArr = new List<Dictionary<string, object>>();
                for (int i = 0; i <= 3; i++)
                {
                    repeaterArr.Add(new Dictionary<string, object>());
                    repeaterArr[i].Add("Repeater_child_1", string.Format("Item{0} Child1", i + 1));
                    repeaterArr[i].Add("Repeater_child_2", string.Empty);
                    repeaterArr[i].Add("Repeater_child_3", string.Format("Item{0} Child3", i + 1));
                }

                app.ApplicationData["Repeater"] = repeaterArr.ToArray();

                var validator = new ApplicationValidator(this.controlList, validatorList: this.validatorList);
                var results = validator.Validate(app);
                Assert.IsFalse(results.IsValid);
            }
 public void EmptyStringForOptionalRegexField()
 {
     var app = this.GetTestDataBaseline();
     app.ApplicationData["Telephone"] = string.Empty;
     var validator = new ApplicationValidator(this.controlList, validatorList: this.validatorList);
     var results = validator.Validate(app);
     Assert.IsTrue(results.IsValid);
 }
            public void MandatoryRepeaterNoRows()
            {
                var app = this.GetTestDataBaseline();
                app.ApplicationData.SetValue("Repeater2", new Dictionary<string, object>[0]);

                var validator = new ApplicationValidator(this.controlList, validatorList: this.validatorList);
                var results = validator.Validate(app);
                Assert.IsTrue(results.IsValid);
            }
 public void InvalidValueForRegexField()
 {
     var app = this.GetTestDataBaseline();
     app.ApplicationData["Telephone"] = "(ab) 9999 8888";
     var validator = new ApplicationValidator(this.controlList, validatorList: this.validatorList);
     var results = validator.Validate(app);
     Assert.IsFalse(results.IsValid);
     Assert.AreEqual(1, results.Count);
 }
        /// <summary>
        /// Validates an application.
        /// </summary>
        /// <param name="application">The application to validate.</param>
        /// <param name="pagesToValidate">The pagesToValidate to validate.</param>
        /// <param name="controls">A list of all controls.</param>
        /// <param name="controlsAccess">The control access list for the current user.</param>
        /// <param name="subpageControlId">The id of the control acting as the current subpage. If <see langword="null" />, then all controls are validated.</param>
        /// <param name="product">The product object.</param>
        /// <returns>
        /// The <see cref="ValidationResults" />.
        /// </returns>
        private ValidationResults ValidateApplication(Application application, PageList pagesToValidate, ControlList controls, List<ControlAccess> controlsAccess, int? subpageControlId = null, ProductDefinition product = null)
        {
            List<ControlWithOptions> controlsWithOptions = controls.FindAllRecursive<ControlWithOptions>();

            if (controlsWithOptions.Any())
            {
                this.RegisterOptionControls(application.FormOrganisationId, true, controlsWithOptions, application.ApplicationData);
            }

            var controlList = pagesToValidate.AllControls;
            var ruleList = pagesToValidate.AllRules;

            if (subpageControlId != null)
            {
                var subpageControl = controlList.FindRecursive<GroupControl>(x => x.Id == subpageControlId);
                if (subpageControl != null)
                {
                    controlList = new ControlList { subpageControl };

                    TruthConditionList validRules = new TruthConditionList();
                    validRules.AddRange(ruleList.Where(rule => controlList.FindRecursive(x => x.Id.ToString().Equals(((ValidateTruthCondition)rule).Error.Position)) != null));

                    ruleList = validRules;
                }
            }

            ServiceEndpointList endpointList = pagesToValidate.AllExternalRuleHandlers.Count > 0 ?
                     this.DataAccess.GetServiceEndpointList() :
                     new ServiceEndpointList();

            RegexValidatorList regexValidators = this.DataAccess.GetValidatorList();

            if (product != null)
            {
                this.FillControlReferences(pagesToValidate, product.FormDefinition.Pages.AllControls);
                foreach (var referencedControls in pagesToValidate.Select(p => p.ReferencedControls))
                {
                    foreach (var control in referencedControls)
                    {
                        var exists = controls.FindRecursive(control.Name) != null;
                        if (exists)
                        {
                            continue;
                        }

                        controls.AddRange(referencedControls);
                    }
                }
            }

            ApplicationValidator validator = new ApplicationValidator(controls, controlList, controlsAccess, ruleList, pagesToValidate.AllExternalRuleHandlers, endpointList, this.endpointCommunicator, regexValidators);
            return validator.Validate(application);
        }