コード例 #1
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);
            }
        }
コード例 #2
0
 public void UploadPackageIfNecessary(string packageName, string version)
 {
     if (!PackageExists(packageName, version))
     {
         AssertAndValidationHelper.UploadNewPackageAndVerify(packageName, version);
     }
 }
コード例 #3
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);
        }
コード例 #5
0
        public override IEnumerator <WebTestRequest> GetRequestEnumerator()
        {
            var defaultExtractionRule = AssertAndValidationHelper.GetDefaultExtractHiddenFields();

            // Do initial login
            var logonGet = AssertAndValidationHelper.GetLogonGetRequest();

            yield return(logonGet);

            var logonPost = AssertAndValidationHelper.GetLogonPostRequest(this);

            yield return(logonPost);

            var uploadRequest = AssertAndValidationHelper.GetHttpRequestForUrl(UrlHelper.UploadPageUrl);

            yield return(uploadRequest);

            var packageId             = $"UploadPackageFromUI.{DateTimeOffset.UtcNow.Ticks}";
            var packageCreationHelper = new PackageCreationHelper();
            var packageFullPath       = packageCreationHelper.CreatePackage(packageId).Result;
            var uploadPostRequest     = AssertAndValidationHelper.GetUploadPostRequestForPackage(this, packageFullPath);

            yield return(uploadPostRequest);

            //This second get request to upload is to put us on the new "Verify Page"
            // which is just the upload page in a different state.
            // This is to get the RequestVerificationToken for the folloing request. (upload and verify were merged onto the same page).
            var uploadRequest2 = AssertAndValidationHelper.GetHttpRequestForUrl(UrlHelper.UploadPageUrl);

            yield return(uploadRequest2);

            var verifyUploadPostRequest = AssertAndValidationHelper.GetVerifyPackagePostRequestForPackage(this, packageId, "1.0.0", UrlHelper.GetPackagePageUrl(packageId, "1.0.0"), packageId);

            yield return(verifyUploadPostRequest);
        }
コード例 #6
0
        [Ignore] // Nuget.Core returns the downloadcount for package registration always and doesnt return the count for package versions. Ignoring it for now.
        public void DownloadStatsForPackageVersions()
        {
            string packageId = testContextInstance.TestName + DateTime.Now.Ticks.ToString();

            //Upload package.
            AssertAndValidationHelper.UploadNewPackageAndVerify(packageId, "1.0.0");
            //Upload 2.0 for the same package.
            AssertAndValidationHelper.UploadNewPackageAndVerify(packageId, "2.0.0");

            //check download count for the package registration and package versions.
            Assert.IsTrue(ClientSDKHelper.GetDownLoadStatistics(packageId).Equals(0), "Package download count is not zero as soon as uploading. Actual value : {0}", ClientSDKHelper.GetDownLoadStatistics(packageId));
            Assert.IsTrue(ClientSDKHelper.GetDownLoadStatisticsForPackageVersion(packageId, "1.0.0").Equals(0), "Package version download count is not zero as soon as uploading. Actual value : {0}", ClientSDKHelper.GetDownLoadStatisticsForPackageVersion(packageId, "1.0.0"));
            Assert.IsTrue(ClientSDKHelper.GetDownLoadStatisticsForPackageVersion(packageId, "2.0.0").Equals(0), "Package version download count is not zero as soon as uploading. Actual value : {0}", ClientSDKHelper.GetDownLoadStatisticsForPackageVersion(packageId, "2.0.0"));

            //Download the new package.
            AssertAndValidationHelper.DownloadPackageAndVerify(packageId, "1.0.0");
            AssertAndValidationHelper.DownloadPackageAndVerify(packageId, "2.0.0");

            //Wait for a max of 5 mins ( as the stats job runs every 5 mins).
            int downloadCount = ClientSDKHelper.GetDownLoadStatistics(packageId);
            int waittime      = 0;

            while (downloadCount == 0 && waittime <= 300)
            {
                downloadCount = ClientSDKHelper.GetDownLoadStatistics(packageId);
                System.Threading.Thread.Sleep(30 * 1000);//sleep for 30 seconds.
                waittime += 30;
            }
            //check download count. Download count for the package registration should be 2 and the download count for the package versions should be 1.
            Assert.IsTrue(ClientSDKHelper.GetDownLoadStatistics(packageId) == 2, "Package download count is not increased after downloading a new package. Actual value : {0}", ClientSDKHelper.GetDownLoadStatistics(packageId));
            //TBD : Seems like NuGet.Core returns the download count for package registration always.
            Assert.IsTrue(ClientSDKHelper.GetDownLoadStatisticsForPackageVersion(packageId, "1.0.0") == 1, "Package version download count is not 1 after downloading a new package. Actual value : {0}", ClientSDKHelper.GetDownLoadStatisticsForPackageVersion(packageId, "1.0.0"));
            Assert.IsTrue(ClientSDKHelper.GetDownLoadStatisticsForPackageVersion(packageId, "2.0.0") == 1, "Package version download count is not 1 after downloading a new package. Actual value : {0}", ClientSDKHelper.GetDownLoadStatisticsForPackageVersion(packageId, "2.0.0"));
        }
