Exemple #1
0
        public void CanLoginLocallyAfterChangingEmail()
        {
            var firstEmail  = "*****@*****.**";
            var secondEmail = "*****@*****.**";
            var password    = "******";

            using (var site = new KeyHubWebDriver())
            {
                SiteUtil.CreateLocalAccount(site, firstEmail, password);

                using (var browser = BrowserUtil.GetBrowser())
                {
                    browser.Navigate().GoToUrl(site.UrlFor("/"));
                    SiteUtil.SubmitLoginForm(browser, firstEmail, password);

                    browser.Navigate().GoToUrl(site.UrlFor("/"));
                    browser.FindElementByCssSelector("a[href^='/Account']").Click();
                    browser.FindElementByCssSelector("a[href^='/Account/Edit']").Click();

                    var emailForm = browser.FindElementByCssSelector("#Email");
                    emailForm.Clear();
                    emailForm.SendKeys(secondEmail);
                    browser.FindElementByCssSelector("input[value='Save']").Click();

                    // Ensure the change saves by waiting for the browser to return to the account edit page
                    browser.FindElementByCssSelector("a[href^='/Account/Edit']");
                }

                using (var browser = BrowserUtil.GetBrowser())
                {
                    browser.Navigate().GoToUrl(site.UrlFor("/"));
                    SiteUtil.SubmitLoginForm(browser, secondEmail.ToUpper(), password);
                }
            }
        }
Exemple #2
0
        public void AdminShouldBeAbleToCreateUsers()
        {
            var username = "******";
            var password = "******";

            using (var site = new KeyHubWebDriver())
            {
                using (var browser = BrowserUtil.GetBrowser())
                {
                    browser.Navigate().GoToUrl(site.UrlFor("/Account/Create"));
                    SiteUtil.SubmitLoginForm(browser, "admin", "password");

                    browser.FindElementByCssSelector("#User_Email").SendKeys(username);
                    browser.FindElementByCssSelector("#User_Password").SendKeys(password);
                    browser.FindElementByCssSelector("#User_ConfirmPassword").SendKeys(password);
                    browser.FindElementByCssSelector("input[value='Save']").Click();
                    var successMessage = browser.FindElementByCssSelector(".success");
                    Assert.Contains("New user succesfully created", successMessage.Text);
                }

                using (var browser = BrowserUtil.GetBrowser())
                {
                    browser.Navigate().GoToUrl(site.UrlFor("/"));
                    SiteUtil.SubmitLoginForm(browser, "admin", "password");
                }
            }
        }
Exemple #3
0
        public void CanLoginLocallyAfterChangingPassword()
        {
            var email          = "*****@*****.**";
            var firstPassword  = "******";
            var secondPassword = "******";

            using (var site = new KeyHubWebDriver())
            {
                SiteUtil.CreateLocalAccount(site, email, firstPassword);

                using (var browser = BrowserUtil.GetBrowser())
                {
                    browser.Navigate().GoToUrl(site.UrlFor("/"));
                    SiteUtil.SubmitLoginForm(browser, email, firstPassword);
                    browser.Navigate().GoToUrl(site.UrlFor("/"));
                    browser.FindElementByCssSelector("a[href^='/Account']").Click();
                    browser.FindElementByCssSelector("a[href^='/Account/ChangePassword']").Click();

                    browser.FindElementByCssSelector("#OldPassword").SendKeys(firstPassword);
                    browser.FindElementByCssSelector("#NewPassword").SendKeys(secondPassword);
                    browser.FindElementByCssSelector("#ConfirmPassword").SendKeys(secondPassword);
                    browser.FindElementByCssSelector("input[type='submit']").Click();

                    // Ensure the change saves by waiting for the browser to return to the account edit page
                    browser.FindElementByCssSelector("a[href^='/Account/Edit']");
                }

                using (var browser = BrowserUtil.GetBrowser())
                {
                    browser.Navigate().GoToUrl(site.UrlFor("/"));
                    SiteUtil.SubmitLoginForm(browser, email, secondPassword);
                }
            }
        }
