private FiftyOneDegreesServiceTester() { var sitecoreSettingsWrapper = new Mock <ISitecoreSettingsWrapper>(); sitecoreSettingsWrapper.Setup(x => x.GetSetting("Sitecore.FiftyOneDegrees.CloudDeviceDetection.ApiLicenceKey")).Returns(LicenceKey); sitecoreSettingsWrapper.Setup(x => x.GetSetting("Sitecore.FiftyOneDegrees.CloudDeviceDetection.ApiEndpoint")).Returns(FiftyOneDegreesEndpoint); _httpRuntimeCacheWrapper = new Mock <IHttpRuntimeCacheWrapper>(); _httpBrowser = new Mock <IHttpBrowserCapabilitiesWrapper>(); _httpBrowser.Setup(x => x.Capabilities).Returns(new Dictionary <string, object>()); var httpRequestWrapper = new Mock <IHttpRequestWrapper>(); httpRequestWrapper.Setup(x => x.UserAgent).Returns(UserAgent); httpRequestWrapper.Setup(x => x.Browser).Returns(_httpBrowser.Object); _httpContextItems = new Mock <IDictionary>(); _httpContextWrapper = new Mock <IHttpContextWrapper>(); _httpContextWrapper.Setup(x => x.Request).Returns(httpRequestWrapper.Object); _httpContextWrapper.Setup(x => x.Items).Returns(_httpContextItems.Object); _webRequestWrapper = new Mock <IWebRequestWrapper>(); _fiftyOneDegreesService = new FiftyOneDegreesService(sitecoreSettingsWrapper.Object, _httpContextWrapper.Object, _httpRuntimeCacheWrapper.Object, _webRequestWrapper.Object); }
public void CheckScreenPixelWidthProperty() { //51 degrees returns "Unknown" for the screen pixel width for desktop browsers. //When a call is made to HttpContext.Current.Request.Browser.ScreenPixelsWidth that value is returned as an int. //That then throws an incorrect format exception. //This test has been built so tes that our fix will work. var workerrequest = new Mock <HttpWorkerRequest>(); workerrequest.Setup(w => w.GetKnownRequestHeader(39)).Returns("Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"); var request = new HttpRequest("", "http://test.com", ""); HttpContext.Current = new HttpContext(request, new HttpResponse(new StringWriter())); var type = request.GetType(); var field = type.GetField("_wr", global::System.Reflection.BindingFlags.NonPublic | global::System.Reflection.BindingFlags.Instance); field.SetValue(request, workerrequest.Object); var capsdictionary = new Dictionary <string, object>(StringComparer.OrdinalIgnoreCase); var caps = new HttpBrowserCapabilities() { Capabilities = capsdictionary }; HttpContext.Current.Request.Browser = caps; var setting = new Mock <ISitecoreSettingsWrapper>(); setting.Setup(i => i.GetSetting(It.IsAny <string>())).Returns("teststring"); var httpcontextWrapper = new FiftyOneDegrees.CloudDeviceDetection.System.Wrappers.HttpContextWrapper(HttpContext.Current); var httpruntimeCache = new Mock <IHttpRuntimeCacheWrapper>(); var httpWebRequest = new FakeWebRequestWrapper(); var sut = new FiftyOneDegreesService(setting.Object, httpcontextWrapper, httpruntimeCache.Object, httpWebRequest); sut.SetBrowserCapabilities(); Assert.IsTrue(request.Browser.ScreenPixelsWidth > 0); }