コード例 #7
0
 public void UploadPackageIfNecessary(string packageName, string version, string minClientVersion, string title, string tags, string description, string licenseUrl, string dependencies)
 {
     if (!PackageExists(packageName, version, UrlHelper.V2FeedRootUrl))
     {
         AssertAndValidationHelper.UploadNewPackageAndVerify(packageName, version, minClientVersion, title, tags, description, licenseUrl, dependencies);
     }
 }
コード例 #8
0
        public void UploadAndDownLoadPackageWithDotCsNames()
        {
            string packageId = DateTime.Now.Ticks.ToString() + testContextInstance.TestName + ".Cs";

            AssertAndValidationHelper.UploadNewPackageAndVerify(packageId);
            AssertAndValidationHelper.DownloadPackageAndVerify(packageId);
        }
コード例 #9
0
 public void UploadPackageWithNuGetCommandLineTest()
 {
     if (UrlHelper.BaseUrl.Contains("nugettest.org") || UrlHelper.BaseUrl.Contains("nuget.org"))
     {
         AssertAndValidationHelper.UploadNewPackageAndVerify(DateTime.Now.Ticks.ToString());
     }
 }
コード例 #10
0
 public void UploadPackageIfNecessary(string packageName, string version, string minClientVersion, string title, string tags, string description)
 {
     if (!PackageExists(packageName, version))
     {
         AssertAndValidationHelper.UploadNewPackageAndVerify(packageName, version, minClientVersion, title, tags, description);
     }
 }
コード例 #11
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);

            if (this.LastResponse.ResponseUri.ToString().Contains("verify-upload"))
            {
                WebTestRequest cancelGet = AssertAndValidationHelper.GetCancelGetRequest();
                yield return(cancelGet);

                cancelGet     = null;
                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);

            WebTestRequest uploadPostRequest = AssertAndValidationHelper.GetUploadPostRequestForPackage(this, packageFullPath);

            yield return(uploadPostRequest);

            uploadPostRequest = null;

            WebTestRequest verifyUploadRequest = new WebTestRequest(UrlHelper.VerifyUploadPageUrl);

            verifyUploadRequest.ExtractValues += new EventHandler <ExtractionEventArgs>(defaultExtractionRule.Extract);
            yield return(verifyUploadRequest);

            verifyUploadRequest = null;

            WebTestRequest verifyUploadPostRequest = AssertAndValidationHelper.GetVerifyPackagePostRequestForPackage(this, packageId, "1.0.0", UrlHelper.GetPackagePageUrl(packageId, "1.0.0"), packageId);

            yield return(verifyUploadPostRequest);

            verifyUploadPostRequest = null;
        }
コード例 #12
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);
        }
