protected void Page_Load(object sender, EventArgs e) { BVConfiguration bvConfig = new BVSdkConfiguration(); String cloudKey = Request.QueryString["cloudkey"]; String staging = Request.QueryString["staging"]; String testing = Request.QueryString["testing"]; String rootFolder = Request.QueryString["site"]; String subjectId = "seller"; if (cloudKey != null) { bvConfig.addProperty(BVClientConfig.CLOUD_KEY, cloudKey); } else { bvConfig.addProperty(BVClientConfig.CLOUD_KEY, "srd-testcustomer-1-c3a130de760b3105e75e8202cb22e541"); } if (staging != null) { bvConfig.addProperty(BVClientConfig.STAGING, staging); } else { bvConfig.addProperty(BVClientConfig.STAGING, "false"); } if (testing != null) { bvConfig.addProperty(BVClientConfig.TESTING, testing); } else { bvConfig.addProperty(BVClientConfig.TESTING, "true"); } if (rootFolder != null) { bvConfig.addProperty(BVClientConfig.BV_ROOT_FOLDER, rootFolder); } else { bvConfig.addProperty(BVClientConfig.BV_ROOT_FOLDER, "Main_Site-en_US"); } var bvParameters = new BVParameters { BaseURI = Request.Url.ToString().Contains("?") ? Request.Url.ToString().Substring(0, Request.Url.ToString().IndexOf("?")) : Request.Url.ToString(), PageURI = Request.Url.ToString(), UserAgent = Request.UserAgent, ContentType = new BVContentType(BVContentType.REVIEWS), SubjectType = new BVSubjectType(BVSubjectType.SELLER), SubjectId = subjectId }; BVUIContent bvOutput = new BVManagedUIContent(bvConfig); BVSellerRatingsContainer.InnerHtml = bvOutput.getContent(bvParameters); BVSEOURL.InnerHtml = bvOutput.getUrl(); }
/// <summary> /// Gets the complete Bazaarvoice SEO content /// </summary> /// <param name="bvParameters">Query Parameters of type BVParameters</param> /// <returns>Returns the complete Bazaarvoice SEO Content as String</returns> public String getContent(BVParameters bvParameters) { long startTime = TimeinMilliSeconds(); postProcess(bvParameters); StringBuilder uiContent = null; if (String.IsNullOrEmpty(validationError)) { if (bvUiContentService.isSdkEnabled()) { uiContent = bvUiContentService.executeCall(reloadContent); } else { _logger.Info(BVMessageUtil.getMessage("MSG0003")); uiContent = new StringBuilder(); } bvFooter.addMessage(bvUiContentService.getMessage().ToString()); } else { uiContent = new StringBuilder(); bvFooter.addMessage(validationError); } bvFooter.setExecutionTime(TimeinMilliSeconds() - startTime); uiContent.Append(bvFooter.displayFooter("getContent")); return uiContent.ToString(); }
public void TestExecutionTimeout() { BVConfiguration bvConfig = new BVSdkConfiguration(); bvConfig.addProperty(BVClientConfig.LOAD_SEO_FILES_LOCALLY, "false"); bvConfig.addProperty(BVClientConfig.STAGING, "true"); bvConfig.addProperty(BVClientConfig.CLOUD_KEY, "agileville-78B2EF7DE83644CAB5F8C72F2D8C8491"); bvConfig.addProperty(BVClientConfig.BV_ROOT_FOLDER, "Main_Site-en_US"); bvConfig.addProperty(BVClientConfig.EXECUTION_TIMEOUT, "2"); BVUIContent uiContent = new BVManagedUIContent(bvConfig); BVParameters bvParameters = new BVParameters(); bvParameters.UserAgent = "NORMAL_USER OR Browser userAgent"; bvParameters.ContentType = new BVContentType(BVContentType.REVIEWS); bvParameters.SubjectType = new BVSubjectType(BVSubjectType.PRODUCT); bvParameters.SubjectId = "data-gen-7k694zcnd6gbnpv2v4e6mmd22"; String theUiContent = uiContent.getContent(bvParameters); Assert.IsTrue(theUiContent.Contains("getContent"), "there should be getContent word/message"); Assert.IsTrue(theUiContent.Contains("Execution timed out, exceeded"), "there should be execution timeout message"); uiContent = new BVManagedUIContent(bvConfig); theUiContent = uiContent.getReviews(bvParameters); Assert.IsTrue(theUiContent.Contains("getReviews"), "there should be getReviews word/message"); Assert.IsTrue(theUiContent.Contains("Execution timed out, exceeded"), "there should be execution timeout message"); uiContent = new BVManagedUIContent(bvConfig); theUiContent = uiContent.getAggregateRating(bvParameters); Debug.WriteLine(theUiContent); Assert.IsTrue(theUiContent.Contains("getAggregateRating"), "there should be getAggregateRating word/message"); Assert.IsTrue(theUiContent.Contains(" Execution timed out, exceeded"), "there should be execution timeout message"); }
public void TestEquality() { BVParameters bvParamObj1 = new BVParameters(); bvParamObj1.UserAgent = "googlebot"; bvParamObj1.BaseURI = "Example-Vector.jsp"; bvParamObj1.PageURI = "http://localhost/Example-Vector.jsp?someQuery=value1"; bvParamObj1.ContentType = new BVContentType(BVContentType.REVIEWS); bvParamObj1.SubjectType = new BVSubjectType(BVSubjectType.PRODUCT); bvParamObj1.SubjectId = "1501"; BVParameters bvParamObj2 = null; Assert.AreEqual<Boolean>(bvParamObj1.Equals(bvParamObj2), false , "object1 and object2 should not be equal"); bvParamObj2 = bvParamObj1; Assert.AreEqual<Boolean>(bvParamObj1.Equals(bvParamObj2), true, "object1 and object2 should be equal"); /* * Other object instance test */ Assert.AreEqual<Boolean>(bvParamObj1.Equals("ABCD"), false, "object1 and someother should not be equal"); bvParamObj2 = new BVParameters(); bvParamObj2.UserAgent = "msnbot"; bvParamObj2.BaseURI = "Example-Vector.jsp"; bvParamObj2.PageURI = "http://localhost/Example-Vector.jsp?someQuery=value1"; bvParamObj2.ContentType = new BVContentType(BVContentType.REVIEWS); bvParamObj2.SubjectType = new BVSubjectType(BVSubjectType.PRODUCT); bvParamObj2.SubjectId = "1501"; Assert.AreEqual<Boolean>(bvParamObj1.Equals(bvParamObj2), false, "object1 and object2 should not be equal"); }
public void TestDisplayFooter() { BVConfiguration bvConfiguration = new BVSdkConfiguration(); BVParameters bvParameters = new BVParameters(); bvParameters.SubjectType = new BVSubjectType(BVSubjectType.PRODUCT); BVFooter bvFooter = new BVHTMLFooter(bvConfiguration, bvParameters); String displayFooter = bvFooter.displayFooter("getContent"); Console.WriteLine(displayFooter); Assert.AreEqual<Boolean>(displayFooter.Contains("CLOUD"), true, "the content string should match."); Assert.AreEqual<Boolean>(displayFooter.Contains("REVIEWS"), true, "the content string should match."); Assert.AreEqual<Boolean>(displayFooter.Contains("PRODUCT"), true, "the content string should match."); Assert.AreEqual<Boolean>(displayFooter.Contains("<li data-bvseo=seo.sdk.execution.timeout>"), false, "the content string should not match."); }
public void TestValidation_When_BVConfig_Is_Null() { bvConfig = null; bvParams = null; bvValidator = new BVDefaultValidator(); errorMessage = bvValidator.validate(bvConfig, bvParams); Assert.AreEqual<Boolean>(errorMessage.Contains("BVConfiguration is null, please set a valid BVConfiguration.;"), true, "Error Messages are different."); bvConfig = new BVSdkConfiguration(); bvParams = new BVParameters(); bvValidator = new BVDefaultValidator(); errorMessage = bvValidator.validate(bvConfig, bvParams); Assert.AreEqual<Boolean>(errorMessage.Contains("SubjectId cannot be null or empty.;"), true, "Error Messages are different."); }
public BVHTMLFooter(BVConfiguration bvConfiguration, BVParameters bvParameters) { if (bvConfiguration == null) { _logger.Error(BVMessageUtil.getMessage("ERR0007")); throw new BVSdkException("ERR0007"); } _bvConfiguration = bvConfiguration; _bvParameters = bvParameters; _velocityEngine = new VelocityEngine(); _velocityEngine.Init(); messageList = new List<String>(); }
public BVParameters GetParams(string subjectId, string subjectType, string contentType, string subType = "") { string pageUrl = Request.Url.ToString(); BVParameters bvParams = new BVParameters { BaseURI = pageUrl.Contains("?") ? pageUrl.Substring(0, pageUrl.IndexOf("?")) : pageUrl, PageURI = Request.Url.ToString(), UserAgent = Request.UserAgent, SubjectId = subjectId, SubjectType = new BVSubjectType(subjectType), ContentType = new BVContentType(contentType), }; if (subjectType != "") bvParams.ContentSubType = new BVContentSubType(subType); return bvParams; }
public void TestSEOContentFromFile_SinglePagePRR() { BVConfiguration bvConfig = new BVSdkConfiguration(); bvConfig.addProperty(BVClientConfig.LOAD_SEO_FILES_LOCALLY, "True"); bvConfig.addProperty(BVClientConfig.LOCAL_SEO_FILE_ROOT, @"C:\Test\seo_local_files\myshco-359c29d8a8cbe3822bc0d7c58cb9f9ca"); bvConfig.addProperty(BVClientConfig.CLOUD_KEY, "myshco-359c29d8a8cbe3822bc0d7c58cb9f9ca"); bvConfig.addProperty(BVClientConfig.BV_ROOT_FOLDER, "9344seob"); bvConfig.addProperty(BVClientConfig.EXECUTION_TIMEOUT, "300000"); BVUIContent uiContent = new BVManagedUIContent(bvConfig); BVParameters bvParameters = new BVParameters(); bvParameters.UserAgent = "FireFox"; bvParameters.ContentType = new BVContentType(BVContentType.REVIEWS); bvParameters.SubjectType = new BVSubjectType(BVSubjectType.PRODUCT); bvParameters.SubjectId = "3000001"; String theUIContent = uiContent.getContent(bvParameters); Assert.AreEqual<Boolean>(theUIContent.Contains("BVRRSourceID"), true, "there should be BvRRSourceID in the content"); }
protected void Page_Load(object sender, EventArgs e) { BVConfiguration bvConfig = new BVSdkConfiguration(); bvConfig.addProperty(BVClientConfig.SEO_SDK_ENABLED, "true"); // use this as a kill switch bvConfig.addProperty(BVClientConfig.LOAD_SEO_FILES_LOCALLY, "false"); // set to false if using cloud-based content bvConfig.addProperty(BVClientConfig.LOCAL_SEO_FILE_ROOT, "/"); bvConfig.addProperty(BVClientConfig.STAGING, "false"); // set to true for staging environment data bvConfig.addProperty(BVClientConfig.CRAWLER_AGENT_PATTERN, "yandex"); bvConfig.addProperty(BVClientConfig.CLOUD_KEY, "bodyglove-8e186f6e16e2d688784728b360df41c5"); bvConfig.addProperty(BVClientConfig.BV_ROOT_FOLDER, "Main_Site-en_US"); bvConfig.addProperty(BVClientConfig.EXECUTION_TIMEOUT, "300000"); BVUIContent uiContent = new BVManagedUIContent(bvConfig); var bvParameters = new BVParameters { BaseURI = Request.Url.AbsoluteUri, PageURI = Request.Url.AbsoluteUri + "?bvpage=ctre/id50524/stp" }; var theUiContent = uiContent.getContent(bvParameters); BVRRContainer.InnerHtml = theUiContent; }
public void TestSEOContentFromHTTP_SinglePagePRR_AggregateRating() { BVConfiguration bvConfig = new BVSdkConfiguration(); bvConfig.addProperty(BVClientConfig.LOAD_SEO_FILES_LOCALLY, "false"); bvConfig.addProperty(BVClientConfig.CLOUD_KEY, "myshco-69cb945801532dcfb57ad2b0d2471b68"); bvConfig.addProperty(BVClientConfig.BV_ROOT_FOLDER, "Main_Site-en_US"); bvConfig.addProperty(BVClientConfig.EXECUTION_TIMEOUT, "3000"); bvConfig.addProperty(BVClientConfig.STAGING, "true"); BVUIContent uiContent = new BVManagedUIContent(bvConfig); BVParameters bvParameters = new BVParameters(); bvParameters.UserAgent = "google"; bvParameters.ContentType = new BVContentType(BVContentType.REVIEWS); bvParameters.SubjectType = new BVSubjectType(BVSubjectType.PRODUCT); bvParameters.SubjectId = "2000002"; String theUIContent = uiContent.getAggregateRating(bvParameters); Console.WriteLine(theUIContent); Assert.AreEqual<Boolean>(theUIContent.Contains("itemprop=\"aggregateRating\" itemscope itemtype=\"http://schema.org/AggregateRating\""), true, "there should be BvRRSourceID in the content"); Assert.AreEqual<Boolean>(!theUIContent.Contains("itemprop=\"review\" itemscope itemtype=\"http://schema.org/Review\""), true, "there should not be reviews section in the content"); }
public void TestAggregate_NullSubjectID() { BVConfiguration _bvConfig = new BVSdkConfiguration(); _bvConfig.addProperty(BVClientConfig.SEO_SDK_ENABLED, "true"); _bvConfig.addProperty(BVClientConfig.LOAD_SEO_FILES_LOCALLY, "false"); _bvConfig.addProperty(BVClientConfig.CLOUD_KEY, "hartz-2605f8e4ef6790962627644cc195acf2"); _bvConfig.addProperty(BVClientConfig.STAGING, "false"); _bvConfig.addProperty(BVClientConfig.BV_ROOT_FOLDER, "11568-en_US"); _bvConfig.addProperty(BVClientConfig.EXECUTION_TIMEOUT, "300000"); BVParameters _bvParam = new BVParameters(); _bvParam.UserAgent = "google"; _bvParam.BaseURI = "http://localhost:8080/thispage.htm"; _bvParam.PageURI = "http://localhost:8080/abcd" + "?" + "notSure=1&letSee=2"; _bvParam.ContentType = new BVContentType(BVContentType.REVIEWS); _bvParam.SubjectType = new BVSubjectType(BVSubjectType.PRODUCT); _bvParam.SubjectId = null; BVUIContent _bvOutput = new BVManagedUIContent(_bvConfig); String sBvOutputSummary = _bvOutput.getAggregateRating(_bvParam); Assert.IsTrue(sBvOutputSummary.Contains("<li data-bvseo=\"ms\">bvseo-msg: SubjectId cannot be null or empty.;</li>"), "there should be error message for SubjectId"); sBvOutputSummary = _bvOutput.getReviews(_bvParam); Assert.IsTrue(sBvOutputSummary.Contains("<li data-bvseo=\"ms\">bvseo-msg: SubjectId cannot be null or empty.;</li>"), "there should be error message for SubjectId"); sBvOutputSummary = _bvOutput.getContent(_bvParam); Assert.IsTrue(sBvOutputSummary.Contains("<li data-bvseo=\"ms\">bvseo-msg: SubjectId cannot be null or empty.;</li>"), "there should be error message for SubjectId"); }
public void TestSEOContentFromHTTP_SinglePagePRR_CrawlerOverride() { BVConfiguration bvConfig = new BVSdkConfiguration(); bvConfig.addProperty(BVClientConfig.LOAD_SEO_FILES_LOCALLY, "false"); bvConfig.addProperty(BVClientConfig.CLOUD_KEY, "totalgymdirect-f19e9cfeb9917d0c20afdfbe06483f1b");//"adobe-55d020998d7b4776fb0f9df49278083c"); bvConfig.addProperty(BVClientConfig.BV_ROOT_FOLDER, "Main_Site-en_US"); bvConfig.addProperty(BVClientConfig.EXECUTION_TIMEOUT, "300000"); bvConfig.addProperty(BVClientConfig.CRAWLER_AGENT_PATTERN, "mysearchbot"); BVUIContent uiContent = new BVManagedUIContent(bvConfig); BVParameters bvParameters = new BVParameters(); bvParameters.UserAgent = "111mysearchbot122"; bvParameters.ContentType = new BVContentType(BVContentType.REVIEWS); bvParameters.SubjectType = new BVSubjectType(BVSubjectType.PRODUCT); bvParameters.SubjectId = "PRTG2000"; String theUIContent = uiContent.getAggregateRating(bvParameters); Console.WriteLine(theUIContent); Assert.IsTrue(theUIContent.Contains("<div id=\"bvseo-aggregateRatingSection\" itemprop=\"aggregateRating\" itemscope itemtype=\"http://schema.org/AggregateRating\">"), "there should be bvseo-aggregateRatingSection in the content"); Assert.IsFalse(theUIContent.Contains("itemprop=\"review\" itemscope itemtype=\"http://schema.org/Review\">"), "there should not be reviews section in the content"); /** Scenario for multiple crawler patterh **/ bvConfig = new BVSdkConfiguration(); bvConfig.addProperty(BVClientConfig.LOAD_SEO_FILES_LOCALLY, "false"); bvConfig.addProperty(BVClientConfig.CLOUD_KEY, "totalgymdirect-f19e9cfeb9917d0c20afdfbe06483f1b"); bvConfig.addProperty(BVClientConfig.BV_ROOT_FOLDER, "Main_Site-en_US"); bvConfig.addProperty(BVClientConfig.EXECUTION_TIMEOUT, "300000"); bvConfig.addProperty(BVClientConfig.CRAWLER_AGENT_PATTERN, "mysearchbot|anotherbot"); uiContent = new BVManagedUIContent(bvConfig); bvParameters = new BVParameters(); bvParameters.UserAgent = "111mysearchbot122"; bvParameters.ContentType = new BVContentType(BVContentType.REVIEWS); bvParameters.SubjectType = new BVSubjectType(BVSubjectType.PRODUCT); bvParameters.SubjectId = "PRTG2000"; theUIContent = uiContent.getAggregateRating(bvParameters); Console.WriteLine(theUIContent); Assert.IsTrue(theUIContent.Contains("<div id=\"bvseo-aggregateRatingSection\" itemprop=\"aggregateRating\" itemscope itemtype=\"http://schema.org/AggregateRating\">"), "there should be bvseo-aggregateRatingSection in the content"); Assert.IsFalse(theUIContent.Contains("itemprop=\"review\" itemscope itemtype=\"http://schema.org/Review\">"), "there should not be reviews section in the content"); bvParameters = new BVParameters(); bvParameters.UserAgent = "111anotherbot122"; bvParameters.ContentType = new BVContentType(BVContentType.REVIEWS); bvParameters.SubjectType = new BVSubjectType(BVSubjectType.PRODUCT); bvParameters.SubjectId = "PRTG2000"; theUIContent = uiContent.getAggregateRating(bvParameters); Console.WriteLine(theUIContent); Assert.IsTrue(theUIContent.Contains("<div id=\"bvseo-aggregateRatingSection\" itemprop=\"aggregateRating\" itemscope itemtype=\"http://schema.org/AggregateRating\">"), "there should be bvseo-aggregateRatingSection in the content"); Assert.IsFalse(theUIContent.Contains("itemprop=\"review\" itemscope itemtype=\"http://schema.org/Review\">"), "there should not be reviews section in the content"); }
public void TestSEOContent_SinglePageHTTP_GetReview_SDK_Disabled() { BVConfiguration _bvConfig = new BVSdkConfiguration(); _bvConfig.addProperty(BVClientConfig.SEO_SDK_ENABLED, "false"); _bvConfig.addProperty(BVClientConfig.LOAD_SEO_FILES_LOCALLY, "false"); _bvConfig.addProperty(BVClientConfig.CLOUD_KEY, "hartz-2605f8e4ef6790962627644cc195acf2"); _bvConfig.addProperty(BVClientConfig.STAGING, "false"); _bvConfig.addProperty(BVClientConfig.BV_ROOT_FOLDER, "11568-en_US"); _bvConfig.addProperty(BVClientConfig.EXECUTION_TIMEOUT, "300000"); BVParameters _bvParam = new BVParameters(); _bvParam.UserAgent = "google"; _bvParam.BaseURI = "http://localhost:8080/thispage.htm"; _bvParam.PageURI = "http://localhost:8080/abcd" + "?" + "notSure=1&letSee=2"; _bvParam.ContentType = new BVContentType(BVContentType.REVIEWS); _bvParam.SubjectType = new BVSubjectType(BVSubjectType.PRODUCT); _bvParam.SubjectId = "1577"; BVUIContent _bvOutput = new BVManagedUIContent(_bvConfig); String sBvOutputSummary = _bvOutput.getReviews(_bvParam); Console.WriteLine(sBvOutputSummary); Assert.AreEqual<Boolean>(sBvOutputSummary.Contains("<li data-bvseo=\"sdk\">"), true, "There should be footer"); Assert.AreEqual<Boolean>(sBvOutputSummary.Contains("BVRRReviewsSoiSectionID"), false, "There should not be any reviews"); }
public void TestSEOContent_SinglePageHTTP_Aggregate_WithoutPagination() { BVConfiguration _bvConfig = new BVSdkConfiguration(); _bvConfig.addProperty(BVClientConfig.SEO_SDK_ENABLED, "true"); _bvConfig.addProperty(BVClientConfig.LOAD_SEO_FILES_LOCALLY, "false"); _bvConfig.addProperty(BVClientConfig.CLOUD_KEY, "totalgymdirect-f19e9cfeb9917d0c20afdfbe06483f1b"); _bvConfig.addProperty(BVClientConfig.STAGING, "true"); _bvConfig.addProperty(BVClientConfig.BV_ROOT_FOLDER, "Main_Site-en_US"); _bvConfig.addProperty(BVClientConfig.EXECUTION_TIMEOUT, "300000"); BVParameters _bvParam = new BVParameters(); _bvParam.UserAgent = "google"; _bvParam.BaseURI = "http://localhost:8080/thispage.htm"; _bvParam.PageURI = "http://localhost:8080/abcd" + "?" + "notSure=1&letSee=2"; _bvParam.ContentType = new BVContentType(BVContentType.REVIEWS); _bvParam.SubjectType = new BVSubjectType(BVSubjectType.PRODUCT); _bvParam.SubjectId = "PRTG2000"; BVUIContent _bvOutput = new BVManagedUIContent(_bvConfig); String sBvOutputSummary = _bvOutput.getAggregateRating(_bvParam); Console.WriteLine(sBvOutputSummary); Assert.AreEqual<Boolean>(sBvOutputSummary.Contains("<!--begin-aggregate-rating-->"), true, "there should be AggregateRating in the content"); Assert.AreEqual<Boolean>(!sBvOutputSummary.Contains("itemprop=\"review\" itemscope itemtype=\"http://schema.org/Review\""), true, "there should not be reviews section in the content"); }
public void TestSEOContent_SinglePageHTTP_AggregateRating_IfNotPresent() { BVConfiguration _bvConfig = new BVSdkConfiguration(); _bvConfig.addProperty(BVClientConfig.SEO_SDK_ENABLED, "true"); _bvConfig.addProperty(BVClientConfig.LOAD_SEO_FILES_LOCALLY, "false"); _bvConfig.addProperty(BVClientConfig.CLOUD_KEY, "seo_sdk_testcase-159b6108bb11967e554a92c6a3c39cb3"); _bvConfig.addProperty(BVClientConfig.STAGING, "false"); _bvConfig.addProperty(BVClientConfig.BV_ROOT_FOLDER, "Main_Site-en_US"); _bvConfig.addProperty(BVClientConfig.EXECUTION_TIMEOUT, "300000"); BVParameters _bvParam = new BVParameters(); _bvParam.UserAgent = "google"; _bvParam.BaseURI = "http://localhost:8080/thispage.htm"; _bvParam.PageURI = "http://localhost:8080/abcd" + "?" + "notSure=1&letSee=2"; _bvParam.ContentType = new BVContentType(BVContentType.REVIEWS); _bvParam.SubjectType = new BVSubjectType(BVSubjectType.PRODUCT); _bvParam.SubjectId = "5000002_No_Aggr_Rating"; BVUIContent _bvOutput = new BVManagedUIContent(_bvConfig); Console.WriteLine(_bvOutput); String sBvOutputSummary = _bvOutput.getAggregateRating(_bvParam); Console.WriteLine(sBvOutputSummary); Assert.AreEqual<Boolean>(!sBvOutputSummary.Contains("itemprop=\"aggregateRating\" itemscope itemtype=\"http://schema.org/AggregateRating\""), true, "there should not be AggregateRating in the content"); Assert.AreEqual<Boolean>(!sBvOutputSummary.Contains("itemprop=\"review\" itemscope itemtype=\"http://schema.org/Review\""), true, "there should not be reviews section in the content"); String expectedMessage = BVMessageUtil.getMessage("ERR0012"); Assert.AreEqual<Boolean>(sBvOutputSummary.Contains(expectedMessage), true, "Message does not contain expected message please test"); }
protected void Page_Load(object sender, EventArgs e) { BVConfiguration bvConfig = new BVSdkConfiguration(); String cloudKey = Request.QueryString["cloudkey"]; String staging = Request.QueryString["staging"]; String testing = Request.QueryString["testing"]; String rootFolder = Request.QueryString["site"]; String productIdParam = Request.QueryString["productid"]; String subjectId = "5000001"; if (cloudKey != null) bvConfig.addProperty(BVClientConfig.CLOUD_KEY, cloudKey); else bvConfig.addProperty(BVClientConfig.CLOUD_KEY, "myshco-3e3001e88d9c32d19a17cafacb81bec7"); if (staging != null) bvConfig.addProperty(BVClientConfig.STAGING, staging); else bvConfig.addProperty(BVClientConfig.STAGING, "true"); if (testing != null) bvConfig.addProperty(BVClientConfig.TESTING, testing); else bvConfig.addProperty(BVClientConfig.TESTING, "false"); if (rootFolder != null) bvConfig.addProperty(BVClientConfig.BV_ROOT_FOLDER, rootFolder); else bvConfig.addProperty(BVClientConfig.BV_ROOT_FOLDER, "9344"); if (productIdParam != null) { //if productIdParameter is null then use the default value. If it's not null then use the parameter. If category subjectId = productIdParam; } else subjectId = "5000001"; bvConfig.addProperty(BVClientConfig.SEO_SDK_ENABLED, "true"); // use this as a kill switch bvConfig.addProperty(BVClientConfig.LOAD_SEO_FILES_LOCALLY, "false"); // set to false if using cloud-based content bvConfig.addProperty(BVClientConfig.LOCAL_SEO_FILE_ROOT, "/"); bvConfig.addProperty(BVClientConfig.CRAWLER_AGENT_PATTERN, "yandex"); bvConfig.addProperty(BVClientConfig.EXECUTION_TIMEOUT, "1500"); bvConfig.addProperty(BVClientConfig.EXECUTION_TIMEOUT_BOT, "2000"); var bvParameters = new BVParameters { BaseURI = Request.Url.ToString().Contains("?") ? Request.Url.ToString().Substring(0, Request.Url.ToString().IndexOf("?")) : Request.Url.ToString(), PageURI = Request.Url.ToString(), ContentType = new BVContentType(BVContentType.REVIEWS), SubjectType = new BVSubjectType(BVSubjectType.PRODUCT), SubjectId = subjectId }; BVUIContent bvOutput = new BVManagedUIContent(bvConfig); BVRRSummaryContainer.InnerHtml = bvOutput.getAggregateRating(bvParameters); BVRRContainer.InnerHtml = bvOutput.getReviews(bvParameters); }
public void Test_SellerRatings_Production() { _bvConfiguration.addProperty(BVClientConfig.STAGING, "false"); _bvConfiguration.addProperty(BVClientConfig.TESTING, "false"); _bvUIContent = new BVManagedUIContent(_bvConfiguration); BVParameters bvParameters = new BVParameters(); bvParameters.UserAgent = "google"; bvParameters.ContentType = new BVContentType(BVContentType.REVIEWS); bvParameters.SubjectType = new BVSubjectType(BVSubjectType.SELLER); bvParameters.SubjectId = "seller"; bvParameters.BaseURI = "http://www.example.com/store/products/reviews"; bvParameters.PageURI = "http://www.example.com/store/products/data-gen-696yl2lg1kurmqxn88fqif5y2/?utm_campaign=bazaarvoice&utm_medium=SearchVoice&utm_source=RatingsAndReviews&utm_content=Default&bvrrp=Main_Site-en_US/reviews/product/1/50524.htm"; bvParameters.PageNumber = "1"; String erroMessage = null; String content = null; try { stopwatch.Restart(); content = _bvUIContent.getContent(bvParameters); stopwatch.Stop(); } catch (BVSdkException e) { erroMessage = e.getMessage(); } Console.WriteLine(content); Assert.IsTrue(stopwatch.ElapsedMilliseconds <= CONTENT_RETRIEVAL_THRESHOLD, String.Format("Content retrieval time exceeded {0} milliseconds", CONTENT_RETRIEVAL_THRESHOLD)); Assert.IsTrue(!content.Contains("<li data-bvseo=\"ms\">bvseo-msg:")); Assert.IsTrue(content.Contains("<li data-bvseo=\"ct_st\">REVIEWS, SELLER")); Assert.IsFalse(content.Contains("HTTP 403 Forbidden"), "There should be valid content"); }
public void TestSEOContentFromFile_SinglePageC2013() { BVConfiguration bvConfig = new BVSdkConfiguration(); bvConfig.addProperty(BVClientConfig.LOAD_SEO_FILES_LOCALLY, "True"); bvConfig.addProperty(BVClientConfig.LOCAL_SEO_FILE_ROOT, @"C:\Test\seo_local_files\myshco-359c29d8a8cbe3822bc0d7c58cb9f9ca"); bvConfig.addProperty(BVClientConfig.CLOUD_KEY, "myshco-359c29d8a8cbe3822bc0d7c58cb9f9ca"); bvConfig.addProperty(BVClientConfig.BV_ROOT_FOLDER, "9344seob"); bvConfig.addProperty(BVClientConfig.EXECUTION_TIMEOUT, "300000"); BVUIContent uiContent = new BVManagedUIContent(bvConfig); BVParameters bvParameters = new BVParameters(); bvParameters.UserAgent = "FireFox"; bvParameters.PageURI = "http://localhost:8080/sample/someproduct.jsp?bvpage=ctre/id3000001/stp"; String theUIContent = uiContent.getContent(bvParameters); Console.WriteLine(theUIContent); Assert.AreEqual<Boolean>(theUIContent.Contains("BVRRSourceID"), true, "there should be BvRRSourceID in the content"); }
public void TestSEOContentFromFile_SinglePage_FileUnavailableError_bvReveal() { BVConfiguration bvConfig = new BVSdkConfiguration(); bvConfig.addProperty(BVClientConfig.LOAD_SEO_FILES_LOCALLY, "True"); bvConfig.addProperty(BVClientConfig.LOCAL_SEO_FILE_ROOT, @"E:\alpha-beta-invalid-\Seo_cyberduck\myshco-359c29d8a8cbe3822bc0d7c58cb9f9ca"); bvConfig.addProperty(BVClientConfig.CLOUD_KEY, "myshco-359c29d8a8cbe3822bc0d7c58cb9f9ca"); bvConfig.addProperty(BVClientConfig.BV_ROOT_FOLDER, "9344seob"); bvConfig.addProperty(BVClientConfig.EXECUTION_TIMEOUT, "300000"); BVUIContent uiContent = new BVManagedUIContent(bvConfig); BVParameters bvParameters = new BVParameters(); bvParameters.UserAgent = "google"; bvParameters.ContentType = new BVContentType(BVContentType.REVIEWS); bvParameters.SubjectType = new BVSubjectType(BVSubjectType.PRODUCT); bvParameters.SubjectId = "3000001_thisFiledoesNotExist"; bvParameters.BaseURI = "http://www.example.com/store/products/data-gen-696yl2lg1kurmqxn88fqif5y2/"; bvParameters.PageURI = "http://www.example.com/store/products/data-gen-696yl2lg1kurmqxn88fqif5y2?bvreveal=debug"; String theUIContent = uiContent.getContent(bvParameters); Assert.AreEqual<Boolean>(!theUIContent.Contains("BVRRSourceID"), true, "there should not be BvRRSourceID in the content"); Assert.AreEqual<Boolean>(theUIContent.Contains("The resource to the URL or file is currently unavailable."), true, "there should be resource unavailable message"); Assert.AreEqual<Boolean>(theUIContent.Contains("debug"), true, "there should be debug message"); }
/// <summary> /// Checks bvParameters to see whether we need to reveal debug information. /// </summary> /// <param name="bvParameters"></param> /// <returns>true when we have to reveal debug information, false otherwise</returns> public static Boolean isRevealDebugEnabled(BVParameters bvParameters) { Regex regex = new Regex(BVConstant.BVSTATE_REVEAL_DEBUG_REGEX); return ( bvParameters != null && bvParameters.PageURI != null && ( // check for presence of bvreveal=debug bvParameters.PageURI.Contains(BVConstant.BVREVEAL_DEBUG) || // check for reveal:debug in bvstate regex.Match(bvParameters.PageURI).Success ) ); }
/// <summary> /// Method to validate bvConfiguration & bvParameters. /// </summary> /// <param name="bvConfiguration">The BVConfiguration Object to validate</param> /// <param name="bvParams">The BVParameters Object to validate</param> /// <returns>Errors as String if Invalid attributes are found</returns> public String validate(BVConfiguration bvConfiguration, BVParameters bvParams) { if (bvConfiguration == null) { errorMessages.Append(BVMessageUtil.getMessage("ERR0007")); _logger.Error(BVMessageUtil.getMessage("ERR0007")); return errorMessages.ToString(); } if (bvParams == null) { errorMessages.Append(BVMessageUtil.getMessage("ERR0011")); _logger.Error(BVMessageUtil.getMessage("ERR0011")); return errorMessages.ToString(); } Boolean loadSeoFilesLocally = Boolean.Parse(bvConfiguration.getProperty(BVClientConfig.LOAD_SEO_FILES_LOCALLY)); if (loadSeoFilesLocally) { String localSeoFileRoot = bvConfiguration.getProperty(BVClientConfig.LOCAL_SEO_FILE_ROOT); if (String.IsNullOrEmpty(localSeoFileRoot)) { errorMessages.Append(BVMessageUtil.getMessage("ERR0010")); _logger.Error(BVMessageUtil.getMessage("ERR0010")); } } else { String cloudKey = bvConfiguration.getProperty(BVClientConfig.CLOUD_KEY); if (String.IsNullOrEmpty(cloudKey)) { errorMessages.Append(BVMessageUtil.getMessage("ERR0020")); _logger.Error(BVMessageUtil.getMessage("ERR0020")); } } String rootFolder = bvConfiguration.getProperty(BVClientConfig.BV_ROOT_FOLDER); if (String.IsNullOrEmpty(rootFolder)) { errorMessages.Append(BVMessageUtil.getMessage("ERR0021")); _logger.Error(BVMessageUtil.getMessage("ERR0021")); } Uri uri = null; if (bvParams.BaseURI != null) { try { uri = new Uri(bvParams.BaseURI); } catch (UriFormatException e) { errorMessages.Append(BVMessageUtil.getMessage("ERR0023")); _logger.Error(BVMessageUtil.getMessage("ERR0023"),e); } } if (bvParams.PageURI != null) { try { uri = new Uri(bvParams.PageURI); } catch (UriFormatException e) { errorMessages.Append(BVMessageUtil.getMessage("ERR0022")); _logger.Error(BVMessageUtil.getMessage("ERR0022"), e); } } if (String.IsNullOrEmpty(bvParams.PageURI) || !bvParams.PageURI.Contains("bvpage")) { if (String.IsNullOrEmpty(bvParams.SubjectId)) { errorMessages.Append(BVMessageUtil.getMessage("ERR0014")); _logger.Error(BVMessageUtil.getMessage("ERR0014")); } if (bvParams.SubjectType == null) { errorMessages.Append(BVMessageUtil.getMessage("ERR0016")); _logger.Error(BVMessageUtil.getMessage("ERR0016")); } if (bvParams.ContentType == null) { errorMessages.Append(BVMessageUtil.getMessage("ERR0015")); _logger.Error(BVMessageUtil.getMessage("ERR0015")); } } if (errorMessages.Length > 0) { _logger.Error("There is an error : " + errorMessages.ToString()); return errorMessages.ToString(); } return null; }
public void TestIsRevealDebugEnabled() { // No bvreveal=debug in query param or reveal:debug in bvstate BVParameters bvParam = new BVParameters(); bvParam.BaseURI = "http://localhost:8080/Sample/Example-1.jsp"; bvParam.PageURI = "http://localhost:8080/Sample/Example-1.jsp?bvstate=pg:2/ct:r/st:p/id:ssl-certificates"; Assert.IsFalse(BVUtility.isRevealDebugEnabled(bvParam), "reveal debug should be false"); // Has bvreveal=notdebug in query param. No reveal:debug in bvstate bvParam = new BVParameters(); bvParam.BaseURI = "http://localhost:8080/Sample/Example-1.jsp"; bvParam.PageURI = "http://localhost:8080/Sample/Example-1.jsp?bvstate=pg:2/ct:r/st:p/id:ssl-certificates&bvreveal=notdebug"; Assert.IsFalse(BVUtility.isRevealDebugEnabled(bvParam), "reveal debug should be false"); // Has bvreveal=debug in query param bvParam = new BVParameters(); bvParam.BaseURI = "http://localhost:8080/Sample/Example-1.jsp"; bvParam.PageURI = "http://localhost:8080/Sample/Example-1.jsp?bvstate=pg:2/ct:r/st:p/id:ssl-certificates&bvreveal=debug"; Assert.IsTrue(BVUtility.isRevealDebugEnabled(bvParam), "reveal debug should be true"); // Has reveal:notdebug in bvstate bvParam = new BVParameters(); bvParam.BaseURI = "http://localhost:8080/Sample/Example-1.jsp"; bvParam.PageURI = "http://localhost:8080/Sample/Example-1.jsp?bvstate=pg:2/ct:r/st:p/id:ssl-certificates/reveal:notdebug"; Assert.IsFalse(BVUtility.isRevealDebugEnabled(bvParam), "reveal debug should be false"); // Has reveal:debug in bvstate bvParam = new BVParameters(); bvParam.BaseURI = "http://localhost:8080/Sample/Example-1.jsp"; bvParam.PageURI = "http://localhost:8080/Sample/Example-1.jsp?bvstate=pg:2/ct:r/st:p/id:ssl-certificates/reveal:debug"; Assert.IsTrue(BVUtility.isRevealDebugEnabled(bvParam), "reveal debug should be true"); }
public void TestAggregate_InvalidURL() { BVConfiguration _bvConfig = new BVSdkConfiguration(); _bvConfig.addProperty(BVClientConfig.SEO_SDK_ENABLED, "true"); _bvConfig.addProperty(BVClientConfig.LOAD_SEO_FILES_LOCALLY, "false"); _bvConfig.addProperty(BVClientConfig.CLOUD_KEY, "adobe-invalid-55d020998d7b4776fb0f9df49278083c"); _bvConfig.addProperty(BVClientConfig.STAGING, "false"); _bvConfig.addProperty(BVClientConfig.BV_ROOT_FOLDER, "8814"); _bvConfig.addProperty(BVClientConfig.EXECUTION_TIMEOUT, "300000"); BVParameters _bvParam = new BVParameters(); _bvParam.UserAgent = "google"; _bvParam.BaseURI = "http://localhost:8080/thispage.htm"; _bvParam.PageURI = "http://localhost:8080/abcd" + "?" + "notSure=1&letSee=2"; _bvParam.ContentType = new BVContentType(BVContentType.REVIEWS); _bvParam.SubjectType = new BVSubjectType(BVSubjectType.PRODUCT); _bvParam.SubjectId = "PR6"; BVUIContent _bvOutput = new BVManagedUIContent(_bvConfig); String sBvOutputSummary = _bvOutput.getAggregateRating(_bvParam); Assert.IsTrue(sBvOutputSummary.Contains("<li data-bvseo=\"ms\">bvseo-msg: The resource to the URL or file is currently unavailable.;</li>"), "there should be error message for SubjectId"); sBvOutputSummary = _bvOutput.getReviews(_bvParam); Assert.IsTrue(sBvOutputSummary.Contains("<li data-bvseo=\"ms\">bvseo-msg: The resource to the URL or file is currently unavailable.;</li>"), "there should be error message for SubjectId"); sBvOutputSummary = _bvOutput.getContent(_bvParam); Assert.IsTrue(sBvOutputSummary.Contains("<li data-bvseo=\"ms\">bvseo-msg: The resource to the URL or file is currently unavailable.;</li>"), "there should be error message for SubjectId"); }
public void TestSEOContent_SinglePageHTTP_AggregateRating_BotDetected() { BVConfiguration _bvConfig = new BVSdkConfiguration(); _bvConfig.addProperty(BVClientConfig.SEO_SDK_ENABLED, "true"); _bvConfig.addProperty(BVClientConfig.LOAD_SEO_FILES_LOCALLY, "false"); _bvConfig.addProperty(BVClientConfig.CLOUD_KEY, "myshco-69cb945801532dcfb57ad2b0d2471b68"); _bvConfig.addProperty(BVClientConfig.STAGING, "true"); _bvConfig.addProperty(BVClientConfig.BV_ROOT_FOLDER, "Main_Site-en_US"); _bvConfig.addProperty(BVClientConfig.EXECUTION_TIMEOUT, "1"); _bvConfig.addProperty(BVClientConfig.EXECUTION_TIMEOUT_BOT, "10000"); BVParameters _bvParam = new BVParameters(); //_bvParam.UserAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/536.29.13 (KHTML, like Gecko) Version/6.0.4 Safari/536.29.13"; _bvParam.UserAgent = "google"; _bvParam.BaseURI = "http://localhost:8080/thispage.htm"; _bvParam.PageURI = "http://localhost:8080/abcd" + "?" + "notSure=1&letSee=2"; _bvParam.ContentType = new BVContentType(BVContentType.REVIEWS); _bvParam.SubjectType = new BVSubjectType(BVSubjectType.PRODUCT); _bvParam.SubjectId = "2000002"; BVUIContent _bvOutput = new BVManagedUIContent(_bvConfig); String sBvOutputSummary = _bvOutput.getAggregateRating(_bvParam); Assert.AreEqual<Boolean>(sBvOutputSummary.Contains("itemprop=\"aggregateRating\" itemscope itemtype=\"http://schema.org/AggregateRating\""), true, "there should be AggregateRating in the content"); Assert.AreEqual<Boolean>(!sBvOutputSummary.Contains("itemprop=\"review\" itemscope itemtype=\"http://schema.org/Review\""), true, "there should not be reviews section in the content"); String sBvOutputReviews = _bvOutput.getReviews(_bvParam); Assert.AreEqual<Boolean>(sBvOutputReviews.Contains("itemprop=\"review\" itemscope itemtype=\"http://schema.org/Review\""), true, "there should be reviews section in the content"); Assert.AreEqual<Boolean>(!sBvOutputReviews.Contains("itemprop=\"aggregateRating\" itemscope itemtype=\"http://schema.org/AggregateRating\""), true, "there should not be AggregateRating in the content"); }
public void TestSEOContent_SinglePageHTTP_GetReviews_ERR0013() { BVConfiguration _bvConfig = new BVSdkConfiguration(); _bvConfig.addProperty(BVClientConfig.SEO_SDK_ENABLED, "true"); _bvConfig.addProperty(BVClientConfig.LOAD_SEO_FILES_LOCALLY, "false"); _bvConfig.addProperty(BVClientConfig.CLOUD_KEY, "myshco-69cb945801532dcfb57ad2b0d2471b68"); //"adobe-55d020998d7b4776fb0f9df49278083c"); _bvConfig.addProperty(BVClientConfig.STAGING, "true"); _bvConfig.addProperty(BVClientConfig.BV_ROOT_FOLDER, "Main_Site-en_US"); _bvConfig.addProperty(BVClientConfig.EXECUTION_TIMEOUT, "300000"); BVParameters _bvParam = new BVParameters(); _bvParam.UserAgent = "googlebot"; _bvParam.BaseURI = "http://localhost:8080/thispage.htm"; _bvParam.PageURI = "http://localhost:8080/abcd" + "?" + "notSure=1&letSee=2"; _bvParam.ContentType = new BVContentType(BVContentType.REVIEWS); _bvParam.SubjectType = new BVSubjectType(BVSubjectType.PRODUCT); _bvParam.SubjectId = "3000001"; BVUIContent _bvOutput = new BVManagedUIContent(_bvConfig); String sBvOutputSummary = _bvOutput.getAggregateRating(_bvParam); Console.WriteLine(sBvOutputSummary); Assert.AreEqual<Boolean>(sBvOutputSummary.Contains("itemprop=\"aggregateRating\" itemscope itemtype=\"http://schema.org/AggregateRating\""), true, "there should be AggregateRating in the content"); Assert.AreEqual<Boolean>(!sBvOutputSummary.Contains("itemprop=\"review\" itemscope itemtype=\"http://schema.org/Review\""), true, "there should not be reviews section in the content"); String sBvOutputReviews = _bvOutput.getReviews(_bvParam); Assert.AreEqual<Boolean>(sBvOutputReviews.Contains("itemprop=\"review\" itemscope itemtype=\"http://schema.org/Review\""), true, "there should be reviews section in the content"); Assert.AreEqual<Boolean>(!sBvOutputReviews.Contains("itemprop=\"aggregateRating\" itemscope itemtype=\"http://schema.org/AggregateRating\""), true, "there should not be AggregateRating in the content"); }
private void loadData( String currentUrl, String contentType, int index, HtmlGenericControl reviewSummaryControl, HtmlGenericControl reviewControl, HtmlGenericControl contentControl ) { String cloudKey = Request.QueryString["cloudkey" + index]; String staging = Request.QueryString["staging" + index]; String testing = Request.QueryString["testing" + index]; String rootFolder = Request.QueryString["site" + index]; String subjectType = Request.QueryString["subjecttype" + index]; String subjectId = Request.QueryString["subjectid" + index]; if (subjectType != null) { subjectType = BVSubjectType.subjectType(subjectType); } // Separate defaulting Logic for spotlight vs non-spotlight content if (contentType.Equals(BVContentType.SPOTLIGHTS, StringComparison.OrdinalIgnoreCase)) { if (subjectId == null) { subjectId = "category-1"; } if (cloudKey == null) { cloudKey = "spotlight-four-746e2fc1211dc8964560350c9f28b67a"; } if (staging == null) { staging = "false"; } if (testing == null) { testing = "true"; } if (rootFolder == null) { rootFolder = "Main_Site-en_US"; } if (subjectType == null) { subjectType = BVSubjectType.CATEGORY; } } else if (contentType.Equals(BVContentType.REVIEWS, StringComparison.OrdinalIgnoreCase)) { if (subjectId == null) { subjectId = "product1"; } if (cloudKey == null) { cloudKey = "spotlight-five-311f5a3337b8d5e0d817adb7af279b0a"; } if (staging == null) { staging = "true"; } if (testing == null) { testing = "false"; } if (rootFolder == null) { rootFolder = "Other_Zone-en_US"; } if (subjectType == null) { subjectType = BVSubjectType.PRODUCT; } } else if (contentType.Equals(BVContentType.QUESTIONS, StringComparison.OrdinalIgnoreCase)) { if (subjectId == null) { subjectId = "data-gen-u2y505e9u1l65i43l6zz22ve6"; } if (cloudKey == null) { cloudKey = "agileville-78B2EF7DE83644CAB5F8C72F2D8C8491"; } if (staging == null) { staging = "true"; } if (testing == null) { testing = "false"; } if (rootFolder == null) { rootFolder = "Main_Site-en_US"; } if (subjectType == null) { subjectType = BVSubjectType.PRODUCT; } } else { if (subjectId == null) { subjectId = "test1"; } if (cloudKey == null) { cloudKey = "Allergan-09b83694534c0d1bcd24851e9e9d172f"; } if (staging == null) { staging = "true"; } if (testing == null) { testing = "false"; } if (rootFolder == null) { rootFolder = "8183-en_us"; } if (subjectType == null) { subjectType = BVSubjectType.PRODUCT; } } // Setting up BVConfiguration and BVParameters BVConfiguration bvConfig = new BVSdkConfiguration(); bvConfig.addProperty(BVClientConfig.CLOUD_KEY, cloudKey); bvConfig.addProperty(BVClientConfig.STAGING, staging); bvConfig.addProperty(BVClientConfig.TESTING, testing); bvConfig.addProperty(BVClientConfig.BV_ROOT_FOLDER, rootFolder); bvConfig.addProperty(BVClientConfig.SEO_SDK_ENABLED, "true"); // use this as a kill switch bvConfig.addProperty(BVClientConfig.LOAD_SEO_FILES_LOCALLY, "false"); // set to false if using cloud-based content bvConfig.addProperty(BVClientConfig.LOCAL_SEO_FILE_ROOT, "/"); bvConfig.addProperty(BVClientConfig.CRAWLER_AGENT_PATTERN, "yandex"); bvConfig.addProperty(BVClientConfig.EXECUTION_TIMEOUT, "1500"); bvConfig.addProperty(BVClientConfig.EXECUTION_TIMEOUT_BOT, "2000"); var bvParameters = new BVParameters { BaseURI = currentUrl, PageURI = currentUrl, UserAgent = Request.UserAgent, ContentType = new BVContentType(contentType), SubjectType = new BVSubjectType(subjectType), SubjectId = subjectId }; if (contentType.Equals(BVContentType.STORIES, StringComparison.OrdinalIgnoreCase)) { bvParameters.ContentSubType = new BVContentSubType(BVContentSubType.STORIES_LIST); } BVUIContent bvOutput = new BVManagedUIContent(bvConfig); if (contentType.Equals(BVContentType.REVIEWS, StringComparison.OrdinalIgnoreCase)) { reviewSummaryControl.InnerHtml = bvOutput.getAggregateRating(bvParameters); reviewControl.InnerHtml = bvOutput.getReviews(bvParameters); contentControl.InnerHtml = ""; } else { contentControl.InnerHtml = bvOutput.getContent(bvParameters); reviewSummaryControl.InnerHtml = ""; reviewControl.InnerHtml = ""; } }
public void TestSEOContentFromHTTP__InvalidCloudKey() { BVConfiguration bvConfig = new BVSdkConfiguration(); bvConfig.addProperty(BVClientConfig.LOAD_SEO_FILES_LOCALLY, "false"); bvConfig.addProperty(BVClientConfig.CLOUD_KEY, "bodyglove_bad_URL-8e186f6e16e2d688784728b360df41c5"); bvConfig.addProperty(BVClientConfig.BV_ROOT_FOLDER, "Main_Site-en_US"); bvConfig.addProperty(BVClientConfig.EXECUTION_TIMEOUT, "300000"); BVUIContent uiContent = new BVManagedUIContent(bvConfig); BVParameters bvParameters = new BVParameters(); bvParameters.UserAgent = "google"; bvParameters.ContentType = new BVContentType(BVContentType.REVIEWS); bvParameters.SubjectType = new BVSubjectType(BVSubjectType.PRODUCT); bvParameters.SubjectId = "50524"; String theUIContent = uiContent.getContent(bvParameters); Assert.AreEqual<Boolean>(!theUIContent.Contains("bvseo-reviewsSection"), true, "there should not be bvseo-reviewsSection in the content"); Assert.AreEqual<Boolean>(theUIContent.Contains("The resource to the URL or file is currently unavailable."), true, "there should be resource unavailable message"); }
public void Test_PageNumber_C2013() { BVConfiguration bvConfiguration = new BVSdkConfiguration(); bvConfiguration.addProperty(BVClientConfig.BV_ROOT_FOLDER, "Main_Site-en_US"); bvConfiguration.addProperty(BVClientConfig.CLOUD_KEY, "agileville-78B2EF7DE83644CAB5F8C72F2D8C8491"); bvConfiguration.addProperty(BVClientConfig.LOAD_SEO_FILES_LOCALLY, "false"); bvConfiguration.addProperty(BVClientConfig.SEO_SDK_ENABLED, "true"); bvConfiguration.addProperty(BVClientConfig.STAGING, "true"); BVUIContent bvUIContent = new BVManagedUIContent(bvConfiguration); BVParameters bvParameters = new BVParameters(); bvParameters.UserAgent = "google"; bvParameters.SubjectType = new BVSubjectType(BVSubjectType.PRODUCT); bvParameters.PageNumber = "2"; bvParameters.BaseURI = "http://www.example.com/store/products/reviews"; bvParameters.PageURI = "http://www.example.com/store/products/data-gen-696yl2lg1kurmqxn88fqif5y2/?utm_campaign=bazaarvoice&utm_medium=SearchVoice&utm_source=RatingsAndReviews&utm_content=Default&bvpage=pg3/ctre/stp/iddata-gen-5zkafmln4wymhcfbp5u6hmv5q&bvreveal=debug"; String content = bvUIContent.getContent(bvParameters); Assert.IsTrue( content.Contains("http://seo-stg.bazaarvoice.com/agileville-78B2EF7DE83644CAB5F8C72F2D8C8491/" + "Main_Site-en_US/reviews/product/2/data-gen-5zkafmln4wymhcfbp5u6hmv5q.htm"), "URL should be valid url"); Assert.IsTrue(!content.Contains("The resource to the URL or file is currently unavailable"), "resource not found or unavailable message should not be there"); Debug.WriteLine(content); }
public void Test_InteractivePage_Review() { BVParameters bvParameters = new BVParameters(); bvParameters.UserAgent = "google"; bvParameters.ContentType = new BVContentType(BVContentType.REVIEWS); bvParameters.SubjectType = new BVSubjectType(BVSubjectType.PRODUCT); bvParameters.SubjectId = "50524"; bvParameters.BaseURI = "http://www.example.com/store/products/reviews"; bvParameters.PageURI = "http://www.example.com/store/products/data-gen-696yl2lg1kurmqxn88fqif5y2/?utm_campaign=bazaarvoice&utm_medium=SearchVoice&utm_source=RatingsAndReviews&utm_content=Default&bvrrp=Main_Site-en_US/reviews/product/2/50524.htm"; String erroMessage = null; String content = null; try { stopwatch.Restart(); content = _bvUIContent.getContent(bvParameters); stopwatch.Stop(); } catch (BVSdkException e) { erroMessage = e.getMessage(); } Assert.IsTrue(stopwatch.ElapsedMilliseconds <= CONTENT_RETRIEVAL_THRESHOLD, String.Format("Content retrieval time exceeded {0} milliseconds", CONTENT_RETRIEVAL_THRESHOLD)); Assert.IsNull(erroMessage, "There should not be any errorMessage"); Assert.IsNotNull(content, "There should be content to proceed further assertion!!"); Assert.IsFalse(content.Contains("HTTP 403 Forbidden"), "There should be valid content"); }