Exemple #4
0
        public void VendorCanRenameAndRemovePrivateKeys()
        {
            using (var site = new KeyHubWebDriver())
            {
                var scenario = new WithAVendorScenario();
                scenario.Setup(site);

                using (var browser = BrowserUtil.GetBrowser())
                {
                    browser.Navigate().GoToUrl(site.UrlFor("/"));
                    SiteUtil.SubmitLoginForm(browser, scenario.UserEmail, scenario.UserPassword);

                    var privateKeyName = VendorUtil.CreatePrivateKey(browser, scenario.VendorName);

                    var privateKeyRow = browser.FindElementByXPath("//td[contains(text(),'" + privateKeyName + "')]/ancestor::tr");
                    privateKeyRow.FindElement((By.CssSelector("a[href^='/PrivateKey/Edit']"))).Click();

                    var nameInput = browser.FindElementByCssSelector("input#PrivateKey_DisplayName");
                    nameInput.Clear();
                    nameInput.SendKeys("second name");
                    browser.FindElementByCssSelector("form[action^='/PrivateKey/Edit'] input[type='submit']").Click();

                    privateKeyRow = browser.FindElementByXPath("//td[contains(text(),'second name')]/ancestor::tr");

                    Assert.Equal(1, browser.FindElementsByCssSelector(".private-key-list").Count());
                    Assert.Equal(1, browser.FindElementsByCssSelector(".private-key-list tbody tr").Count());
                    privateKeyRow.FindElement((By.CssSelector("a[href^='/PrivateKey/Remove']"))).Click();

                    browser.FindElementByCssSelector("form[action^='/PrivateKey/Remove'] input[type='submit']").Click();

                    Assert.Equal(1, browser.FindElementsByCssSelector(".private-key-list").Count());
                    Assert.Equal(0, browser.FindElementsByCssSelector(".private-key-list tbody tr").Count());
                }
            }
        }
Exemple #5
0
        public void VendorCanEditAFeature()
        {
            using (var site = new KeyHubWebDriver())
            {
                var scenario = new WithAVendorScenario();
                scenario.Setup(site);

                using (var browser = BrowserUtil.GetBrowser())
                {
                    browser.Navigate().GoToUrl(site.UrlFor("/"));
                    SiteUtil.SubmitLoginForm(browser, scenario.UserEmail, scenario.UserPassword);

                    VendorUtil.CreateFeature(browser, "first feature", scenario.VendorName);

                    var featureRow = browser.FindElement(By.XPath("//td[contains(text(),'first feature')]/ancestor::tr"));
                    featureRow.FindElement(By.CssSelector("a[href^='/Feature/Edit']")).Click();

                    var nameInput = browser.FindElementByCssSelector("#Feature_FeatureName");
                    nameInput.Clear();
                    nameInput.SendKeys("second name");

                    browser.FindElementByCssSelector("form[action^='/Feature/Edit'] input[type='submit']").Click();
                    browser.FindElementByCssSelector(".success");

                    browser.FindElement(By.XPath("//td[contains(text(),'second name')]"));
                }
            }
        }
Exemple #6
0
        public void Setup(KeyHubWebDriver site, bool canDeleteManualDomainsOfLicense = true)
        {
            using (var browser = BrowserUtil.GetBrowser())
            {
                base.Setup(site);

                browser.Navigate().GoToUrl(site.UrlFor("/"));
                SiteUtil.SubmitLoginForm(browser, UserEmail, UserPassword);

                VendorUtil.CreatePrivateKey(browser, VendorName);

                VendorUtil.CreateFeature(browser, "first feature", VendorName);
                VendorUtil.CreateFeature(browser, "second feature", VendorName);

                VendorUtil.CreateSku(browser, "first sku", VendorName, "first feature", canDeleteManualDomainsOfLicense);
                VendorUtil.CreateSku(browser, "second sku", VendorName, "second feature", canDeleteManualDomainsOfLicense);

                //  Create a Customer
                var customerName = VendorUtil.CreateCustomer(browser);

                //  Create a License
                VendorUtil.CreateLicense(browser, "first sku", customerName);
                VendorUtil.CreateLicense(browser, "second sku", customerName);
            }
        }
        public void Setup(KeyHubWebDriver site, bool canDeleteManualDomainsOfLicense = true)
        {
            using (var browser = BrowserUtil.GetBrowser())
            {
                base.Setup(site);

                browser.Navigate().GoToUrl(site.UrlFor("/"));
                SiteUtil.SubmitLoginForm(browser, UserEmail, UserPassword);

                VendorUtil.CreatePrivateKey(browser, VendorName);

                VendorUtil.CreateFeature(browser, "first feature", VendorName);
                VendorUtil.CreateFeature(browser, "second feature", VendorName);

                VendorUtil.CreateSku(browser, "first sku", VendorName, "first feature", canDeleteManualDomainsOfLicense);
                VendorUtil.CreateSku(browser, "second sku", VendorName, "second feature", canDeleteManualDomainsOfLicense);

                //  Create a Customer
                var customerName = VendorUtil.CreateCustomer(browser);

                //  Create a License
                VendorUtil.CreateLicense(browser, "first sku", customerName);
                VendorUtil.CreateLicense(browser, "second sku", customerName);
            }
        }