コード例 #13
0
        public void UploadMultipleVersionOfPackage()
        {
            string packageId = "TestMultipleVersion" + "." + DateTime.Now.Ticks.ToString();

            AssertAndValidationHelper.UploadNewPackageAndVerify(packageId, "1.0.0");
            AssertAndValidationHelper.UploadNewPackageAndVerify(packageId, "2.0.0");
            int actualCount = ClientSDKHelper.GetVersionCount(packageId);

            Assert.IsTrue(actualCount.Equals(2), " 2 versions of package {0} not found after uploading. Actual versions found {1}", packageId, actualCount);
        }
コード例 #14
0
        public void FindPackagesByIdTest()
        {
            string packageId = "TestV2FeedFindPackagesById" + "." + DateTime.Now.Ticks.ToString();

            AssertAndValidationHelper.UploadNewPackageAndVerify(packageId, "1.0.0");
            AssertAndValidationHelper.UploadNewPackageAndVerify(packageId, "2.0.0");
            string url = UrlHelper.V2FeedRootUrl + @"/FindPackagesById()?id='" + packageId + "'";

            string[] expectedTexts = new string[] { @"<id>" + UrlHelper.V2FeedRootUrl + "Packages(Id='" + packageId + "',Version='1.0.0')</id>", @"<id>" + UrlHelper.V2FeedRootUrl + "Packages(Id='" + packageId + "',Version='2.0.0')</id>" };
            Assert.IsTrue(ODataHelper.ContainsResponseText(url, expectedTexts));
        }
コード例 #15
0
        public override IEnumerator <WebTestRequest> GetRequestEnumerator()
        {
            // Temporary workaround for the SSL issue, which keeps the upload test from working with cloudapp.net sites
            if (!UrlHelper.BaseUrl.Contains("nugettest.org") && !UrlHelper.BaseUrl.Contains("nuget.org"))
            {
                yield break;
            }

            var defaultExtractionRule = AssertAndValidationHelper.GetDefaultExtractHiddenFields();

            // Do initial login
            var logonGet = AssertAndValidationHelper.GetLogonGetRequest();

            yield return(logonGet);

            var logonPost = AssertAndValidationHelper.GetLogonPostRequest(this);

            yield return(logonPost);

            var uploadRequest = AssertAndValidationHelper.GetHttpRequestForUrl(UrlHelper.UploadPageUrl);

            yield return(uploadRequest);

            if (LastResponse.ResponseUri.ToString().Contains("verify-upload"))
            {
                // If there is a upload in progress, try to submit that upload instead of creating a new package (since we are just going to verify that upload goes through UI).
                // Extract the package Id of the pending upload.
                var response   = LastResponse.BodyString;
                var startIndex = response.IndexOf("<p>", StringComparison.Ordinal);
                var endIndex   = response.IndexOf("</p>", startIndex, StringComparison.Ordinal);
                var packageId  = response.Substring(startIndex + 3, endIndex - (startIndex + 3));
                AddCommentToResult(packageId);   //Adding the package ID to result for debugging.
                var verifyUploadPostRequest = AssertAndValidationHelper.GetVerifyPackagePostRequestForPackage(this, packageId, "1.0.0", UrlHelper.VerifyUploadPageUrl, Constants.ReadOnlyModeError, 503);
                yield return(verifyUploadPostRequest);
            }
            else
            {
                // The API key is part of the nuget.config file that is present under the solution dir.
                var packageId             = DateTime.Now.Ticks.ToString();
                var packageCreationHelper = new PackageCreationHelper();
                var packageFullPath       = packageCreationHelper.CreatePackage(packageId).Result;

                var uploadPostRequest = AssertAndValidationHelper.GetUploadPostRequestForPackage(this, packageFullPath);
                yield return(uploadPostRequest);

                var verifyUploadRequest = new WebTestRequest(UrlHelper.VerifyUploadPageUrl);
                verifyUploadRequest.ExtractValues += defaultExtractionRule.Extract;
                yield return(verifyUploadRequest);

                var verifyUploadPostRequest = AssertAndValidationHelper.GetVerifyPackagePostRequestForPackage(this, packageId, "1.0.0", UrlHelper.GetPackagePageUrl(packageId, "1.0.0"), packageId);
                yield return(verifyUploadPostRequest);
            }
        }
