Exemple #1
0
        public void TestLookupHeadersOK()
        {
            var ua = "Mozilla/5.0 (Nintendo Switch; WebApplet) AppleWebKit/601.6 (KHTML, like Gecko) NF/4.0.0.5.9 NintendoBrowser/5.1.0.13341";
            IDictionary <string, string> requestHeaders = new Dictionary <string, string>()
            {
                { "User-agent", ua },
                { "content-Type", "gzip, deflate" },
                { "Accept-Encoding", "application/json" }
            };


            WmClient client = WmClient.Create(serverProtocol, serverIP, serverPort, "");

            client.SetCacheSize(1000);
            try
            {
                Assert.NotNull(client);
                JSONDeviceData jsonData = client.LookupHeaders(requestHeaders);
                Assert.NotNull(jsonData);
                var did = jsonData.Capabilities;
                Assert.NotNull(did);
                Assert.True(did.Count >= 40);
                Assert.AreEqual("Smart-TV", did["form_factor"]);

                Assert.AreEqual("false", did["is_app"]);
                Assert.AreEqual("false", did["is_app_webview"]);
                Assert.AreEqual("Nintendo", did["advertised_device_os"]);
                Assert.AreEqual("Nintendo Switch", did["complete_device_name"]);
                Assert.AreEqual("nintendo_switch_ver1", did["wurfl_id"]);

                // Now set a cap filter
                string[] reqCaps = { "form_factor", "is_mobile", "is_app", "complete_device_name", "advertised_device_os", "brand_name" };
                client.SetRequestedCapabilities(reqCaps);
                jsonData = client.LookupHeaders(requestHeaders);
                did      = jsonData.Capabilities;
                Assert.NotNull(did);
                Assert.AreEqual(7, did.Count);

                // Now, lets try with mixed case headers
                requestHeaders = new Dictionary <string, string>()
                {
                    { "usEr-AgeNt", ua },
                    { "CoNtent-TYpe", "gzip, deflate" },
                    { "Accept-ENCoding", "application/json" }
                };

                jsonData = client.LookupHeaders(requestHeaders);
                did      = jsonData.Capabilities;
                Assert.NotNull(did);

                int[] cacheSizes = client.GetActualCacheSizes();
                // Cache has been hit even if header names have a different case
                Assert.AreEqual(1, cacheSizes[1]);
            }
            finally
            {
                client.DestroyConnection();
            }
        }