Exemple #8
0
        private static void VendorManuallyCreatesTransaction(Action <RemoteWebDriver> vendorActionBeforeCreatingTransaction, Action <RemoteWebDriver> transactionSubmitHandler)
        {
            var vendorScenario = new WithAVendorDBScenario();
            var vendorEmail    = "*****@*****.**";
            var vendorPassword = "******";

            using (var site = new KeyHubWebDriver())
            {
                string editVendorUserUrl = null;

                SiteUtil.CreateLocalAccount(site, vendorEmail, vendorPassword, firstBrowser =>
                {
                    firstBrowser.FindElementByCssSelector("a[href='/Account/LogOff']");
                    firstBrowser.Navigate().GoToUrl(site.UrlFor("/Account"));

                    editVendorUserUrl =
                        firstBrowser.FindElementByCssSelector("a[href^='/Account/Edit']").GetAttribute("href");
                });

                //  Log in as admin to give the new vendor account vendor permissions
                using (var browser = BrowserUtil.GetBrowser())
                {
                    browser.Navigate().GoToUrl(site.UrlFor(editVendorUserUrl));

                    SiteUtil.SubmitLoginForm(browser, "admin", "password");

                    AdminUtil.CreateAccountRightsFor(browser, vendorEmail, ObjectTypes.Vendor, vendorScenario.VendorName);
                }

                using (var browser = BrowserUtil.GetBrowser())
                {
                    browser.Navigate().GoToUrl(site.UrlFor("/"));
                    SiteUtil.SubmitLoginForm(browser, vendorEmail, vendorPassword);

                    vendorActionBeforeCreatingTransaction(browser);

                    browser.Navigate().GoToUrl(site.UrlFor("/"));
                    browser.FindElementByCssSelector("a[href='/Transaction/Create']").Click();

                    SiteUtil.SetValueForChosenJQueryControlMulti(browser, "div#Transaction_SelectedSKUGuids_chzn",
                                                                 vendorScenario.SkuCode);

                    browser.FindElementByCssSelector("form[action^='/Transaction/Create'] input[type='submit']").Click();

                    transactionSubmitHandler(browser);

                    var appKeyValue = GetAppKeyFromTransactionCompletePage(browser);

                    LicenseValidatorTests.AssertRemoteValidationCheckPasses(
                        site, "example.com",
                        appKeyValue,
                        vendorScenario.FeatureCode,
                        vendorScenario.PublicKeyXml);
                }
            }
        }