コード例 #16
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);
        }
        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))
            {
                yield break;
            }

            var defaultExtractionRule = AssertAndValidationHelper.GetDefaultExtractHiddenFields();

            // Do initial login
            var logonGet = AssertAndValidationHelper.GetLogonGetRequest();

            yield return(logonGet);

            var logonPost = AssertAndValidationHelper.GetLogonPostRequest(this);

            yield return(logonPost);

            var uploadRequest = AssertAndValidationHelper.GetHttpRequestForUrl(UrlHelper.UploadPageUrl);

            yield return(uploadRequest);

            if (LastResponse.ResponseUri.ToString().Contains("verify-upload"))
            {
                // if there is a upload in progress, try to submit that upload instead of creating a new package (since we are just going to verify that upload doesn't go through).
                //Extract the package Id of the pending upload.
                var response   = LastResponse.BodyString;
                var startIndex = response.IndexOf("<p>", StringComparison.Ordinal);
                var endIndex   = response.IndexOf("</p>", startIndex, StringComparison.Ordinal);
                var packageId  = response.Substring(startIndex + 3, endIndex - (startIndex + 3));
                AddCommentToResult(packageId);   //Adding the package ID to result for debugging.
                var verifyUploadPostRequest = AssertAndValidationHelper.GetVerifyPackagePostRequestForPackage(this, packageId, "1.0.0", UrlHelper.VerifyUploadPageUrl, Constants.ReadOnlyModeError, 503);
                yield return(verifyUploadPostRequest);
            }
            else
            {
                // The API key is part of the nuget.config file that is present under the solution dir.
                var packageId             = DateTime.Now.Ticks.ToString();
                var packageCreationHelper = new PackageCreationHelper();
                var packageFullPath       = packageCreationHelper.CreatePackage(packageId).Result;

                var uploadPostRequest = AssertAndValidationHelper.GetUploadPostRequestForPackage(this, packageFullPath);
                yield return(uploadPostRequest);

                var verifyUploadRequest = new WebTestRequest(UrlHelper.VerifyUploadPageUrl);
                verifyUploadRequest.ExtractValues += defaultExtractionRule.Extract;
                yield return(verifyUploadRequest);

                var verifyUploadPostRequest = AssertAndValidationHelper.GetVerifyPackagePostRequestForPackage(this, packageId, "1.0.0", UrlHelper.VerifyUploadPageUrl, Constants.ReadOnlyModeError, 503);
                yield return(verifyUploadPostRequest);
            }
        }
コード例 #18
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);
        }
コード例 #19
0
 public void FindPackagesByIdTest()
 {
     // Temporary workaround for the SSL issue, which keeps the upload test from working with cloudapp.net sites
     if (UrlHelper.BaseUrl.Contains("nugettest.org") || UrlHelper.BaseUrl.Contains("nuget.org"))
     {
         string packageId = "TestV2FeedFindPackagesById" + "." + DateTime.Now.Ticks.ToString();
         AssertAndValidationHelper.UploadNewPackageAndVerify(packageId, "1.0.0");
         AssertAndValidationHelper.UploadNewPackageAndVerify(packageId, "2.0.0");
         string   url           = UrlHelper.V2FeedRootUrl + @"/FindPackagesById()?id='" + packageId + "'";
         string[] expectedTexts = new string[] { @"<id>" + UrlHelper.V2FeedRootUrl + "Packages(Id='" + packageId + "',Version='1.0.0')</id>", @"<id>" + UrlHelper.V2FeedRootUrl + "Packages(Id='" + packageId + "',Version='2.0.0')</id>" };
         Assert.IsTrue(ODataHelper.ContainsResponseText(url, expectedTexts));
     }
 }
