diff --git a/nanoFramework.WebServer.FileSystem/nanoFramework.WebServer.FileSystem.nfproj b/nanoFramework.WebServer.FileSystem/nanoFramework.WebServer.FileSystem.nfproj index 8effd2e..d474576 100644 --- a/nanoFramework.WebServer.FileSystem/nanoFramework.WebServer.FileSystem.nfproj +++ b/nanoFramework.WebServer.FileSystem/nanoFramework.WebServer.FileSystem.nfproj @@ -104,7 +104,7 @@ True - ..\packages\nanoFramework.System.Net.1.10.68\lib\System.Net.dll + ..\packages\nanoFramework.System.Net.1.10.70\lib\System.Net.dll ..\packages\nanoFramework.System.Net.Http.Server.1.5.118\lib\System.Net.Http.dll diff --git a/nanoFramework.WebServer.FileSystem/packages.config b/nanoFramework.WebServer.FileSystem/packages.config index 9d227bc..0d2e62a 100644 --- a/nanoFramework.WebServer.FileSystem/packages.config +++ b/nanoFramework.WebServer.FileSystem/packages.config @@ -5,7 +5,7 @@ - + diff --git a/nanoFramework.WebServer.FileSystem/packages.lock.json b/nanoFramework.WebServer.FileSystem/packages.lock.json index 6cdc165..9ae7d28 100644 --- a/nanoFramework.WebServer.FileSystem/packages.lock.json +++ b/nanoFramework.WebServer.FileSystem/packages.lock.json @@ -34,9 +34,9 @@ }, "nanoFramework.System.Net": { "type": "Direct", - "requested": "[1.10.68, 1.10.68]", - "resolved": "1.10.68", - "contentHash": "PoM4NadhtMBnuGiOPqi+TJZD8xicz0v72hG5gPGDvWXeKDCMYCMqiCqY+di2pRL3qGHkF+hh8kLOf+wBUJBWNQ==" + "requested": "[1.10.70, 1.10.70]", + "resolved": "1.10.70", + "contentHash": "XP4XdmsCDrXcOJDSfo4zgqccTwPoygBH8y19pnVmrF/EYwbx4WzaMvRE5VnYKu2bp10T78su16+jxzeFZADqDw==" }, "nanoFramework.System.Net.Http.Server": { "type": "Direct", diff --git a/nanoFramework.WebServer.sln b/nanoFramework.WebServer.sln index f8a5431..b6e6c3b 100644 --- a/nanoFramework.WebServer.sln +++ b/nanoFramework.WebServer.sln @@ -15,6 +15,10 @@ Project("{11A8DD76-328B-46DF-9F39-F559912D0360}") = "nanoFramework.WebServer.Fil EndProject Project("{11A8DD76-328B-46DF-9F39-F559912D0360}") = "nanoFramework.WebServer.Tests", "tests\nanoFramework.WebServer.Tests\nanoFramework.WebServer.Tests.nfproj", "{2C2B4750-2A48-4D19-9404-178AAB946482}" EndProject +Project("{11A8DD76-328B-46DF-9F39-F559912D0360}") = "WebServerE2ETests", "tests\WebServerE2ETests\WebServerE2ETests.nfproj", "{A0611EAD-FB04-44E7-BAD3-459DD0A7FF46}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{E76226D2-994C-4EE1-B346-050F31B175BD}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -39,10 +43,20 @@ Global {2C2B4750-2A48-4D19-9404-178AAB946482}.Release|Any CPU.ActiveCfg = Release|Any CPU {2C2B4750-2A48-4D19-9404-178AAB946482}.Release|Any CPU.Build.0 = Release|Any CPU {2C2B4750-2A48-4D19-9404-178AAB946482}.Release|Any CPU.Deploy.0 = Release|Any CPU + {A0611EAD-FB04-44E7-BAD3-459DD0A7FF46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A0611EAD-FB04-44E7-BAD3-459DD0A7FF46}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A0611EAD-FB04-44E7-BAD3-459DD0A7FF46}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {A0611EAD-FB04-44E7-BAD3-459DD0A7FF46}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A0611EAD-FB04-44E7-BAD3-459DD0A7FF46}.Release|Any CPU.Build.0 = Release|Any CPU + {A0611EAD-FB04-44E7-BAD3-459DD0A7FF46}.Release|Any CPU.Deploy.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {2C2B4750-2A48-4D19-9404-178AAB946482} = {E76226D2-994C-4EE1-B346-050F31B175BD} + {A0611EAD-FB04-44E7-BAD3-459DD0A7FF46} = {E76226D2-994C-4EE1-B346-050F31B175BD} + EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {262CE437-AD82-4481-8B77-593288986C70} EndGlobalSection diff --git a/nanoFramework.WebServer/WebServer.cs b/nanoFramework.WebServer/WebServer.cs index 2c3a32f..f5a58f4 100644 --- a/nanoFramework.WebServer/WebServer.cs +++ b/nanoFramework.WebServer/WebServer.cs @@ -560,6 +560,7 @@ namespace nanoFramework.WebServer } InvokeRoute(route, context); + HandleContextResponse(context); } if (!isRoute) diff --git a/nanoFramework.WebServer/nanoFramework.WebServer.nfproj b/nanoFramework.WebServer/nanoFramework.WebServer.nfproj index 49131bd..8dbe718 100644 --- a/nanoFramework.WebServer/nanoFramework.WebServer.nfproj +++ b/nanoFramework.WebServer/nanoFramework.WebServer.nfproj @@ -68,7 +68,7 @@ True - ..\packages\nanoFramework.System.Net.1.10.68\lib\System.Net.dll + ..\packages\nanoFramework.System.Net.1.10.70\lib\System.Net.dll ..\packages\nanoFramework.System.Net.Http.Server.1.5.118\lib\System.Net.Http.dll diff --git a/nanoFramework.WebServer/packages.config b/nanoFramework.WebServer/packages.config index 3c1cc69..8c05fdf 100644 --- a/nanoFramework.WebServer/packages.config +++ b/nanoFramework.WebServer/packages.config @@ -4,7 +4,7 @@ - + diff --git a/nanoFramework.WebServer/packages.lock.json b/nanoFramework.WebServer/packages.lock.json index 9907c2f..9f0e4ae 100644 --- a/nanoFramework.WebServer/packages.lock.json +++ b/nanoFramework.WebServer/packages.lock.json @@ -28,9 +28,9 @@ }, "nanoFramework.System.Net": { "type": "Direct", - "requested": "[1.10.68, 1.10.68]", - "resolved": "1.10.68", - "contentHash": "PoM4NadhtMBnuGiOPqi+TJZD8xicz0v72hG5gPGDvWXeKDCMYCMqiCqY+di2pRL3qGHkF+hh8kLOf+wBUJBWNQ==" + "requested": "[1.10.70, 1.10.70]", + "resolved": "1.10.70", + "contentHash": "XP4XdmsCDrXcOJDSfo4zgqccTwPoygBH8y19pnVmrF/EYwbx4WzaMvRE5VnYKu2bp10T78su16+jxzeFZADqDw==" }, "nanoFramework.System.Net.Http.Server": { "type": "Direct", diff --git a/tests/WebServerE2ETests/AuthController.cs b/tests/WebServerE2ETests/AuthController.cs new file mode 100644 index 0000000..8c76db3 --- /dev/null +++ b/tests/WebServerE2ETests/AuthController.cs @@ -0,0 +1,46 @@ +// Copyright (c) 2020 Laurent Ellerbach and the project contributors +// See LICENSE file in the project root for full license information. + +using nanoFramework.WebServer; +using System.Net; + +namespace WebServerE2ETests +{ + [Authentication("Basic")] + class AuthController + { + [Route("authbasic")] + public void Basic(WebServerEventArgs e) + { + WebServer.OutputHttpCode(e.Context.Response, HttpStatusCode.OK); + } + + [Route("authbasicspecial")] + [Authentication("Basic:user2 password")] + public void Special(WebServerEventArgs e) + { + WebServer.OutputHttpCode(e.Context.Response, HttpStatusCode.OK); + } + + [Authentication("ApiKey:superKey1234")] + [Route("authapi")] + public void Key(WebServerEventArgs e) + { + WebServer.OutputHttpCode(e.Context.Response, HttpStatusCode.OK); + } + + [Route("authnone")] + [Authentication("None")] + public void None(WebServerEventArgs e) + { + WebServer.OutputHttpCode(e.Context.Response, HttpStatusCode.OK); + } + + [Authentication("ApiKey")] + [Route("authdefaultapi")] + public void DefaultApi(WebServerEventArgs e) + { + WebServer.OutputHttpCode(e.Context.Response, HttpStatusCode.OK); + } + } +} diff --git a/tests/WebServerE2ETests/Program.cs b/tests/WebServerE2ETests/Program.cs new file mode 100644 index 0000000..285f986 --- /dev/null +++ b/tests/WebServerE2ETests/Program.cs @@ -0,0 +1,105 @@ +// Copyright (c) 2020 Laurent Ellerbach and the project contributors +// See LICENSE file in the project root for full license information. + +using nanoFramework.Networking; +using nanoFramework.WebServer; +using System; +using System.Diagnostics; +using System.IO; +using System.Net; +using System.Net.NetworkInformation; +using System.Threading; + +namespace WebServerE2ETests +{ + public class Program + { + private const string Ssid = "yourSSID"; + private const string Password = "YourPAssword"; + private static WebServer _server; + + public static void Main() + { + Debug.WriteLine("Hello from nanoFramework WebServer end to end tests!"); + + var res = WifiNetworkHelper.ConnectDhcp(Ssid, Password, requiresDateTime: true, token: new CancellationTokenSource(60_000).Token); + if (!res) + { + Debug.WriteLine("Impossible to connect to wifi, most likely invalid credentials"); + return; + } + + Debug.WriteLine($"Connected with wifi credentials. IP Address: {GetCurrentIPAddress()}"); + _server = new WebServer(80, HttpProtocol.Http, new Type[] { typeof(SimpleRouteController), typeof(AuthController) }); + // To test authentication with various scenarios + _server.ApiKey = "ATopSecretAPIKey1234"; + _server.Credential = new NetworkCredential("topuser", "topPassword"); + // Add a handler for commands that are received by the server. + _server.CommandReceived += ServerCommandReceived; + + // Start the server. + _server.Start(); + + Thread.Sleep(Timeout.Infinite); + + // Browse our samples repository: https://github.com/nanoframework/samples + // Check our documentation online: https://docs.nanoframework.net/ + // Join our lively Discord community: https://discord.gg/gCyBu8T + } + + private static void ServerCommandReceived(object obj, WebServerEventArgs e) + { + const string FileName = "I:\\Text.txt"; + var url = e.Context.Request.RawUrl; + Debug.WriteLine($"{nameof(ServerCommandReceived)} {e.Context.Request.HttpMethod} {url}"); + + if (url.ToLower().IndexOf("/param.htm") == 0) + { + // Test with parameters + var parameters = WebServer.DecodeParam(url); + string toOutput = "" + + "Hi from nanoFramework ServerHere are the parameters of this URL:
"; + foreach (var par in parameters) + { + toOutput += $"Parameter name: {par.Name}, Value: {par.Value}
"; + } + toOutput += ""; + WebServer.OutPutStream(e.Context.Response, toOutput); + return; + } + else if (url.IndexOf("/Text.txt") == 0) + { + if (File.Exists(FileName)) + { + WebServer.SendFileOverHTTP(e.Context.Response, FileName); + return; + } + else + { + WebServer.OutputHttpCode(e.Context.Response, HttpStatusCode.NotFound); + return; + } + } + else if (url.ToLower().IndexOf("/useinternal") == 0) + { + File.WriteAllText(FileName, "This is a test file for WebServer"); + } + else + { + WebServer.OutPutStream(e.Context.Response, "" + + "Hi from nanoFramework ServerYou want me to say hello in a real HTML page!
Generate an internal text.txt file
" + + "Download the Text.txt file
" + + "Try this url with parameters: /param.htm?param1=42&second=24&NAme=Ellerbach"); + return; + } + } + + public static string GetCurrentIPAddress() + { + NetworkInterface ni = NetworkInterface.GetAllNetworkInterfaces()[0]; + + // get first NI ( Wifi on ESP32 ) + return ni.IPv4Address.ToString(); + } + } +} diff --git a/tests/WebServerE2ETests/Properties/AssemblyInfo.cs b/tests/WebServerE2ETests/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..b7baab6 --- /dev/null +++ b/tests/WebServerE2ETests/Properties/AssemblyInfo.cs @@ -0,0 +1,33 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("CSharp.BlankApplication")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("CSharp.BlankApplication")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/tests/WebServerE2ETests/SimpleRouteController.cs b/tests/WebServerE2ETests/SimpleRouteController.cs new file mode 100644 index 0000000..1299b87 --- /dev/null +++ b/tests/WebServerE2ETests/SimpleRouteController.cs @@ -0,0 +1,49 @@ +// Copyright (c) 2020 Laurent Ellerbach and the project contributors +// See LICENSE file in the project root for full license information. + +using nanoFramework.WebServer; +using System.Diagnostics; +using System.Net; + +namespace WebServerE2ETests +{ + internal class SimpleRouteController + { + [Route("okcode")] + public void OutputWithOKCode(WebServerEventArgs e) + { + Debug.WriteLine($"{nameof(OutputWithOKCode)} {e.Context.Request.HttpMethod} {e.Context.Request.RawUrl}"); + WebServer.OutputHttpCode(e.Context.Response, HttpStatusCode.OK); + } + + [Route("notfoundcode")] + public void OutputWithNotFoundCode(WebServerEventArgs e) + { + Debug.WriteLine($"{nameof(OutputWithNotFoundCode)} {e.Context.Request.HttpMethod} {e.Context.Request.RawUrl}"); + WebServer.OutputHttpCode(e.Context.Response, HttpStatusCode.NotFound); + } + + [Route("oktext")] + public void OutputWithOKText(WebServerEventArgs e) + { + Debug.WriteLine($"{nameof(OutputWithOKText)} {e.Context.Request.HttpMethod} {e.Context.Request.RawUrl}"); + WebServer.OutPutStream(e.Context.Response, "OK"); + } + + [Route("test"), Route("Test2"), Route("tEst42"), Route("TEST")] + [CaseSensitive] + [Method("GET")] + public void RouteGetTest(WebServerEventArgs e) + { + string route = $"The route asked is {e.Context.Request.RawUrl.TrimStart('/').Split('/')[0]}"; + e.Context.Response.ContentType = "text/plain"; + WebServer.OutPutStream(e.Context.Response, route); + } + + [Route("test/any")] + public void RouteAnyTest(WebServerEventArgs e) + { + WebServer.OutputHttpCode(e.Context.Response, HttpStatusCode.OK); + } + } +} diff --git a/tests/WebServerE2ETests/WebServerE2ETests.nfproj b/tests/WebServerE2ETests/WebServerE2ETests.nfproj new file mode 100644 index 0000000..1bcb2ac --- /dev/null +++ b/tests/WebServerE2ETests/WebServerE2ETests.nfproj @@ -0,0 +1,76 @@ + + + + $(MSBuildExtensionsPath)\nanoFramework\v1.0\ + + + + Debug + AnyCPU + {11A8DD76-328B-46DF-9F39-F559912D0360};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + a0611ead-fb04-44e7-bad3-459dd0a7ff46 + Exe + Properties + 512 + WebServerE2ETests + WebServerE2ETests + v1.0 + + + + + + + + + + + + + + ..\..\packages\nanoFramework.CoreLibrary.1.15.5\lib\mscorlib.dll + + + ..\..\packages\nanoFramework.Runtime.Events.1.11.15\lib\nanoFramework.Runtime.Events.dll + + + ..\..\packages\nanoFramework.System.Collections.1.5.31\lib\nanoFramework.System.Collections.dll + + + ..\..\packages\nanoFramework.System.Runtime.1.0.6\lib\nanoFramework.System.Runtime.dll + + + ..\..\packages\nanoFramework.System.Text.1.2.54\lib\nanoFramework.System.Text.dll + + + ..\..\packages\nanoFramework.System.Device.Wifi.1.5.71\lib\System.Device.Wifi.dll + + + ..\..\packages\nanoFramework.System.IO.FileSystem.1.1.32\lib\System.IO.FileSystem.dll + + + ..\..\packages\nanoFramework.System.IO.Streams.1.1.52\lib\System.IO.Streams.dll + + + ..\..\packages\nanoFramework.System.Net.1.10.70\lib\System.Net.dll + + + ..\..\packages\nanoFramework.System.Net.Http.Server.1.5.118\lib\System.Net.Http.dll + + + ..\..\packages\nanoFramework.System.Threading.1.1.32\lib\System.Threading.dll + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/WebServerE2ETests/packages.config b/tests/WebServerE2ETests/packages.config new file mode 100644 index 0000000..860b7a3 --- /dev/null +++ b/tests/WebServerE2ETests/packages.config @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/WebServerE2ETests/packages.lock.json b/tests/WebServerE2ETests/packages.lock.json new file mode 100644 index 0000000..4b6318a --- /dev/null +++ b/tests/WebServerE2ETests/packages.lock.json @@ -0,0 +1,73 @@ +{ + "version": 1, + "dependencies": { + ".NETnanoFramework,Version=v1.0": { + "nanoFramework.CoreLibrary": { + "type": "Direct", + "requested": "[1.15.5, 1.15.5]", + "resolved": "1.15.5", + "contentHash": "u2+GvAp1uxLrGdILACAZy+EVKOs28EQ52j8Lz7599egXZ3GBGejjnR2ofhjMQwzrJLlgtyrsx8nSLngDfJNsAg==" + }, + "nanoFramework.Runtime.Events": { + "type": "Direct", + "requested": "[1.11.15, 1.11.15]", + "resolved": "1.11.15", + "contentHash": "3uDNSTfiaewDAyi6fOMWYru0JCn/gr8DEv+Ro/V12SzojU9Dyxl5nSVOBtBXts7vErfIthB6SPiK180AMnrI8A==" + }, + "nanoFramework.System.Collections": { + "type": "Direct", + "requested": "[1.5.31, 1.5.31]", + "resolved": "1.5.31", + "contentHash": "q7G0BHkbhUzpUJiOQNlZZDSMcZEU2/QJBDiSEQAF23wOya4EBaCXS74jAVcEfkHBgOkF413jKZq5vldpjqUfUw==" + }, + "nanoFramework.System.Device.Wifi": { + "type": "Direct", + "requested": "[1.5.71, 1.5.71]", + "resolved": "1.5.71", + "contentHash": "9xOeWznAgLbnEoBLLKSJ3tDL4ZnxVBhUZDfNbMpoGXlb8zYLBMDNOtlWtSJmvpQb4SH7BNoqdEIBtLyXIKMCZw==" + }, + "nanoFramework.System.IO.FileSystem": { + "type": "Direct", + "requested": "[1.1.32, 1.1.32]", + "resolved": "1.1.32", + "contentHash": "wZMqZFaQcN5BGlzCMgS7R0pMyNL2hxE+FGrng0xiOydTLCXIJsmloGHJkv9oZ/MxEVYQhTlqsn8vxd8ouQUnOg==" + }, + "nanoFramework.System.IO.Streams": { + "type": "Direct", + "requested": "[1.1.52, 1.1.52]", + "resolved": "1.1.52", + "contentHash": "gdExWfWNSl4dgaIoVHHFmhLiRSKAabHA8ueHuErGAWd97qaoN2wSHCtvKqfOu1zuzyccbFpm4HBxVsh6bWMyXw==" + }, + "nanoFramework.System.Net": { + "type": "Direct", + "requested": "[1.10.70, 1.10.70]", + "resolved": "1.10.70", + "contentHash": "XP4XdmsCDrXcOJDSfo4zgqccTwPoygBH8y19pnVmrF/EYwbx4WzaMvRE5VnYKu2bp10T78su16+jxzeFZADqDw==" + }, + "nanoFramework.System.Net.Http.Server": { + "type": "Direct", + "requested": "[1.5.118, 1.5.118]", + "resolved": "1.5.118", + "contentHash": "ufWlPDHTEvZEYsXqagHLC9K5v7o6o/lRYF+obNaWeLXlxbLR32TAPXgrSGcIkhjY6wksX77lcqu2wkAgStRdag==" + }, + "nanoFramework.System.Runtime": { + "type": "Direct", + "requested": "[1.0.6, 1.0.6]", + "resolved": "1.0.6", + "contentHash": "n87itPUMSsOJkUsdoXr0vhiBTggZBMgCtIIC7c+RsVAhF2u/0TU/h+ZLNyFL8Xhl0taPcTN4LiPPTkI+e95Q/g==" + }, + "nanoFramework.System.Text": { + "type": "Direct", + "requested": "[1.2.54, 1.2.54]", + "resolved": "1.2.54", + "contentHash": "k3OutSNRMs9di42LQ+5GbpHBY07aMEZWGkaS3Mj3ZU4cWqJc4deFGzRd+LBFQl1mRGdQaM5sl/euTZdcg8R9Zg==" + }, + "nanoFramework.System.Threading": { + "type": "Direct", + "requested": "[1.1.32, 1.1.32]", + "resolved": "1.1.32", + "contentHash": "6o7Y4gH15FLuo2FWGLecABiCD57V5QMf5g/hEneV64VmhoXI8Bk7r6BDBPTfAePs738xbc1ECpA5dJmbSmtilg==" + } + } + } +} \ No newline at end of file diff --git a/tests/nanoFramework.WebServer.Tests/nanoFramework.WebServer.Tests.nfproj b/tests/nanoFramework.WebServer.Tests/nanoFramework.WebServer.Tests.nfproj index bef0a52..9f1ff14 100644 --- a/tests/nanoFramework.WebServer.Tests/nanoFramework.WebServer.Tests.nfproj +++ b/tests/nanoFramework.WebServer.Tests/nanoFramework.WebServer.Tests.nfproj @@ -53,7 +53,7 @@ ..\..\packages\nanoFramework.System.IO.Streams.1.1.52\lib\System.IO.Streams.dll
- ..\..\packages\nanoFramework.System.Net.1.10.68\lib\System.Net.dll + ..\..\packages\nanoFramework.System.Net.1.10.70\lib\System.Net.dll ..\..\packages\nanoFramework.System.Net.Http.Server.1.5.118\lib\System.Net.Http.dll diff --git a/tests/nanoFramework.WebServer.Tests/packages.config b/tests/nanoFramework.WebServer.Tests/packages.config index 6fe8370..7533713 100644 --- a/tests/nanoFramework.WebServer.Tests/packages.config +++ b/tests/nanoFramework.WebServer.Tests/packages.config @@ -4,7 +4,7 @@ - + diff --git a/tests/nanoFramework.WebServer.Tests/packages.lock.json b/tests/nanoFramework.WebServer.Tests/packages.lock.json index 7beaad0..1c8e317 100644 --- a/tests/nanoFramework.WebServer.Tests/packages.lock.json +++ b/tests/nanoFramework.WebServer.Tests/packages.lock.json @@ -28,9 +28,9 @@ }, "nanoFramework.System.Net": { "type": "Direct", - "requested": "[1.10.68, 1.10.68]", - "resolved": "1.10.68", - "contentHash": "PoM4NadhtMBnuGiOPqi+TJZD8xicz0v72hG5gPGDvWXeKDCMYCMqiCqY+di2pRL3qGHkF+hh8kLOf+wBUJBWNQ==" + "requested": "[1.10.70, 1.10.70]", + "resolved": "1.10.70", + "contentHash": "XP4XdmsCDrXcOJDSfo4zgqccTwPoygBH8y19pnVmrF/EYwbx4WzaMvRE5VnYKu2bp10T78su16+jxzeFZADqDw==" }, "nanoFramework.System.Net.Http.Server": { "type": "Direct",