Exemple #9
0
        public void CanManageVendorCredentials()
        {
            using (var site = new KeyHubWebDriver())
            {
                using (var browser = BrowserUtil.GetBrowser())
                {
                    //  Log in as pre-created admin user
                    browser.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(3));
                    browser.Navigate().GoToUrl(site.UrlFor("/"));
                    SiteUtil.SubmitLoginForm(browser, "admin", "password");

                    //  Create a vendor
                    AdminUtil.CreateVendor(browser);

                    //  Create a VendorCredential for the vendor
                    browser.FindElementByCssSelector("a[href^='/VendorCredential/Create']").Click();

                    var firstVendorCredentialName  = "first vendor secret name";
                    var firstVendorCredentialValue = "vendor secret shared secret";

                    FillVendorCredentialForm(browser, firstVendorCredentialName, firstVendorCredentialValue);
                    browser.FindElementByCssSelector("form[action^='/VendorCredential/Create'] input[type=submit]").Click();

                    //  Make sure the VendorCredential was created, and edit it.
                    var editButton = browser.FindElementByCssSelector("a[href^='/VendorCredential/Edit']");
                    Assert.Contains(firstVendorCredentialName, browser.PageSource);
                    editButton.Click();

                    AssertVendorCredentialFormValues(browser, firstVendorCredentialName, firstVendorCredentialValue);
                    var secondVendorCredentialName  = "second vendor secret name";
                    var secondVendorCredentialValue = "second vendor secret";
                    FillVendorCredentialForm(browser, secondVendorCredentialName, secondVendorCredentialValue);
                    browser.FindElementByCssSelector("form[action^='/VendorCredential/Edit'] input[type=submit]").Click();

                    //  Check the VendorCredential edit page to ensure the edit saved
                    editButton = browser.FindElementByCssSelector("a[href^='/VendorCredential/Edit']");
                    Assert.DoesNotContain(firstVendorCredentialName, browser.PageSource);
                    Assert.Contains(secondVendorCredentialValue, browser.PageSource);
                    editButton.Click();

                    AssertVendorCredentialFormValues(browser, secondVendorCredentialName, secondVendorCredentialValue);

                    //  Return to the Vendor edit page
                    browser.FindElementByCssSelector("a[href^='/Vendor/Details']").Click();

                    //  Remove the VendorCredential
                    var removeButton = browser.FindElementByCssSelector("a[href^='/VendorCredential/Remove']");
                    removeButton.Click();
                    browser.FindElementByCssSelector("form[action^='/VendorCredential/Remove'] input[type=submit]").Click();

                    browser.FindElementByCssSelector(".success");
                    Assert.DoesNotContain(firstVendorCredentialName, browser.PageSource);
                    Assert.DoesNotContain(secondVendorCredentialValue, browser.PageSource);
                }
            }
        }
Exemple #10
0
        public void CanValidateLicenseRemotely()
        {
            var domain = "foobar.com";

            var scenario = new LicenseValidationScenario();

            using (var site = new KeyHubWebDriver())
            {
                AssertRemoteValidationCheckPasses(site, domain, scenario.AppKey, scenario.FeatureCode, scenario.PublicKeyXml);
            }
        }
Exemple #11
0
        public void VendorCanManuallyCreateLicensedApplicationAndChangeItsSkus()
        {
            var vendorAndCustomerScenario = new VendorWithALicensedCustomerScenario();

            using (var site = new KeyHubWebDriver())
            {
                vendorAndCustomerScenario.Setup(site);

                var firstCustomerAppName  = "customerApp.name1";
                var secondCustomerAppName = "customerApp.name2";

                using (var browser = BrowserUtil.GetBrowser())
                {
                    browser.Navigate().GoToUrl(site.UrlFor("/"));
                    SiteUtil.SubmitLoginForm(browser, vendorAndCustomerScenario.UserEmail, vendorAndCustomerScenario.UserPassword);
                    //  Create a CustomerApp / Licensed Application
                    browser.Navigate().GoToUrl(site.UrlFor("/"));
                    browser.FindElementByCssSelector("a[href='/CustomerApp']").Click();
                    browser.FindElementByCssSelector("a[href='/CustomerApp/Create']").Click();
                    browser.FindElementByCssSelector("input#ApplicationName").SendKeys(firstCustomerAppName);
                    SiteUtil.SetValueForChosenJQueryControlMulti(browser, "#SelectedLicenseGUIDs_chzn", "first sku");
                    browser.FindElementByCssSelector("form[action='/CustomerApp/Create'] input[type=submit]").Click();
                    browser.FindElementByCssSelector(".success");

                    AssertApplicationNameIs(browser, firstCustomerAppName);
                    AssertApplicationSkuIs(browser, "first sku");

                    //  Rename the customer app
                    browser.FindElementByCssSelector("a[href^='/CustomerApp/Edit']").Click();
                    var nameElement = browser.FindElementByCssSelector("input#ApplicationName");
                    nameElement.Clear();
                    nameElement.SendKeys(secondCustomerAppName);
                    browser.FindElementByCssSelector("form[action^='/CustomerApp/Edit'] input[type='submit']").Click();
                    browser.FindElementByCssSelector(".success");

                    AssertApplicationNameIs(browser, secondCustomerAppName);

                    // Switch licenses on the customer app
                    browser.FindElementByCssSelector("a[href^='/CustomerApp/Edit']").Click();
                    SiteUtil.SetValueForChosenJQueryControlMulti(browser, "#SelectedLicenseGUIDs_chzn", "second sku", clearExisting: true);
                    browser.FindElementByCssSelector("form[action^='/CustomerApp/Edit'] input[type='submit']").Click();
                    browser.FindElementByCssSelector(".success");

                    AssertApplicationSkuIs(browser, "second sku");

                    // Remove the customer app
                    browser.FindElementByCssSelector("a[href^='/CustomerApp/Remove']").Click();
                    browser.FindElementByCssSelector("form[action^='/CustomerApp/Remove'] input[type='submit']").Click();
                    browser.FindElementByCssSelector(".success");

                    Assert.Equal(0, browser.FindElementsByCssSelector("a[href^='/CustomerApp/Remove']").Count());
                }
            }
        }
