diff --git a/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/Drivers/WebDriverDriver.cs b/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/Drivers/WebDriverDriver.cs index 7b6adae4..69a2706b 100644 --- a/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/Drivers/WebDriverDriver.cs +++ b/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/Drivers/WebDriverDriver.cs @@ -14,7 +14,7 @@ public class WebDriverDriver : IDisposable private static IWebDriver SetupWebDriver() { var options = new ChromeOptions(); - options.AddArgument("--headless"); + //options.AddArgument("--headless"); options.AddArgument("--start-maximized"); options.AddArgument("--disable-notifications"); options.AddArgument("--no-sandbox"); diff --git a/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/Features/1.2-LoginWithIdentifierFirst.feature b/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/Features/1.2-LoginWithIdentifierFirst.feature new file mode 100644 index 00000000..d0b42056 --- /dev/null +++ b/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/Features/1.2-LoginWithIdentifierFirst.feature @@ -0,0 +1,26 @@ +Feature: 1.2 Login With Identifier First + +This is basic login scenario that includes password optional + +Background: + Given a Global Session Policy defines the Primary factor as Password / IDP / any factor allowed by app sign on rules + And the Global Session Policy does NOT require a second factor + And a SPA, WEB APP or MOBILE with an Authentication Policy that is defined as Any 1 factor + And User Enumeration Prevention is set to ENABLED in Security > General + And the list of Authenticators contains Email and Password is optional + And a User named "Mary" exists, and this user has already setup email and password factors + + Scenario: 1.2.1: Mary logs in with Email with an OTP + Given Mary navigates to the Basic Login View + When she fills in her correct username + And she clicks Login + Then she is presented with an option to select Email to verify + When She selects Email from the list + And She selects "Receive a Code" + Then the screen changes to receive an input for a code + When She inputs the correct code from the Email + And She selects "Verify" + Then she is redirected to the Root View + And she sees a table with her profile info + And the cell for the value of email is shown and contains her email + And the cell for the value of name is shown and contains her first name and last name \ No newline at end of file diff --git a/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/Features/1.2-LoginWithIdentifierFirst.feature.cs b/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/Features/1.2-LoginWithIdentifierFirst.feature.cs new file mode 100644 index 00000000..39a1b977 --- /dev/null +++ b/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/Features/1.2-LoginWithIdentifierFirst.feature.cs @@ -0,0 +1,193 @@ +// ------------------------------------------------------------------------------ +// +// This code was generated by SpecFlow (https://www.specflow.org/). +// SpecFlow Version:3.9.0.0 +// SpecFlow Generator Version:3.9.0.0 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +// ------------------------------------------------------------------------------ +#region Designer generated code +#pragma warning disable +namespace embedded_auth_with_sdk.E2ETests.Features +{ + using TechTalk.SpecFlow; + using System; + using System.Linq; + + + [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "3.9.0.0")] + [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + public partial class _1_2LoginWithIdentifierFirstFeature : object, Xunit.IClassFixture<_1_2LoginWithIdentifierFirstFeature.FixtureData>, System.IDisposable + { + + private static TechTalk.SpecFlow.ITestRunner testRunner; + + private static string[] featureTags = ((string[])(null)); + + private Xunit.Abstractions.ITestOutputHelper _testOutputHelper; + +#line 1 "1.2-LoginWithIdentifierFirst.feature" +#line hidden + + public _1_2LoginWithIdentifierFirstFeature(_1_2LoginWithIdentifierFirstFeature.FixtureData fixtureData, embedded_auth_with_sdk_E2ETests_XUnitAssemblyFixture assemblyFixture, Xunit.Abstractions.ITestOutputHelper testOutputHelper) + { + this._testOutputHelper = testOutputHelper; + this.TestInitialize(); + } + + public static void FeatureSetup() + { + testRunner = TechTalk.SpecFlow.TestRunnerManager.GetTestRunner(); + TechTalk.SpecFlow.FeatureInfo featureInfo = new TechTalk.SpecFlow.FeatureInfo(new System.Globalization.CultureInfo("en-US"), "Features", "1.2 Login With Identifier First", "This is basic login scenario that includes password optional", ProgrammingLanguage.CSharp, featureTags); + testRunner.OnFeatureStart(featureInfo); + } + + public static void FeatureTearDown() + { + testRunner.OnFeatureEnd(); + testRunner = null; + } + + public void TestInitialize() + { + } + + public void TestTearDown() + { + testRunner.OnScenarioEnd(); + } + + public void ScenarioInitialize(TechTalk.SpecFlow.ScenarioInfo scenarioInfo) + { + testRunner.OnScenarioInitialize(scenarioInfo); + testRunner.ScenarioContext.ScenarioContainer.RegisterInstanceAs(_testOutputHelper); + } + + public void ScenarioStart() + { + testRunner.OnScenarioStart(); + } + + public void ScenarioCleanup() + { + testRunner.CollectScenarioErrors(); + } + + public virtual void FeatureBackground() + { +#line 5 +#line hidden +#line 6 + testRunner.Given("a Global Session Policy defines the Primary factor as Password / IDP / any factor" + + " allowed by app sign on rules", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 7 + testRunner.And("the Global Session Policy does NOT require a second factor", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 8 + testRunner.And("a SPA, WEB APP or MOBILE with an Authentication Policy that is defined as Any 1 f" + + "actor", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 9 + testRunner.And("User Enumeration Prevention is set to ENABLED in Security > General", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 10 + testRunner.And("the list of Authenticators contains Email and Password is optional", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 11 + testRunner.And("a User named \"Mary\" exists, and this user has already setup email and password fa" + + "ctors", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden + } + + void System.IDisposable.Dispose() + { + this.TestTearDown(); + } + + [Xunit.SkippableFactAttribute(DisplayName="1.2.1: Mary logs in with Email with an OTP")] + [Xunit.TraitAttribute("FeatureTitle", "1.2 Login With Identifier First")] + [Xunit.TraitAttribute("Description", "1.2.1: Mary logs in with Email with an OTP")] + public void _1_2_1MaryLogsInWithEmailWithAnOTP() + { + string[] tagsOfScenario = ((string[])(null)); + System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("1.2.1: Mary logs in with Email with an OTP", null, tagsOfScenario, argumentsOfScenario, featureTags); +#line 13 + this.ScenarioInitialize(scenarioInfo); +#line hidden + if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 5 +this.FeatureBackground(); +#line hidden +#line 14 + testRunner.Given("Mary navigates to the Basic Login View", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 15 + testRunner.When("she fills in her correct username", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 16 + testRunner.And("she clicks Login", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 17 + testRunner.Then("she is presented with an option to select Email to verify", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 18 + testRunner.When("She selects Email from the list", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 19 + testRunner.And("She selects \"Receive a Code\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 20 + testRunner.Then("the screen changes to receive an input for a code", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 21 + testRunner.When("She inputs the correct code from the Email", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 22 + testRunner.And("She selects \"Verify\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 23 + testRunner.Then("she is redirected to the Root View", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 24 + testRunner.And("she sees a table with her profile info", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 25 + testRunner.And("the cell for the value of email is shown and contains her email", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 26 + testRunner.And("the cell for the value of name is shown and contains her first name and last name" + + "", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden + } + this.ScenarioCleanup(); + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "3.9.0.0")] + [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + public class FixtureData : System.IDisposable + { + + public FixtureData() + { + _1_2LoginWithIdentifierFirstFeature.FeatureSetup(); + } + + void System.IDisposable.Dispose() + { + _1_2LoginWithIdentifierFirstFeature.FeatureTearDown(); + } + } + } +} +#pragma warning restore +#endregion diff --git a/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/Features/3-SelfServicePasswordRecovery.feature.cs b/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/Features/3-SelfServicePasswordRecovery.feature.cs index a0677f82..e0eff475 100644 --- a/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/Features/3-SelfServicePasswordRecovery.feature.cs +++ b/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/Features/3-SelfServicePasswordRecovery.feature.cs @@ -96,15 +96,16 @@ void System.IDisposable.Dispose() this.TestTearDown(); } - [Xunit.SkippableFactAttribute(DisplayName="3.1.1 Mary resets her password")] + [Xunit.SkippableFactAttribute(DisplayName="3.1.1 Mary resets her password", Skip="Ignored")] [Xunit.TraitAttribute("FeatureTitle", "3.1: Direct Auth Password Recovery")] [Xunit.TraitAttribute("Description", "3.1.1 Mary resets her password")] public void _3_1_1MaryResetsHerPassword() { - string[] tagsOfScenario = ((string[])(null)); + string[] tagsOfScenario = new string[] { + "Ignore"}; System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("3.1.1 Mary resets her password", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 8 +#line 9 this.ScenarioInitialize(scenarioInfo); #line hidden if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) @@ -117,61 +118,62 @@ public void _3_1_1MaryResetsHerPassword() #line 3 this.FeatureBackground(); #line hidden -#line 9 +#line 10 testRunner.Given("Mary navigates to the Self Service Password Reset View", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); #line hidden -#line 10 +#line 11 testRunner.When("she inputs her correct Email", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden -#line 11 +#line 12 testRunner.And("she submits the recovery form", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden -#line 12 +#line 13 testRunner.Then("she sees a page to select an authenticator", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden -#line 13 +#line 14 testRunner.When("she chooses Email", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden -#line 14 +#line 15 testRunner.And("she submits the select form", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden -#line 15 +#line 16 testRunner.Then("she sees a page to input her code", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden -#line 16 +#line 17 testRunner.When("she fills in the correct code", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden -#line 17 +#line 18 testRunner.And("she submits the verification form", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden -#line 18 +#line 19 testRunner.Then("she sees a page to set her password", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden -#line 19 +#line 20 testRunner.When("she fills a password that fits within the password policy", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden -#line 20 +#line 21 testRunner.And("she confirms that password", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden -#line 21 +#line 22 testRunner.And("she submits the change password form", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden -#line 22 +#line 23 testRunner.Then("she is redirected to the Root Page is provided", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden } this.ScenarioCleanup(); } - [Xunit.SkippableFactAttribute(DisplayName="3.1.2 Mary tries to reset a password with the wrong email")] + [Xunit.SkippableFactAttribute(DisplayName="3.1.2 Mary tries to reset a password with the wrong email", Skip="Ignored")] [Xunit.TraitAttribute("FeatureTitle", "3.1: Direct Auth Password Recovery")] [Xunit.TraitAttribute("Description", "3.1.2 Mary tries to reset a password with the wrong email")] public void _3_1_2MaryTriesToResetAPasswordWithTheWrongEmail() { - string[] tagsOfScenario = ((string[])(null)); + string[] tagsOfScenario = new string[] { + "Ignore"}; System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("3.1.2 Mary tries to reset a password with the wrong email", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 24 +#line 26 this.ScenarioInitialize(scenarioInfo); #line hidden if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) @@ -184,19 +186,19 @@ public void _3_1_2MaryTriesToResetAPasswordWithTheWrongEmail() #line 3 this.FeatureBackground(); #line hidden -#line 25 +#line 27 testRunner.Given("Mary navigates to the Self Service Password Reset View", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); #line hidden -#line 26 +#line 28 testRunner.Then("she sees the Password Recovery Page", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden -#line 27 +#line 29 testRunner.When("she inputs an Email that doesn\'t exist", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden -#line 28 +#line 30 testRunner.And("she submits the recovery form", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden -#line 29 +#line 31 testRunner.Then("she sees a message \"Authentication failed\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden } diff --git a/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/Features/4.2-SelfServiceRegistrationPasswordOptional.feature b/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/Features/4.2-SelfServiceRegistrationPasswordOptional.feature new file mode 100644 index 00000000..458d24b1 --- /dev/null +++ b/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/Features/4.2-SelfServiceRegistrationPasswordOptional.feature @@ -0,0 +1,62 @@ +Feature: 4.2 Self Service Registration Password Optional + +User registeration scenario for password optional feature + +Background: + Given a Profile Enrollment policy defined assigning new users to the Everyone Group and by collecting "First Name", "Last Name", and "Email", is allowed and assigned to a SPA, WEB APP or MOBILE application + And "Required before access is granted" is selected for Email Verification under Profile Enrollment in Security > Profile Enrollment + And configured Authenticators are Email (required) and Password (optional) + And a user named "Mary" + And Mary does not have an account in the org + + @ignore + Scenario: 4.2.1 Mary signs up for an account with required Email factor, then skips optional Password + Given Mary navigates to the Self Service Registration View + When she fills out her First Name + And she fills out her Last Name + And she fills out her Email + And she submits the registration form + Then She sees a list of factors + When she selects Email + And she submits the select authenticator form + Then she sees a page to input a code + When she inputs the correct code from her email + Then she sees the list of optional factors + When she skips optional authenticators if prompted + Then she is redirected to the Root View + And she sees a table with her profile info + And the access_token is shown and not empty + And the id_token is shown and not empty + And the cell for the value of email is shown and contains her email + And the cell for the value of name is shown and contains her first name and last name + And the preferred_username claim is shown and matches Mary's email + + @ignore + Scenario: 4.2.2 Mary signs up for an account with required Email factor, then sets up optional Password + Given Mary navigates to the Self Service Registration View + When she fills out her First Name + And she fills out her Last Name + And she fills out her Email + And she submits the registration form + Then She sees a list of factors + When she selects Email + And she submits the select authenticator form + Then she sees a page to input a code + When she inputs the correct code from her email + Then she sees the list of optional factors + When she chooses password factor option + And she submits the select authenticator form + Then she sees the set new password form + When she fills out her Password + And she confirms her Password + And she submits the change password form + Then she sees the list of optional factors + When she selects Skip + Then she is redirected to the Root View + And she sees a table with her profile info + And the access_token is shown and not empty + And the id_token is shown and not empty + And the cell for the value of email is shown and contains her email + And the cell for the value of name is shown and contains her first name and last name + And the preferred_username claim is shown and matches Mary's email + \ No newline at end of file diff --git a/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/Features/4.2-SelfServiceRegistrationPasswordOptional.feature.cs b/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/Features/4.2-SelfServiceRegistrationPasswordOptional.feature.cs new file mode 100644 index 00000000..f53fc135 --- /dev/null +++ b/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/Features/4.2-SelfServiceRegistrationPasswordOptional.feature.cs @@ -0,0 +1,320 @@ +// ------------------------------------------------------------------------------ +// +// This code was generated by SpecFlow (https://www.specflow.org/). +// SpecFlow Version:3.9.0.0 +// SpecFlow Generator Version:3.9.0.0 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +// ------------------------------------------------------------------------------ +#region Designer generated code +#pragma warning disable +namespace embedded_auth_with_sdk.E2ETests.Features +{ + using TechTalk.SpecFlow; + using System; + using System.Linq; + + + [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "3.9.0.0")] + [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + public partial class _4_2SelfServiceRegistrationPasswordOptionalFeature : object, Xunit.IClassFixture<_4_2SelfServiceRegistrationPasswordOptionalFeature.FixtureData>, System.IDisposable + { + + private static TechTalk.SpecFlow.ITestRunner testRunner; + + private static string[] featureTags = ((string[])(null)); + + private Xunit.Abstractions.ITestOutputHelper _testOutputHelper; + +#line 1 "4.2-SelfServiceRegistrationPasswordOptional.feature" +#line hidden + + public _4_2SelfServiceRegistrationPasswordOptionalFeature(_4_2SelfServiceRegistrationPasswordOptionalFeature.FixtureData fixtureData, embedded_auth_with_sdk_E2ETests_XUnitAssemblyFixture assemblyFixture, Xunit.Abstractions.ITestOutputHelper testOutputHelper) + { + this._testOutputHelper = testOutputHelper; + this.TestInitialize(); + } + + public static void FeatureSetup() + { + testRunner = TechTalk.SpecFlow.TestRunnerManager.GetTestRunner(); + TechTalk.SpecFlow.FeatureInfo featureInfo = new TechTalk.SpecFlow.FeatureInfo(new System.Globalization.CultureInfo("en-US"), "Features", "4.2 Self Service Registration Password Optional", "User registeration scenario for password optional feature", ProgrammingLanguage.CSharp, featureTags); + testRunner.OnFeatureStart(featureInfo); + } + + public static void FeatureTearDown() + { + testRunner.OnFeatureEnd(); + testRunner = null; + } + + public void TestInitialize() + { + } + + public void TestTearDown() + { + testRunner.OnScenarioEnd(); + } + + public void ScenarioInitialize(TechTalk.SpecFlow.ScenarioInfo scenarioInfo) + { + testRunner.OnScenarioInitialize(scenarioInfo); + testRunner.ScenarioContext.ScenarioContainer.RegisterInstanceAs(_testOutputHelper); + } + + public void ScenarioStart() + { + testRunner.OnScenarioStart(); + } + + public void ScenarioCleanup() + { + testRunner.CollectScenarioErrors(); + } + + public virtual void FeatureBackground() + { +#line 5 +#line hidden +#line 6 + testRunner.Given("a Profile Enrollment policy defined assigning new users to the Everyone Group and" + + " by collecting \"First Name\", \"Last Name\", and \"Email\", is allowed and assigned t" + + "o a SPA, WEB APP or MOBILE application", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 7 + testRunner.And("\"Required before access is granted\" is selected for Email Verification under Prof" + + "ile Enrollment in Security > Profile Enrollment", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 8 + testRunner.And("configured Authenticators are Email (required) and Password (optional)", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 9 + testRunner.And("a user named \"Mary\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 10 + testRunner.And("Mary does not have an account in the org", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden + } + + void System.IDisposable.Dispose() + { + this.TestTearDown(); + } + + [Xunit.SkippableFactAttribute(DisplayName="4.2.1 Mary signs up for an account with required Email factor, then skips optiona" + + "l Password", Skip="Ignored")] + [Xunit.TraitAttribute("FeatureTitle", "4.2 Self Service Registration Password Optional")] + [Xunit.TraitAttribute("Description", "4.2.1 Mary signs up for an account with required Email factor, then skips optiona" + + "l Password")] + public void _4_2_1MarySignsUpForAnAccountWithRequiredEmailFactorThenSkipsOptionalPassword() + { + string[] tagsOfScenario = new string[] { + "ignore"}; + System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("4.2.1 Mary signs up for an account with required Email factor, then skips optiona" + + "l Password", null, tagsOfScenario, argumentsOfScenario, featureTags); +#line 13 + this.ScenarioInitialize(scenarioInfo); +#line hidden + if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 5 +this.FeatureBackground(); +#line hidden +#line 14 + testRunner.Given("Mary navigates to the Self Service Registration View", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 15 + testRunner.When("she fills out her First Name", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 16 + testRunner.And("she fills out her Last Name", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 17 + testRunner.And("she fills out her Email", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 18 + testRunner.And("she submits the registration form", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 19 + testRunner.Then("She sees a list of factors", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 20 + testRunner.When("she selects Email", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 21 + testRunner.And("she submits the select authenticator form", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 22 + testRunner.Then("she sees a page to input a code", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 23 + testRunner.When("she inputs the correct code from her email", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 24 + testRunner.Then("she sees the list of optional factors", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 25 + testRunner.When("she skips optional authenticators if prompted", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 26 + testRunner.Then("she is redirected to the Root View", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 27 + testRunner.And("she sees a table with her profile info", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 28 + testRunner.And("the access_token is shown and not empty", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 29 + testRunner.And("the id_token is shown and not empty", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 30 + testRunner.And("the cell for the value of email is shown and contains her email", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 31 + testRunner.And("the cell for the value of name is shown and contains her first name and last name" + + "", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 32 + testRunner.And("the preferred_username claim is shown and matches Mary\'s email", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden + } + this.ScenarioCleanup(); + } + + [Xunit.SkippableFactAttribute(DisplayName="4.2.2 Mary signs up for an account with required Email factor, then sets up optio" + + "nal Password", Skip="Ignored")] + [Xunit.TraitAttribute("FeatureTitle", "4.2 Self Service Registration Password Optional")] + [Xunit.TraitAttribute("Description", "4.2.2 Mary signs up for an account with required Email factor, then sets up optio" + + "nal Password")] + public void _4_2_2MarySignsUpForAnAccountWithRequiredEmailFactorThenSetsUpOptionalPassword() + { + string[] tagsOfScenario = new string[] { + "ignore"}; + System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); + TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("4.2.2 Mary signs up for an account with required Email factor, then sets up optio" + + "nal Password", null, tagsOfScenario, argumentsOfScenario, featureTags); +#line 35 + this.ScenarioInitialize(scenarioInfo); +#line hidden + if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) + { + testRunner.SkipScenario(); + } + else + { + this.ScenarioStart(); +#line 5 +this.FeatureBackground(); +#line hidden +#line 36 + testRunner.Given("Mary navigates to the Self Service Registration View", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 37 + testRunner.When("she fills out her First Name", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 38 + testRunner.And("she fills out her Last Name", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 39 + testRunner.And("she fills out her Email", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 40 + testRunner.And("she submits the registration form", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 41 + testRunner.Then("She sees a list of factors", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 42 + testRunner.When("she selects Email", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 43 + testRunner.And("she submits the select authenticator form", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 44 + testRunner.Then("she sees a page to input a code", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 45 + testRunner.When("she inputs the correct code from her email", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 46 + testRunner.Then("she sees the list of optional factors", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 47 + testRunner.When("she chooses password factor option", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 48 + testRunner.And("she submits the select authenticator form", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 49 + testRunner.Then("she sees the set new password form", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 50 + testRunner.When("she fills out her Password", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 51 + testRunner.And("she confirms her Password", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 52 + testRunner.And("she submits the change password form", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 53 + testRunner.Then("she sees the list of optional factors", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 54 + testRunner.When("she selects Skip", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line hidden +#line 55 + testRunner.Then("she is redirected to the Root View", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 56 + testRunner.And("she sees a table with her profile info", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 57 + testRunner.And("the access_token is shown and not empty", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 58 + testRunner.And("the id_token is shown and not empty", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 59 + testRunner.And("the cell for the value of email is shown and contains her email", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 60 + testRunner.And("the cell for the value of name is shown and contains her first name and last name" + + "", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 61 + testRunner.And("the preferred_username claim is shown and matches Mary\'s email", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden + } + this.ScenarioCleanup(); + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "3.9.0.0")] + [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + public class FixtureData : System.IDisposable + { + + public FixtureData() + { + _4_2SelfServiceRegistrationPasswordOptionalFeature.FeatureSetup(); + } + + void System.IDisposable.Dispose() + { + _4_2SelfServiceRegistrationPasswordOptionalFeature.FeatureTearDown(); + } + } + } +} +#pragma warning restore +#endregion diff --git a/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/Steps/_1_2LoginWithIdentifierFirstStepDefinitions.cs b/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/Steps/_1_2LoginWithIdentifierFirstStepDefinitions.cs new file mode 100644 index 00000000..1063c7e9 --- /dev/null +++ b/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/Steps/_1_2LoginWithIdentifierFirstStepDefinitions.cs @@ -0,0 +1,34 @@ +using System; +using TechTalk.SpecFlow; + +namespace embedded_auth_with_sdk.E2ETests.Steps +{ + [Binding] + public class _1_2LoginWithIdentifierFirstStepDefinitions + { + [Given(@"a Global Session Policy defines the Primary factor as Password / IDP / any factor allowed by app sign on rules")] + public void GivenAGlobalSessionPolicyDefinesThePrimaryFactorAsPasswordIDPAnyFactorAllowedByAppSignOnRules() + { + } + + [Given(@"the Global Session Policy does NOT require a second factor")] + public void GivenTheGlobalSessionPolicyDoesNOTRequireASecondFactor() + { + } + + [Given(@"a SPA, WEB APP or MOBILE with an Authentication Policy that is defined as Any (.*) factor")] + public void GivenASPAWEBAPPOrMOBILEWithAnAuthenticationPolicyThatIsDefinedAsAnyFactor(int p0) + { + } + + [Given(@"User Enumeration Prevention is set to ENABLED in Security > General")] + public void GivenUserEnumerationPreventionIsSetToENABLEDInSecurityGeneral() + { + } + + [Given(@"the list of Authenticators contains Email and Password is optional")] + public void GivenTheListOfAuthenticatorsContainsEmailAndPasswordIsOptional() + { + } + } +} diff --git a/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/Steps/_4_2SelfServiceRegistrationPasswordOptionalStepDefinitions.cs b/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/Steps/_4_2SelfServiceRegistrationPasswordOptionalStepDefinitions.cs new file mode 100644 index 00000000..a612f182 --- /dev/null +++ b/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/Steps/_4_2SelfServiceRegistrationPasswordOptionalStepDefinitions.cs @@ -0,0 +1,14 @@ +using System; +using TechTalk.SpecFlow; + +namespace embedded_auth_with_sdk.E2ETests.Steps +{ + [Binding] + public class _4_2SelfServiceRegistrationPasswordOptionalStepDefinitions + { + [Given(@"configured Authenticators are Email \(required\) and Password \(optional\)")] + public void GivenConfiguredAuthenticatorsAreEmailRequiredAndPasswordOptional() + { + } + } +} diff --git a/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/embedded-auth-with-sdk.E2ETests.csproj b/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/embedded-auth-with-sdk.E2ETests.csproj index fdf46abb..041c54e2 100644 --- a/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/embedded-auth-with-sdk.E2ETests.csproj +++ b/samples/samples-aspnet/embedded-auth-with-sdk/Okta.Idx.Sdk.E2ETests/embedded-auth-with-sdk.E2ETests.csproj @@ -31,7 +31,7 @@ - +