public override IEnumerator <WebTestRequest> GetRequestEnumerator() { //Upload a new package. string packageId = this.Name + DateTime.Now.Ticks.ToString(); string version = "1.0.0"; AssertAndValidationHelper.UploadNewPackageAndVerify(packageId, version); //Do initial login to be able to perform package management. WebTestRequest logonGet = AssertAndValidationHelper.GetLogonGetRequest(); yield return(logonGet); logonGet = null; WebTestRequest logonPost = AssertAndValidationHelper.GetLogonPostRequest(this); yield return(logonPost); logonPost = null; WebTestRequest managePackagesRequest = new WebTestRequest(UrlHelper.ManageMyPackagesUrl); //Rule to check manage my packages contains a html link to the newly uploaded package. ValidationRuleFindText newPackageIdValidationRule = AssertAndValidationHelper.GetValidationRuleForFindText(packageId); managePackagesRequest.ValidateResponse += new EventHandler <ValidationEventArgs>(newPackageIdValidationRule.Validate); yield return(managePackagesRequest); managePackagesRequest = null; }
public override IEnumerator <WebTestRequest> GetRequestEnumerator() { WebTestRequest registerPageRequest = AssertAndValidationHelper.GetHttpRequestForUrl(UrlHelper.LogonPageUrl); yield return(registerPageRequest); WebTestRequest registerPagePostRequest = new WebTestRequest(UrlHelper.RegisterPageUrl); registerPagePostRequest.Method = "POST"; registerPagePostRequest.ExpectedResponseUrl = UrlHelper.RegistrationPendingPageUrl; //create a form and set the UserName, Email and password as form post parameters. //We just need to set some unique user name and Email. FormPostHttpBody registerNewUserFormPost = new FormPostHttpBody(); registerNewUserFormPost.FormPostParameters.Add("__RequestVerificationToken", Context["$HIDDEN1.__RequestVerificationToken"].ToString()); registerNewUserFormPost.FormPostParameters.Add("LinkingAccount", "false"); registerNewUserFormPost.FormPostParameters.Add(Constants.EmailAddressFormField, DateTime.Now.Ticks + "@live.com"); //add a dummy mail account. registerNewUserFormPost.FormPostParameters.Add(Constants.UserNameFormField, DateTime.Now.Ticks + "NewAccount"); registerNewUserFormPost.FormPostParameters.Add(Constants.RegisterPasswordFormField, "xxxxxxxx"); registerPagePostRequest.Body = registerNewUserFormPost; // Validate the response to make sure that it has the confirmation text in it. var pendingConfirmationTextRule = AssertAndValidationHelper.GetValidationRuleForFindText(Constants.RegisterNewUserConfirmationText); registerPagePostRequest.ValidateResponse += pendingConfirmationTextRule.Validate; yield return(registerPagePostRequest); }
public override IEnumerator <WebTestRequest> GetRequestEnumerator() { //run this test only if read-only mode is set. This is to avoid false failures while doing Run all tests locally. if (EnvironmentSettings.ReadOnlyMode.Equals("True", StringComparison.OrdinalIgnoreCase)) { var registerPageRequest = AssertAndValidationHelper.GetHttpRequestForUrl(UrlHelper.LogonPageUrl); yield return(registerPageRequest); var registerPagePostRequest = new WebTestRequest(UrlHelper.RegisterPageUrl); registerPagePostRequest.Method = "POST"; registerPagePostRequest.ExpectedResponseUrl = UrlHelper.RegistrationPendingPageUrl; // Create a form and set the UserName, Email and password as form post parameters. // We just need to set some unique user name and Email. var registerNewUserFormPost = new FormPostHttpBody(); registerNewUserFormPost.FormPostParameters.Add("__RequestVerificationToken", Context["$HIDDEN1.__RequestVerificationToken"].ToString()); registerNewUserFormPost.FormPostParameters.Add("LinkingAccount", "false"); registerNewUserFormPost.FormPostParameters.Add(Constants.EmailAddressFormField, DateTime.Now.Ticks + "@live.com"); //add a dummy mail account. This will be fixed once we incorporate the logic to delete user. registerNewUserFormPost.FormPostParameters.Add(Constants.UserNameFormField, DateTime.Now.Ticks + "NewAccount"); registerNewUserFormPost.FormPostParameters.Add(Constants.RegisterPasswordFormField, "xxXxx1xx"); registerPagePostRequest.Body = registerNewUserFormPost; registerPagePostRequest.ExpectedHttpStatusCode = 503; // Validate the response to make sure that it shows the error message for read-only mode. var readOnlyModeTextRule = AssertAndValidationHelper.GetValidationRuleForFindText(Constants.ReadOnlyModeError); registerPagePostRequest.ValidateResponse += readOnlyModeTextRule.Validate; yield return(registerPagePostRequest); } }
public override IEnumerator <WebTestRequest> GetRequestEnumerator() { // Send a request to home page and check for default home page text. var homePageRequest = new WebTestRequest(UrlHelper.BaseUrl); var homePageTextValidationRule = AssertAndValidationHelper.GetValidationRuleForFindText(Constants.HomePageText); homePageRequest.ValidateResponse += homePageTextValidationRule.Validate; yield return(homePageRequest); }
public override IEnumerator <WebTestRequest> GetRequestEnumerator() { //Upload a new package. string packageId = this.Name + DateTime.Now.Ticks.ToString(); string version = "1.0.0"; AssertAndValidationHelper.UploadNewPackageAndVerify(packageId, version); //Do initial login to be able to contact owner. WebTestRequest logonGet = AssertAndValidationHelper.GetLogonGetRequest(); yield return(logonGet); logonGet = null; WebTestRequest logonPost = AssertAndValidationHelper.GetLogonPostRequest(this); yield return(logonPost); logonPost = null; WebTestRequest conactOwnerRequest = AssertAndValidationHelper.GetHttpRequestForUrl(UrlHelper.GetContactOwnerPageUrl(packageId)); yield return(conactOwnerRequest); conactOwnerRequest = null; WebTestRequest conactOwnerPostRequest = new WebTestRequest(UrlHelper.GetContactOwnerPageUrl(packageId)); conactOwnerPostRequest.Method = "POST"; //once the listing is done, it should return back to the packages page. conactOwnerPostRequest.ExpectedResponseUrl = UrlHelper.GetPackagePageUrl(packageId, version); FormPostHttpBody contactOwnerRequestBody = new FormPostHttpBody(); contactOwnerRequestBody.FormPostParameters.Add("__RequestVerificationToken", this.Context["$HIDDEN1.__RequestVerificationToken"].ToString()); contactOwnerRequestBody.FormPostParameters.Add("Message", "Test"); conactOwnerPostRequest.Body = contactOwnerRequestBody; //Make sure that the package page shows the message saying that the mail has been sent. ValidationRuleFindText findTextRule = AssertAndValidationHelper.GetValidationRuleForFindText(Constants.ContactOwnersText + packageId); conactOwnerPostRequest.ValidateResponse += new EventHandler <ValidationEventArgs>(findTextRule.Validate); yield return(conactOwnerPostRequest); conactOwnerPostRequest = null; //Wait for a 30 sec to make sure that the mail reaches properly. System.Threading.Thread.Sleep(30 * 1000); //Cross check with the pop3 client to check if the message actually has been received. string subject = string.Empty; Assert.IsTrue(MailHelper.IsMailSentForContactOwner(packageId, out subject), "Contact owners message not sent to the owner properly. Actual subject : {0}", subject); }
public override IEnumerator <WebTestRequest> GetRequestEnumerator() { // Use a predefined test package. var packageId = Constants.TestPackageId; var packagePageRequest = new WebTestRequest(UrlHelper.BaseUrl + @"/Packages/" + packageId); // Rule to check if the title contains the package id and the latest stable version of the package. var packageTitleValidationRule = AssertAndValidationHelper.GetValidationRuleForFindText(packageId + " " + ClientSdkHelper.GetLatestStableVersion(packageId)); packagePageRequest.ValidateResponse += packageTitleValidationRule.Validate; yield return(packagePageRequest); }
public override IEnumerator <WebTestRequest> GetRequestEnumerator() { ExtractHiddenFields defaultExtractionRule = AssertAndValidationHelper.GetDefaultExtractHiddenFields(); //Do initial login WebTestRequest logonGet = AssertAndValidationHelper.GetLogonGetRequest(); yield return(logonGet); logonGet = null; WebTestRequest logonPost = AssertAndValidationHelper.GetLogonPostRequest(this); yield return(logonPost); logonPost = null; WebTestRequest uploadRequest = AssertAndValidationHelper.GetHttpRequestForUrl(UrlHelper.UploadPageUrl); yield return(uploadRequest); uploadRequest = null; //Upload a new package. string packageId = this.Name + DateTime.Now.Ticks.ToString(); string version = "1.0.0"; string minClientVersion = "2.3"; string packageFullPath = PackageCreationHelper.CreatePackage(packageId, version, minClientVersion); //Do initial login to be able to perform package management. logonGet = AssertAndValidationHelper.GetLogonGetRequest(); yield return(logonGet); logonGet = null; logonPost = AssertAndValidationHelper.GetLogonPostRequest(this); yield return(logonPost); logonPost = null; System.Threading.Thread.Sleep(60000); WebTestRequest packageRequest = new WebTestRequest(UrlHelper.GetPackagePageUrl(packageId)); //Rule to check manage my packages contains a html link to the newly uploaded package. ValidationRuleFindText requiredMinVersionValidationRule = AssertAndValidationHelper.GetValidationRuleForFindText(minClientVersion); packageRequest.ValidateResponse += new EventHandler <ValidationEventArgs>(requiredMinVersionValidationRule.Validate); yield return(packageRequest); packageRequest = null; }
public override IEnumerator <WebTestRequest> GetRequestEnumerator() { //send a request to home page and check for default home page text. var pageRequest = new WebTestRequest(UrlHelper.BaseUrl); var homePageTextValidationRuleLogo = AssertAndValidationHelper.GetValidationRuleForFindText(@"<a title="".NET Foundation"" href=""http://www.dotnetfoundation.org""><img src=""/Content/Logos/dnf.png"" alt="".NET Foundation"" /></a>"); var homePageTextValidationRuleCopyright = AssertAndValidationHelper.GetValidationRuleForFindText(@"© 2015 .NET Foundation"); var homePageTextValidationRuleTOU = AssertAndValidationHelper.GetValidationRuleForFindText(@"<a href=""/policies/Terms"">Terms of Use</a>"); var homePageTextValidationRulePrivacy = AssertAndValidationHelper.GetValidationRuleForFindText(@"<a href=""/policies/Privacy"">Privacy Policy</a>"); pageRequest.ValidateResponse += homePageTextValidationRuleLogo.Validate; pageRequest.ValidateResponse += homePageTextValidationRuleCopyright.Validate; pageRequest.ValidateResponse += homePageTextValidationRuleTOU.Validate; pageRequest.ValidateResponse += homePageTextValidationRulePrivacy.Validate; yield return(pageRequest); }
public override IEnumerator<WebTestRequest> GetRequestEnumerator() { ExtractHiddenFields defaultExtractionRule = AssertAndValidationHelper.GetDefaultExtractHiddenFields(); //Do initial login WebTestRequest logonGet = AssertAndValidationHelper.GetLogonGetRequest(); yield return logonGet; logonGet = null; WebTestRequest logonPost = AssertAndValidationHelper.GetLogonPostRequest(this); yield return logonPost; logonPost = null; WebTestRequest uploadRequest = AssertAndValidationHelper.GetHttpRequestForUrl(UrlHelper.UploadPageUrl); yield return uploadRequest; uploadRequest = null; string packageId = DateTime.Now.Ticks.ToString(); string packageFullPath = PackageCreationHelper.CreatePackage(packageId); WebTestRequest uploadPostRequest = AssertAndValidationHelper.GetUploadPostRequestForPackage(this, packageFullPath); yield return uploadPostRequest; uploadPostRequest = null; WebTestRequest verifyUploadPostRequest = AssertAndValidationHelper.GetVerifyPackagePostRequestForPackage(this, packageId, "1.0.0"); yield return verifyUploadPostRequest; verifyUploadPostRequest = null; System.Threading.Thread.Sleep(60000); WebTestRequest packageRequest = new WebTestRequest(UrlHelper.GetPackagePageUrl(packageId)); ValidationRuleFindText findTextRule = AssertAndValidationHelper.GetValidationRuleForFindText("Contact Us"); packageRequest.ValidateResponse += new EventHandler<ValidationEventArgs>(findTextRule.Validate); yield return packageRequest; packageRequest = null; // Log off WebTestRequest logOffGet = AssertAndValidationHelper.GetLogOffGetRequest(); yield return logOffGet; logOffGet = null; packageRequest = new WebTestRequest(UrlHelper.GetPackagePageUrl(packageId)); //Rule to check manage my packages contains a html link to the newly uploaded package. ValidationRuleFindText reportAbuseValidationRule = AssertAndValidationHelper.GetValidationRuleForFindText("Report Abuse"); packageRequest.ValidateResponse += new EventHandler<ValidationEventArgs>(reportAbuseValidationRule.Validate); yield return packageRequest; packageRequest = null; }
public override IEnumerator <WebTestRequest> GetRequestEnumerator() { //Do initial login WebTestRequest logonGet = AssertAndValidationHelper.GetLogonGetRequest(); yield return(logonGet); WebTestRequest logonPostRequest = AssertAndValidationHelper.GetLogonPostRequest(this); logonPostRequest.ExpectedHttpStatusCode = 503; var readOnlyModeTextRule = AssertAndValidationHelper.GetValidationRuleForFindText(Constants.ReadOnlyModeError); logonPostRequest.ValidateResponse += readOnlyModeTextRule.Validate; yield return(logonPostRequest); }
public override IEnumerator <WebTestRequest> GetRequestEnumerator() { var statsPageRequest = new WebTestRequest(UrlHelper.StatsPageUrl); // Checks for the presence of a link to jquery package. It is harded to Jquery for now as there is no API exposed for stats // and also Jquery is going to be one of the top 10 for now. var jQueryPackageValidationRule = AssertAndValidationHelper.GetValidationRuleForHtmlTagInnerText(HtmlTextWriterTag.A.ToString(), HtmlTextWriterAttribute.Href.ToString(), "/packages/EntityFramework/", "EntityFramework"); statsPageRequest.ValidateResponse += jQueryPackageValidationRule.Validate; // Validation rule to check for the default text in stats page. var statsPageDefaultTextValidationRule = AssertAndValidationHelper.GetValidationRuleForFindText(Constants.StatsPageDefaultText); statsPageRequest.ValidateResponse += statsPageDefaultTextValidationRule.Validate; yield return(statsPageRequest); }
public override IEnumerator <WebTestRequest> GetRequestEnumerator() { var statsPageRequest = new WebTestRequest(UrlHelper.StatsPageUrl); // Checks for the presence of the rank element. This means there is at least one package in the list. var validationRule = AssertAndValidationHelper.GetValidationRuleForFindText( @"<td class=""statistics-rank"">1</td>"); statsPageRequest.ValidateResponse += validationRule.Validate; // Validation rule to check for the default text in stats page. var statsPageDefaultTextValidationRule = AssertAndValidationHelper.GetValidationRuleForFindText(Constants.StatsPageDefaultText); statsPageRequest.ValidateResponse += statsPageDefaultTextValidationRule.Validate; yield return(statsPageRequest); }
public override IEnumerator <WebTestRequest> GetRequestEnumerator() { // Run this test only if read-only mode is set. This is to avoid false failures while doing Run all tests locally. if (EnvironmentSettings.ReadOnlyMode.Equals("True", StringComparison.OrdinalIgnoreCase)) { // Do initial login to be able to perform package management. var logonGet = AssertAndValidationHelper.GetLogonGetRequest(); yield return(logonGet); var logonPost = AssertAndValidationHelper.GetLogonPostRequest(this); yield return(logonPost); var accountPageRequest = new WebTestRequest(UrlHelper.AccountPageUrl); var extractionRule1 = AssertAndValidationHelper.GetDefaultExtractHiddenFields(); accountPageRequest.ExtractValues += extractionRule1.Extract; yield return(accountPageRequest); var unsubscribeRequest = new WebTestRequest(UrlHelper.AccountUnscribeUrl); unsubscribeRequest.Method = "POST"; unsubscribeRequest.ExpectedHttpStatusCode = 503; var unsubscribeRequestBody = new FormPostHttpBody(); unsubscribeRequestBody.FormPostParameters.Add("__RequestVerificationToken", Context["$HIDDEN1.__RequestVerificationToken"].ToString()); unsubscribeRequestBody.FormPostParameters.Add("emailAllowed", "false"); unsubscribeRequest.Body = unsubscribeRequestBody; // Check for read-only status. var readonlyValidationRule = AssertAndValidationHelper.GetValidationRuleForFindText(Constants.ReadOnlyModeError); unsubscribeRequest.ValidateResponse += readonlyValidationRule.Validate; yield return(unsubscribeRequest); var resetApiKeyRequest = new WebTestRequest(UrlHelper.AccountApiKeyResetUrl); resetApiKeyRequest.Method = "POST"; resetApiKeyRequest.ExpectedHttpStatusCode = 503; var resetApiKeyRequestBody = new FormPostHttpBody(); resetApiKeyRequestBody.FormPostParameters.Add("__RequestVerificationToken", Context["$HIDDEN1.__RequestVerificationToken"].ToString()); resetApiKeyRequest.Body = resetApiKeyRequestBody; // Check for read-only error resetApiKeyRequest.ValidateResponse += readonlyValidationRule.Validate; yield return(resetApiKeyRequest); } }
public override IEnumerator <WebTestRequest> GetRequestEnumerator() { //send a request to home page and check for default home page text. var pageRequest = new WebTestRequest(UrlHelper.BaseUrl); if (String.IsNullOrEmpty(EnvironmentSettings.ExternalBrandingMessage) && String.IsNullOrEmpty(EnvironmentSettings.ExternalBrandingUrl) && String.IsNullOrEmpty(EnvironmentSettings.ExternalAboutUrl) && String.IsNullOrEmpty(EnvironmentSettings.ExternalPrivacyPolicyUrl) && String.IsNullOrEmpty(EnvironmentSettings.ExternalTermsOfUseUrl) && String.IsNullOrEmpty(EnvironmentSettings.ExternalTrademarksUrl)) { var homePageTextValidationRuleLogo = AssertAndValidationHelper.GetValidationRuleForFindText(@"<a href=""https://www.dotnetfoundation.org"">"); var homePageTextValidationRuleCopyright = AssertAndValidationHelper.GetValidationRuleForFindText(@"© " + DateTime.UtcNow.Year + " .NET Foundation"); var homePageTextValidationRuleTOU = AssertAndValidationHelper.GetValidationRuleForFindText($@"<a href=""{UrlHelper.BaseUrl}policies/Terms"">Terms of Use</a>"); var homePageTextValidationRulePrivacy = AssertAndValidationHelper.GetValidationRuleForFindText($@"<a href=""{UrlHelper.BaseUrl}policies/Privacy"">Privacy Policy</a>"); pageRequest.ValidateResponse += homePageTextValidationRuleLogo.Validate; pageRequest.ValidateResponse += homePageTextValidationRuleCopyright.Validate; pageRequest.ValidateResponse += homePageTextValidationRuleTOU.Validate; pageRequest.ValidateResponse += homePageTextValidationRulePrivacy.Validate; } else { if (!String.IsNullOrEmpty(EnvironmentSettings.ExternalBrandingMessage)) { var validationBrandingMessage = AssertAndValidationHelper.GetValidationRuleForFindText(string.Format(EnvironmentSettings.ExternalBrandingMessage, DateTime.UtcNow.Year)); pageRequest.ValidateResponse += validationBrandingMessage.Validate; } if (!String.IsNullOrEmpty(EnvironmentSettings.ExternalBrandingUrl)) { var validationBrandingUrl = AssertAndValidationHelper.GetValidationRuleForFindText($@"<a href=""{EnvironmentSettings.ExternalBrandingUrl}"">"); pageRequest.ValidateResponse += validationBrandingUrl.Validate; } if (!String.IsNullOrEmpty(EnvironmentSettings.ExternalAboutUrl)) { var validationAboutUrl = AssertAndValidationHelper.GetValidationRuleForFindText($@"<a href=""{EnvironmentSettings.ExternalAboutUrl}"">"); pageRequest.ValidateResponse += validationAboutUrl.Validate; } if (!String.IsNullOrEmpty(EnvironmentSettings.ExternalPrivacyPolicyUrl)) { var validationPrivacyPolicyUrl = AssertAndValidationHelper.GetValidationRuleForFindText($@"<a href=""{EnvironmentSettings.ExternalPrivacyPolicyUrl}"">"); pageRequest.ValidateResponse += validationPrivacyPolicyUrl.Validate; } if (!String.IsNullOrEmpty(EnvironmentSettings.ExternalTermsOfUseUrl)) { var validationTermsOfUseUrl = AssertAndValidationHelper.GetValidationRuleForFindText($@"<a href=""{EnvironmentSettings.ExternalTermsOfUseUrl}"">"); pageRequest.ValidateResponse += validationTermsOfUseUrl.Validate; } if (!String.IsNullOrEmpty(EnvironmentSettings.ExternalTrademarksUrl)) { var validationTrademarksUrl = AssertAndValidationHelper.GetValidationRuleForFindText($@"<a href=""{EnvironmentSettings.ExternalTrademarksUrl}"">"); pageRequest.ValidateResponse += validationTrademarksUrl.Validate; } } yield return(pageRequest); }