Exemple #12
0
        public void ShouldGiveWarningMessageWhenUserRegistersEmailAlreadyInUse()
        {
            var email    = ConfigurationManager.AppSettings.Get("googleTestEmail");
            var password = ConfigurationManager.AppSettings.Get("googleTestPassword");

            using (var site = new KeyHubWebDriver())
            {
                SiteUtil.CreateLocalAccount(site, email, password);
                SiteUtil.CreateLocalAccount(site, email, password, browser =>
                {
                    var errorText = browser.FindElementByCssSelector(".validation-summary-errors li").Text;
                    Assert.Contains("The email address registered is already in use", errorText);
                });
            }
        }
Exemple #13
0
        public void VendorCanManageDomainLicenses()
        {
            using (var site = new KeyHubWebDriver())
            {
                var scenario = new VendorWithALicensedCustomerScenario();
                scenario.Setup(site, canDeleteManualDomainsOfLicense: true);

                using (var browser = BrowserUtil.GetBrowser())
                {
                    //  Create a license
                    browser.Navigate().GoToUrl(site.UrlFor("/"));
                    SiteUtil.SubmitLoginForm(browser, scenario.UserEmail, scenario.UserPassword);

                    browser.FindElementByCssSelector("a[href='/License']").Click();
                    browser.FindElementByCssSelector("a[href^='/License/Details']").Click();

                    browser.FindElementByCssSelector("a[href^='/DomainLicense/Create']").Click();
                    browser.FindElementByCssSelector("input#DomainName").SendKeys("example.com");
                    browser.FindElementByCssSelector("form[action^='/DomainLicense/Create'] input[type='submit']").Click();
                    browser.FindElementByCssSelector(".success");

                    var licensedDomains = GetLicensedDomains(browser);
                    Assert.Contains("example.com", licensedDomains);

                    //  Edit a license
                    browser.FindElementByCssSelector("a[href^='/DomainLicense/Edit']").Click();
                    IWebElement domainNameInput = browser.FindElementByCssSelector("input#DomainName");
                    domainNameInput.Clear();
                    domainNameInput.SendKeys("example.org");
                    browser.FindElementByCssSelector("form[action^='/DomainLicense/Edit'] input[type='submit']").Click();
                    browser.FindElementByCssSelector(".success");
                    licensedDomains = GetLicensedDomains(browser);
                    Assert.Contains("example.org", licensedDomains);
                    Assert.DoesNotContain("example.com", licensedDomains);

                    //  Delete a license
                    browser.FindElementByCssSelector("a[href^='/DomainLicense/Remove']").Click();
                    browser.FindElementByCssSelector("form[action^='/DomainLicense/Remove'] input[type='submit']").Click();
                    browser.FindElementByCssSelector(".success");

                    licensedDomains = GetLicensedDomains(browser);
                    Assert.Equal(0, licensedDomains.Count());
                }
            }
        }