コード例 #20
0
        public override IEnumerator <WebTestRequest> GetRequestEnumerator()
        {
            //Do initial login
            WebTestRequest logonGet = AssertAndValidationHelper.GetLogonGetRequest();

            yield return(logonGet);

            WebTestRequest logonPostRequest = AssertAndValidationHelper.GetLogonPostRequest(this);
            var            loggedOnUserNameValidationRule = AssertAndValidationHelper.GetValidationRuleForHtmlTagInnerText(HtmlTextWriterTag.A.ToString(), HtmlTextWriterAttribute.Href.ToString(), "/account", "NugetTestAccount");

            logonPostRequest.ValidateResponse += loggedOnUserNameValidationRule.Validate;

            yield return(logonPostRequest);
        }
コード例 #21
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;
        }
コード例 #22
0
 public static void CheckIfBaseTestPackageExists()
 {
     //Check if the BaseTestPackage exists in current source and if not upload it. This will be used by the download related tests.
     try
     {
         if (!ClientSDKHelper.CheckIfPackageExistsInSource(Constants.TestPackageId, UrlHelper.V2FeedRootUrl))
         {
             AssertAndValidationHelper.UploadNewPackageAndVerify(Constants.TestPackageId);
         }
     }
     catch (AssertFailedException)
     {
         Assert.Inconclusive("The initialization method to pre-upload test package has failed. Hence failing all the tests. Make sure that a package by name {0} exists @ {1} before running tests. Check test run error for details", Constants.TestPackageId, UrlHelper.BaseUrl);
     }
 }
コード例 #23
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);
        }
コード例 #24
0
        public void FindPackagesByIdTest()
        {
            string packageId = "TestV2FeedFindPackagesById" + "." + DateTime.Now.Ticks.ToString();

            AssertAndValidationHelper.UploadNewPackageAndVerify(packageId, "1.0.0");
            AssertAndValidationHelper.UploadNewPackageAndVerify(packageId, "2.0.0");
            WebRequest request = WebRequest.Create(UrlHelper.V2FeedRootUrl + @"/FindPackagesById()?id='" + packageId + "'");
            // Get the response.
            WebResponse  response     = request.GetResponse();
            StreamReader sr           = new StreamReader(response.GetResponseStream());
            string       responseText = sr.ReadToEnd();

            Assert.IsTrue(responseText.Contains(@"<id>" + UrlHelper.V2FeedRootUrl + "Packages(Id='" + packageId + "',Version='1.0.0')</id>"));
            Assert.IsTrue(responseText.Contains(@"<id>" + UrlHelper.V2FeedRootUrl + "Packages(Id='" + packageId + "',Version='2.0.0')</id>"));
        }
コード例 #25
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;   

        }
コード例 #26
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);
        }
コード例 #27
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);
        }
コード例 #28
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);
        }
コード例 #29
0
        public void UploadAndDownLoadPackageWithMinClientVersion()
        {
            string packageId       = DateTime.Now.Ticks.ToString() + "PackageWithDotCsNames.Cs";
            string version         = "1.0.0";
            string packageFullPath = PackageCreationHelper.CreatePackageWithMinClientVersion(packageId, version, "2.3");
            int    exitCode        = CmdLineHelper.UploadPackage(packageFullPath, UrlHelper.V2FeedPushSourceUrl);

            Assert.IsTrue((exitCode == 0), Constants.UploadFailureMessage);
            Assert.IsTrue(ClientSDKHelper.CheckIfPackageVersionExistsInSource(packageId, version, UrlHelper.V2FeedRootUrl), Constants.PackageNotFoundAfterUpload, packageId, UrlHelper.V2FeedRootUrl);

            //Delete package from local disk so once it gets uploaded
            if (File.Exists(packageFullPath))
            {
                File.Delete(packageFullPath);
                Directory.Delete(Path.GetFullPath(Path.GetDirectoryName(packageFullPath)), true);
            }
            AssertAndValidationHelper.DownloadPackageAndVerify(packageId);
        }
        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);
            }
        }