コード例 #1
0
        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);
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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;
        }
コード例 #8
0
        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(@"&copy; 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);
        }
コード例 #9
0
        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;   

        }
コード例 #10
0
        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);
        }
コード例 #11
0
        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);
        }
コード例 #12
0
        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);
            }
        }
コード例 #14
0
        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(@"&copy; " + 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);
        }