Exemple #14
0
        public void AdminShouldBeAbleToAddAndRemoveUserRights()
        {
            using (var site = new KeyHubWebDriver())
            {
                string userEmail = "*****@*****.**";

                using (var browser = BrowserUtil.GetBrowser())
                {
                    browser.Navigate().GoToUrl(site.UrlFor("/"));
                    browser.FindElementByCssSelector("a[href^='/Account/Register']").Click();
                    SiteUtil.SubmitRegistrationForm(browser, userEmail, "password");
                    SiteUtil.WaitUntilUserIsLoggedIn(browser);

                    browser.FindElementByCssSelector("a[href^='/Account']").Click();
                    browser.FindElementByCssSelector("a[href^='/Account/Edit']").GetAttribute("href");
                }

                using (var browser = BrowserUtil.GetBrowser())
                {
                    browser.Navigate().GoToUrl(site.UrlFor("/"));
                    SiteUtil.SubmitLoginForm(browser, "admin", "password");

                    var customerName = VendorUtil.CreateCustomer(browser);

                    AdminUtil.CreateAccountRightsFor(browser, userEmail, ObjectTypes.Customer, customerName);

                    browser.FindElementByCssSelector(".account-rights-table");
                    var accountRights = browser.FindElementsByCssSelector(".account-rights-table tbody tr");

                    Assert.Equal(1, accountRights.Count());
                    Assert.Contains(customerName, accountRights.First().Text);

                    accountRights.First().FindElement(By.CssSelector("a[href^='/AccountRights/Delete']")).Click();

                    browser.FindElementByCssSelector("input[value='Confirm Delete']").Click();

                    new WebDriverWait(browser, TimeSpan.FromSeconds(2)).Until(waitBrowser =>
                    {
                        return(browser.FindElementByCssSelector(".account-rights-table") != null &&
                               browser.FindElementsByCssSelector(".account-rights-table tbody tr").Count() == 0);
                    });
                }
            }
        }
Exemple #15
0
        public static void AssertRemoteValidationCheckPasses(KeyHubWebDriver site,
                                                             string domain,
                                                             Guid appKey,
                                                             Guid featureCode,
                                                             string vendorPublicKey)
        {
            var licensingUrl = site.UrlFor("/api/LicenseValidation");

            var licensesAndSignature = new LicenseDownloader().RequestLicenses(licensingUrl, appKey,
                                                                               new Dictionary <string, List <Guid> >()
            {
                { domain, new List <Guid>()
                  {
                      featureCode
                  } }
            });

            var newLicenses = new LicenseDeserializer().DeserializeAll(vendorPublicKey, licensesAndSignature);

            DomainLicense license = newLicenses[domain].Single();

            Assert.Equal(license.Domain, domain);
            Assert.Contains(featureCode, license.Features);
        }
Exemple #16
0
        public void CanUseALicensePurchasedViaEJunkie()
        {
            var vendorScenario = new WithAVendorDBScenario();
            var payerEmail     = "*****@*****.**";

            var customerEmail    = "*****@*****.**";
            var customerPassword = "******";

            var smtpServer = SimpleSmtpServer.Start(25);

            try
            {
                using (var site = new KeyHubWebDriver())
                {
                    using (var client = new WebClient())
                    {
                        var uploadVariables = new NameValueCollection();

                        uploadVariables.Add("handshake", vendorScenario.VendorCredential);
                        uploadVariables.Add("txn_id", GetRandomString());
                        uploadVariables.Add("payment_status", "Completed");
                        uploadVariables.Add("payment_date", "02:51:26 Jul 18, 2012 MST");
                        uploadVariables.Add("num_cart_items", "0");
                        uploadVariables.Add("payer_name", "payerName");
                        uploadVariables.Add("payer_email", payerEmail);

                        uploadVariables.Add("num_cart_items", "1");
                        uploadVariables.Add("item_name1", "item name");
                        uploadVariables.Add("item_number1", vendorScenario.SkuCode);
                        uploadVariables.Add("mc_gross_1", "350");
                        uploadVariables.Add("quantity1", "1");

                        client.UploadValues(site.UrlFor("Api/TransactionByIpn/" + vendorScenario.VendorId), uploadVariables);
                    }

                    var email = smtpServer.ReceivedEmail.Single();
                    Assert.Equal(payerEmail, email.ToAddresses.Single().Address);

                    var emailBody      = Encoding.ASCII.GetString(Convert.FromBase64String(email.MessageParts.Single().BodyData));
                    var emailLinkMatch = Regex.Match(emailBody, @"\s(http[^\s]+)\s", RegexOptions.Multiline | RegexOptions.IgnoreCase);

                    Assert.True(emailLinkMatch.Success, "Did not find followup link in email body: " + emailBody);

                    var emailLink = emailLinkMatch.Groups[1].Value;

                    using (var browser = BrowserUtil.GetBrowser())
                    {
                        browser.Navigate().GoToUrl(emailLink);

                        browser.FindElementByCssSelector("a[href^='/Transaction/Checkout']").Click();

                        browser.FindElementByCssSelector("a[href^='/Account/Register']").Click();

                        SiteUtil.SubmitRegistrationForm(browser, customerEmail, customerPassword);
                        SiteUtil.WaitUntilUserIsLoggedIn(browser);

                        SubmitTransactionCheckoutFormWithNewCustomer(browser);

                        var appKeyValue = GetAppKeyFromTransactionCompletePage(browser);

                        LicenseValidatorTests.AssertRemoteValidationCheckPasses(
                            site, "example.com",
                            appKeyValue,
                            vendorScenario.FeatureCode,
                            vendorScenario.PublicKeyXml);
                    }
                }
            }
            finally
            {
                smtpServer.Stop();
            }
        }
