Esempio n. 1
0
            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);
        }