Exemple #17
0
        public void CanRegisterLocallyThenAssociateAndDisassociate3rdPartyLogin()
        {
            var email    = ConfigurationManager.AppSettings.Get("googleTestEmail");
            var password = ConfigurationManager.AppSettings.Get("googleTestPassword");

            using (var site = new KeyHubWebDriver())
            {
                SiteUtil.CreateLocalAccount(site, email, password);

                int expectedUserID;

                using (var browser = BrowserUtil.GetBrowser())
                {
                    browser.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5));

                    browser.Navigate().GoToUrl(site.UrlFor("/Account/Login"));
                    browser.FindElementByCssSelector("input[name=provider][value=Google]").Click();

                    FillGoogleLoginForm(browser, email, password);

                    var errorText = browser.FindElementByCssSelector(".error").Text;
                    Assert.Contains("The email address used to login is already in use", errorText);

                    browser.Navigate().GoToUrl(site.UrlFor("/"));
                    SiteUtil.SubmitLoginForm(browser, email, password);

                    expectedUserID = GetCurrentUserId(browser);

                    browser.FindElementByCssSelector("a[href='/Account']").Click();
                    browser.FindElementByCssSelector("a[href='/Account/LinkAccount']").Click();

                    browser.Navigate().GoToUrl(site.UrlFor("/Account/LinkAccount"));
                    Console.WriteLine("Page is " + browser.Url);
                    browser.FindElementByCssSelector("input[name=provider][value=Google]").Click();

                    var successText = browser.FindElementByCssSelector(".success").Text;
                    Assert.Contains("Your google login has been linked", successText);
                }

                using (var browser = BrowserUtil.GetBrowser())
                {
                    browser.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5));

                    browser.Navigate().GoToUrl(site.UrlFor("/"));
                    browser.FindElementByCssSelector("input[type='submit'][value='Google']").Click();
                    FillGoogleLoginForm(browser, email, password);
                    SiteUtil.WaitUntilUserIsLoggedIn(browser);

                    Assert.Equal(expectedUserID, GetCurrentUserId(browser));

                    browser.FindElementByCssSelector("a[href='/Account']").Click();
                    browser.FindElementByCssSelector("a[href='/Account/LinkAccount']").Click();
                    browser.FindElementByCssSelector("a[href^='/Account/UnlinkLogin']").Click();
                    browser.FindElementByCssSelector("form[action^='/Account/UnlinkLogin'] input[type='submit']").Click();

                    var successText = browser.FindElementByCssSelector(".success").Text;
                    Assert.Contains("Your Google login has been unlinked", successText);
                }

                using (var browser = BrowserUtil.GetBrowser())
                {
                    browser.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5));

                    browser.Navigate().GoToUrl(site.UrlFor("/"));
                    browser.FindElementByCssSelector("input[type='submit'][value='Google']").Click();
                    FillGoogleLoginForm(browser, email, password);
                    var errorText = browser.FindElementByCssSelector(".error").Text;
                    Assert.Contains("The email address used to login is already in use", errorText);
                }
            }
        }