diff --git a/.gitignore b/.gitignore index b363c8808..a4f6e5283 100644 --- a/.gitignore +++ b/.gitignore @@ -80,3 +80,4 @@ docs/html/ packages paket.exe paket.lock +paket.bootstrapper.exe diff --git a/.paket/paket.targets b/.paket/paket.targets new file mode 100644 index 000000000..0fd370f90 --- /dev/null +++ b/.paket/paket.targets @@ -0,0 +1,41 @@ + + + + + true + + true + $(MSBuildThisFileDirectory) + $(MSBuildThisFileDirectory)..\ + /Library/Frameworks/Mono.framework/Commands/mono + mono + + + + $(PaketToolsPath)paket.exe + $(PaketToolsPath)paket.bootstrapper.exe + "$(PaketExePath)" + $(MonoPath) --runtime=v4.0.30319 "$(PaketExePath)" + "$(PaketBootStrapperExePath)" $(PaketBootStrapperCommandArgs) + $(MonoPath) --runtime=v4.0.30319 $(PaketBootStrapperExePath) $(PaketBootStrapperCommandArgs) + + $(MSBuildProjectDirectory)\paket.references + $(MSBuildStartupDirectory)\paket.references + $(MSBuildProjectFullPath).paket.references + $(PaketCommand) restore --references-files "$(PaketReferences)" + $(PaketBootStrapperCommand) + + RestorePackages; $(BuildDependsOn); + + + + + + + + + + + + + diff --git a/NuGet.config b/NuGet.config deleted file mode 100644 index 19982907e..000000000 --- a/NuGet.config +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/README.md b/README.md index 11d338f38..920375f46 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ -# OpenStack.NET +# OpenStack.NET - Unsupported -Need Help? Email us at [sdk-support@rackspace.com](mailto:sdk-support@rackspace.com). +**This project is in-between maintainers.** Interested? Contact sdk-support@rackspace.com. +[![MyGet Build Status](https://www.myget.org/BuildSource/Badge/openstacknetsdk?identifier=32094041-4be1-4ba5-9691-beb27c4b8f02)](https://www.myget.org/) [![Join the chat at https://gitter.im/openstacknetsdk/openstack.net](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/openstacknetsdk/openstack.net?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) OpenStack.NET is an OpenStack .NET SDK, written for the Microsoft .NET platform, is designed to enable developers to seamlessly work with diff --git a/build.cmd b/build.cmd index 468a85e74..1109b35c4 100644 --- a/build.cmd +++ b/build.cmd @@ -7,7 +7,9 @@ IF "%1"=="help" ( GOTO :help ) :parse IF NOT "%1"=="" ( - IF /I "%1"=="/Configuration" ( + IF /I "%1"=="/Version" ( + SET VersionArg=/p:Version=%2 + ) ELSE IF /I "%1"=="/Configuration" ( SET ConfigArg=/p:Configuration=%2 ) ELSE ( SET TargetArg=/t:%1 @@ -33,7 +35,7 @@ if not defined VisualStudioVersion ( ) :build -msbuild build\build.proj %TargetArg% %ConfigArg% /nologo +msbuild build\build.proj %TargetArg% %ConfigArg% %VersionArg% /nologo exit /b %ERRORLEVEL% :help diff --git a/build/build.proj b/build/build.proj index 547282d62..602a6b129 100644 --- a/build/build.proj +++ b/build/build.proj @@ -3,15 +3,16 @@ Debug - - $(bamboo_GitVersion_NuGetVersion) - 0.0.0-dev - - $(MSBuildThisFileDirectory.Replace('build\','src'))\packages\ILMerge.2.14.1208\tools\ILMerge.exe - $(LocalAppData)\NuGet\NuGet.exe + 0.0.0-dev + 2.66.9 + $(MSBuildThisFileDirectory.Replace('build\','.paket'))\paket.bootstrapper.exe + $(MSBuildThisFileDirectory.Replace('build\','.paket'))\paket.exe + $(MSBuildThisFileDirectory.Replace('build\','packages')) + $(PackagesFolder)\NuGet.CommandLine\tools\NuGet.exe "$(MSBuildToolsPath)\MSBuild.exe" - $(MSBuildThisFileDirectory.Replace('build\','src'))\packages\xunit.runner.console.2.0.0\tools\xunit.console.exe - $(MSBuildThisFileDirectory.Replace('build\','src'))\packages\xunit.runner.console.2.0.0\tools\NUnitXml.xslt + $(PackagesFolder)\xunit.runner.console\tools\xunit.console.exe + $(PackagesFolder)\xunit.runner.console\tools\NUnitXml.xslt + $(PackagesFolder)\ILMerge\tools\ILMerge.exe @@ -20,9 +21,10 @@ - - + + + @@ -33,20 +35,20 @@ - $(MSBuildThisFileDirectory.Replace('build\','src'))\packages\EWSoftware.SHFB.2014.11.22-beta\tools + $(PackagesFolder)\EWSoftware.SHFB\tools - - - + + + - - - + + + @@ -57,20 +59,20 @@ - - + + - + - + ..\src\testing\migration\migration.sln @@ -96,12 +98,12 @@ WorkingDirectory="..\src\corelib\bin\v4.0\$(Configuration)" /> - + - + @@ -113,7 +115,7 @@ Condition=" '$(ShouldPublishToNuGet)' == 'True' " /> - + diff --git a/myget.ps1 b/myget.ps1 new file mode 100644 index 000000000..e01edbec1 --- /dev/null +++ b/myget.ps1 @@ -0,0 +1,2 @@ +.\build.cmd CI /Version ${env:GitVersion.NuGetVersion} +exit $LastExitCode diff --git a/paket.dependencies b/paket.dependencies new file mode 100644 index 000000000..f3d2df6ac --- /dev/null +++ b/paket.dependencies @@ -0,0 +1,48 @@ +source https://www.myget.org/F/openstacknetsdk/api/v2 +source https://www.nuget.org/api/v2 +redirects: on + +nuget EWSoftware.SHFB = 2014.11.22-beta +nuget Flurl.Http.Signed ~> 0.7.0 +nuget Flurl.Signed ~> 1.0 +nuget ILMerge +nuget Marvin.JsonPatch.Signed ~> 0.7.0 +nuget Moq +nuget Newtonsoft.Json ~> 6.0 +nuget NuGet.CommandLine +nuget SharpZipLib +nuget SimpleRESTServices = 1.3.0.1 +nuget xunit +nuget xunit.abstractions +nuget xunit.assert +nuget xunit.core +nuget xunit.extensibility.core +nuget xunit.runner.console +nuget xunit.runner.visualstudio + +group History-1.5 + redirects: on + source https://www.nuget.org/api/v2 + framework: net45 + strategy: min + + nuget openstack.net = 1.5.0.2 + nuget SimpleRESTServices = 1.3.0.1 + +group History-1.4 + redirects: on + source https://www.nuget.org/api/v2 + framework: net45 + strategy: min + + nuget openstack.net = 1.4.0.2 + nuget SimpleRESTServices = 1.3.0.1 + +group History-1.3.6 + redirects: on + source https://www.nuget.org/api/v2 + framework: net35 + strategy: min + + nuget openstack.net = 1.3.6.1 + nuget SimpleRESTServices = 1.3.0.1 \ No newline at end of file diff --git a/paket.lock b/paket.lock new file mode 100644 index 000000000..fc9e8a48a --- /dev/null +++ b/paket.lock @@ -0,0 +1,253 @@ +REDIRECTS: ON +NUGET + remote: https://www.myget.org/F/openstacknetsdk/api/v2 + EWSoftware.SHFB (2014.11.22-beta) + remote: https://www.nuget.org/api/v2 + Flurl.Http.Signed (0.7) + Flurl.Signed (>= 1.0.10) - framework: >= net45, portable-net45+sl50+win+wpa81+wp80 + Microsoft.Bcl.Async (>= 1.0.168) - framework: portable-net45+sl50+win+wpa81+wp80 + Microsoft.Net.Http (>= 2.2.22) - framework: portable-net45+sl50+win+wpa81+wp80 + Newtonsoft.Json (>= 6.0.3) - framework: >= net45, portable-net45+sl50+win+wpa81+wp80 + PCLStorage (>= 0.9.6) - framework: portable-net45+sl50+win+wpa81+wp80 + Flurl.Signed (1.0.10) + ilmerge (2.14.1208) + Marvin.JsonPatch.Signed (0.7) + Newtonsoft.Json (>= 6.0.4) + Microsoft.Bcl (1.1.10) - framework: portable-net45+sl50+win+wpa81+wp80 + Microsoft.Bcl.Build (>= 1.0.14) + Microsoft.Bcl.Async (1.0.168) - framework: portable-net45+sl50+win+wpa81+wp80 + Microsoft.Bcl (>= 1.1.8) + Microsoft.Bcl.Build (1.0.21) - import_targets: false, framework: portable-net45+sl50+win+wpa81+wp80 + Microsoft.Net.Http (2.2.29) - framework: portable-net45+sl50+win+wpa81+wp80 + Microsoft.Bcl (>= 1.1.10) + Microsoft.Bcl.Build (>= 1.0.14) + Moq (4.2.1510.2205) + Newtonsoft.Json (6.0.8) + NuGet.CommandLine (3.4.3) + PCLStorage (1.0.2) - framework: portable-net45+sl50+win+wpa81+wp80 + Microsoft.Bcl (>= 1.1.6) - framework: net10, net11, net20, net30, net35, net40, net40-full + Microsoft.Bcl.Async (>= 1.0.165) - framework: net10, net11, net20, net30, net35, net40, net40-full + SharpZipLib (0.86) + SimpleRESTServices (1.3.0.1) + Newtonsoft.Json (>= 5.0.6) + System.Collections (4.0.10) - framework: dnxcore50 + System.Diagnostics.Debug (>= 4.0) - framework: dnxcore50 + System.Resources.ResourceManager (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0.20) - framework: dnxcore50 + System.Runtime.Extensions (>= 4.0) - framework: dnxcore50 + System.Threading (>= 4.0) - framework: dnxcore50 + System.Diagnostics.Contracts (4.0) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Diagnostics.Debug (4.0.10) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Globalization (4.0.10) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.IO (4.0.10) - framework: dnxcore50 + System.Globalization (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0.20) - framework: dnxcore50 + System.Text.Encoding (>= 4.0) - framework: dnxcore50 + System.Text.Encoding (>= 4.0.10) - framework: dnxcore50 + System.Text.Encoding.Extensions (>= 4.0) - framework: dnxcore50 + System.Threading (>= 4.0) - framework: dnxcore50 + System.Threading.Tasks (>= 4.0) - framework: dnxcore50 + System.Linq (4.0) - framework: dnxcore50 + System.Collections (>= 4.0.10) - framework: dnxcore50 + System.Diagnostics.Debug (>= 4.0.10) - framework: dnxcore50 + System.Resources.ResourceManager (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0.20) - framework: dnxcore50 + System.Runtime.Extensions (>= 4.0.10) - framework: dnxcore50 + System.Linq.Expressions (4.0.10) - framework: dnxcore50 + System.Collections (>= 4.0) - framework: dnxcore50 + System.Diagnostics.Debug (>= 4.0) - framework: dnxcore50 + System.Globalization (>= 4.0) - framework: dnxcore50 + System.IO (>= 4.0) - framework: dnxcore50 + System.Linq (>= 4.0) - framework: dnxcore50 + System.ObjectModel (>= 4.0) - framework: dnxcore50 + System.Reflection (>= 4.0) - framework: dnxcore50 + System.Reflection.Emit (>= 4.0) - framework: dnxcore50 + System.Reflection.Extensions (>= 4.0) - framework: dnxcore50 + System.Reflection.Primitives (>= 4.0) - framework: dnxcore50 + System.Reflection.TypeExtensions (>= 4.0) - framework: dnxcore50 + System.Resources.ResourceManager (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0.20) - framework: dnxcore50 + System.Runtime.Extensions (>= 4.0) - framework: dnxcore50 + System.Threading (>= 4.0) - framework: dnxcore50 + System.ObjectModel (4.0.10) - framework: dnxcore50 + System.Collections (>= 4.0.10) - framework: dnxcore50 + System.Diagnostics.Debug (>= 4.0.10) - framework: dnxcore50 + System.Resources.ResourceManager (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0.20) - framework: dnxcore50 + System.Threading (>= 4.0.10) - framework: dnxcore50 + System.Private.Uri (4.0) - framework: dnxcore50 + System.Reflection (4.0.10) - framework: dnxcore50 + System.IO (>= 4.0) - framework: dnxcore50 + System.Reflection.Primitives (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0.20) - framework: dnxcore50 + System.Reflection.Emit (4.0) - framework: dnxcore50 + System.IO (>= 4.0) - framework: dnxcore50 + System.Reflection (>= 4.0) - framework: dnxcore50 + System.Reflection.Emit.ILGeneration (>= 4.0) - framework: dnxcore50 + System.Reflection.Primitives (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Reflection.Emit.ILGeneration (4.0) - framework: dnxcore50 + System.Reflection (>= 4.0) - framework: dnxcore50 + System.Reflection.Primitives (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Reflection.Extensions (4.0) - framework: dnxcore50 + System.Diagnostics.Debug (>= 4.0.10) - framework: dnxcore50 + System.Reflection (>= 4.0) - framework: dnxcore50 + System.Reflection (>= 4.0.10) - framework: dnxcore50 + System.Reflection.Primitives (>= 4.0) - framework: dnxcore50 + System.Reflection.TypeExtensions (>= 4.0) - framework: dnxcore50 + System.Resources.ResourceManager (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0.20) - framework: dnxcore50 + System.Runtime.Extensions (>= 4.0.10) - framework: dnxcore50 + System.Reflection.Primitives (4.0) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Threading (>= 4.0) - framework: dnxcore50 + System.Reflection.TypeExtensions (4.0) - framework: dnxcore50 + System.Diagnostics.Contracts (>= 4.0) - framework: dnxcore50 + System.Diagnostics.Debug (>= 4.0.10) - framework: dnxcore50 + System.Linq (>= 4.0) - framework: dnxcore50 + System.Reflection (>= 4.0) - framework: dnxcore50 + System.Reflection (>= 4.0.10) - framework: dnxcore50 + System.Reflection.Primitives (>= 4.0) - framework: dnxcore50 + System.Resources.ResourceManager (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0.20) - framework: dnxcore50 + System.Runtime.Extensions (>= 4.0.10) - framework: dnxcore50 + System.Resources.ResourceManager (4.0) - framework: dnxcore50 + System.Globalization (>= 4.0) - framework: dnxcore50 + System.Reflection (>= 4.0) - framework: dnxcore50 + System.Reflection (>= 4.0.10) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0.20) - framework: dnxcore50 + System.Runtime (4.0.20) - framework: dnxcore50 + System.Private.Uri (>= 4.0) - framework: dnxcore50 + System.Runtime.Extensions (4.0.10) - framework: dnxcore50 + System.Runtime (>= 4.0.20) - framework: dnxcore50 + System.Text.Encoding (4.0.10) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Text.Encoding.Extensions (4.0.10) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Text.Encoding (>= 4.0.10) - framework: dnxcore50 + System.Text.RegularExpressions (4.0.10) - framework: dnxcore50 + System.Collections (>= 4.0.10) - framework: dnxcore50 + System.Globalization (>= 4.0.10) - framework: dnxcore50 + System.Resources.ResourceManager (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0.20) - framework: dnxcore50 + System.Runtime.Extensions (>= 4.0.10) - framework: dnxcore50 + System.Threading (>= 4.0.10) - framework: dnxcore50 + System.Threading (4.0.10) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Threading.Tasks (>= 4.0) - framework: dnxcore50 + System.Threading.Tasks (4.0.10) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + xunit (2.1) + xunit.assert (2.1) + xunit.core (2.1) + xunit.abstractions (2.0) + xunit.assert (2.1) + System.Collections (>= 4.0) - framework: dnxcore50 + System.Diagnostics.Debug (>= 4.0) - framework: dnxcore50 + System.Globalization (>= 4.0) - framework: dnxcore50 + System.Linq (>= 4.0) - framework: dnxcore50 + System.ObjectModel (>= 4.0) - framework: dnxcore50 + System.Reflection (>= 4.0) - framework: dnxcore50 + System.Reflection.Extensions (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Runtime.Extensions (>= 4.0) - framework: dnxcore50 + System.Text.RegularExpressions (>= 4.0) - framework: dnxcore50 + System.Threading.Tasks (>= 4.0) - framework: dnxcore50 + xunit.core (2.1) + System.Collections (>= 4.0) - framework: dnxcore50 + System.Diagnostics.Debug (>= 4.0) - framework: dnxcore50 + System.Globalization (>= 4.0) - framework: dnxcore50 + System.Linq (>= 4.0) - framework: dnxcore50 + System.Reflection (>= 4.0) - framework: dnxcore50 + System.Reflection.Extensions (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Runtime.Extensions (>= 4.0) - framework: dnxcore50 + System.Threading.Tasks (>= 4.0) - framework: dnxcore50 + xunit.abstractions (>= 2.0) - framework: dnxcore50 + xunit.extensibility.core (2.1) - framework: >= net45, dnx451, dnxcore50, monoandroid, monotouch, portable-net45+win80+wp80+wpa81, xamarinios, winv4.5, wpv8.0, wpav8.1 + xunit.extensibility.execution (2.1) - framework: >= net45, dnx451, dnxcore50, monoandroid, monotouch, portable-net45+win80+wp80+wpa81, xamarinios, winv4.5, wpv8.0, wpav8.1 + xunit.extensibility.core (2.1) + xunit.abstractions (2.0) + xunit.extensibility.execution (2.1) - framework: >= net45, dnx451, dnxcore50, monoandroid, monotouch, portable-net45+win80+wp80+wpa81, xamarinios, winv4.5, wpv8.0, wpav8.1 + System.Collections (>= 4.0) - framework: dnxcore50 + System.Diagnostics.Debug (>= 4.0) - framework: dnxcore50 + System.Globalization (>= 4.0) - framework: dnxcore50 + System.IO (>= 4.0) - framework: dnxcore50 + System.Linq (>= 4.0) - framework: dnxcore50 + System.Linq.Expressions (>= 4.0) - framework: dnxcore50 + System.Reflection (>= 4.0) - framework: dnxcore50 + System.Reflection.Extensions (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Runtime.Extensions (>= 4.0) - framework: dnxcore50 + System.Text.Encoding (>= 4.0) - framework: dnxcore50 + System.Threading (>= 4.0) - framework: dnxcore50 + System.Threading.Tasks (>= 4.0) - framework: dnxcore50 + xunit.abstractions (>= 2.0) - framework: dnxcore50 + xunit.extensibility.core (2.1) - framework: >= net45, dnx451, dnxcore50, monoandroid, monotouch, xamarinios, winv4.5, wpv8.0, wpav8.1 + xunit.runner.console (2.1) + xunit.runner.visualstudio (2.1) + +GROUP History-1.3.6 +REDIRECTS: ON +STRATEGY: MIN +FRAMEWORK: NET35 +NUGET + remote: https://www.nuget.org/api/v2 + Newtonsoft.Json (5.0.8) + openstack.net (1.3.6.1) + Newtonsoft.Json (>= 5.0.8) + SimpleRESTServices (>= 1.3.0.1) + TaskParallelLibrary (>= 1.0.2856) + SimpleRESTServices (1.3.0.1) + Newtonsoft.Json (>= 5.0.6) + TaskParallelLibrary (1.0.2856) + +GROUP History-1.4 +REDIRECTS: ON +STRATEGY: MIN +FRAMEWORK: NET45 +NUGET + remote: https://www.nuget.org/api/v2 + Flurl.Http.Signed (0.6.2.2015062601) + Flurl.Signed (>= 1.0.8) + Newtonsoft.Json (>= 6.0.3) + Flurl.Signed (1.0.8) + Marvin.JsonPatch.Signed (0.7) + Newtonsoft.Json (>= 6.0.4) + Newtonsoft.Json (6.0.4) + openstack.net (1.4.0.2) + Flurl.Http.Signed (>= 0.6.2.2015062601) + Marvin.JsonPatch.Signed (>= 0.7) + Newtonsoft.Json (>= 6.0.4) + SimpleRESTServices (1.3.0.1) + SimpleRESTServices (1.3.0.1) + Newtonsoft.Json (>= 5.0.6) + +GROUP History-1.5 +REDIRECTS: ON +STRATEGY: MIN +FRAMEWORK: NET45 +NUGET + remote: https://www.nuget.org/api/v2 + Flurl.Http.Signed (0.6.2.2015062601) + Flurl.Signed (>= 1.0.8) + Newtonsoft.Json (>= 6.0.3) + Flurl.Signed (1.0.8) + Marvin.JsonPatch.Signed (0.7) + Newtonsoft.Json (>= 6.0.4) + Newtonsoft.Json (6.0.4) + openstack.net (1.5.0.2) + Flurl.Http.Signed (>= 0.6.2.2015062601 < 0.7) + Marvin.JsonPatch.Signed (0.7) + Newtonsoft.Json (>= 6.0.1 < 7.0) + SimpleRESTServices (1.3.0.1) + Newtonsoft.Json (>= 5.0.6) diff --git a/pre-myget.ps1 b/pre-myget.ps1 new file mode 100644 index 000000000..30defacb1 --- /dev/null +++ b/pre-myget.ps1 @@ -0,0 +1 @@ +GitVersion /Output BuildServer /UpdateAssemblyInfo diff --git a/samples/NuGet.config b/samples/NuGet.config deleted file mode 100644 index acfd54951..000000000 --- a/samples/NuGet.config +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/src/Documentation/AdditionalReferenceDocumentation.Portable.shfbproj b/src/Documentation/AdditionalReferenceDocumentation.Portable.shfbproj index 2d0cf45db..110e478dd 100644 --- a/src/Documentation/AdditionalReferenceDocumentation.Portable.shfbproj +++ b/src/Documentation/AdditionalReferenceDocumentation.Portable.shfbproj @@ -27,10 +27,10 @@ - - - - + + + + OnlyWarningsAndErrors HtmlHelp1 @@ -58,9 +58,6 @@ - - - diff --git a/src/Documentation/AdditionalReferenceDocumentation.shfbproj b/src/Documentation/AdditionalReferenceDocumentation.shfbproj index 4fae5189c..1f9e56bbb 100644 --- a/src/Documentation/AdditionalReferenceDocumentation.shfbproj +++ b/src/Documentation/AdditionalReferenceDocumentation.shfbproj @@ -27,10 +27,10 @@ - - - - + + + + @@ -53,9 +53,6 @@ - - - \ No newline at end of file diff --git a/src/Documentation/Documentation.v4.0.shfbproj b/src/Documentation/Documentation.v4.0.shfbproj index 211b9721c..21cdb8ece 100644 --- a/src/Documentation/Documentation.v4.0.shfbproj +++ b/src/Documentation/Documentation.v4.0.shfbproj @@ -99,8 +99,25 @@ - - + + + + + + + + + + + + + + + + + + + @@ -180,9 +197,6 @@ - - - \ No newline at end of file diff --git a/src/Documentation/History/1.3.6/Documentation.1.3.6.shfbproj b/src/Documentation/History/1.3.6/Documentation.1.3.6.shfbproj index 4f99ab45b..8d5e63f57 100644 --- a/src/Documentation/History/1.3.6/Documentation.1.3.6.shfbproj +++ b/src/Documentation/History/1.3.6/Documentation.1.3.6.shfbproj @@ -20,8 +20,8 @@ API Reference Documentation en-US - - + + OnlyWarningsAndErrors Website @@ -85,19 +85,16 @@ ..\..\ - - - - - ..\..\..\packages\Newtonsoft.Json.5.0.8\lib\net35\Newtonsoft.Json.dll + + ..\..\..\..\packages\history-1.3.6\Newtonsoft.Json\lib\net35\Newtonsoft.Json.dll True - - ..\..\..\packages\SimpleRESTServices.1.3.0.1\lib\net35\SimpleRESTServices.dll + + ..\..\..\..\packages\history-1.3.6\SimpleRESTServices\lib\net35\SimpleRESTServices.dll True - - ..\..\..\packages\TaskParallelLibrary.1.0.2856.0\lib\Net35\System.Threading.dll + + ..\..\..\..\packages\history-1.3.6\TaskParallelLibrary\lib\Net35\System.Threading.dll True @@ -110,4 +107,4 @@ - + \ No newline at end of file diff --git a/src/Documentation/History/1.3.6/packages.config b/src/Documentation/History/1.3.6/packages.config deleted file mode 100644 index 5dcd6cfa9..000000000 --- a/src/Documentation/History/1.3.6/packages.config +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/Documentation/History/1.4/Documentation.1.4.shfbproj b/src/Documentation/History/1.4/Documentation.1.4.shfbproj index f69808eb3..898868109 100644 --- a/src/Documentation/History/1.4/Documentation.1.4.shfbproj +++ b/src/Documentation/History/1.4/Documentation.1.4.shfbproj @@ -20,8 +20,8 @@ API Reference Documentation en-US - - + + OnlyWarningsAndErrors Website @@ -85,31 +85,28 @@ ..\..\ - - - - - ..\..\..\packages\Flurl.Signed.1.0.8\lib\portable-net40+sl50+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Flurl.dll + + ..\..\..\..\packages\history-1.4\Flurl.Signed\lib\portable-net40+sl50+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Flurl.dll True - - ..\..\..\packages\Flurl.Http.Signed.0.6.2.2015062601\lib\net45\Flurl.Http.dll + + ..\..\..\..\packages\history-1.4\Flurl.Http.Signed\lib\net45\Flurl.Http.dll True - - ..\..\..\packages\Marvin.JsonPatch.Signed.0.7.0\lib\portable-net40+win+wpa81\Marvin.JsonPatch.dll + + ..\..\..\..\packages\history-1.4\Marvin.JsonPatch.Signed\lib\portable-net40+win+wpa81\Marvin.JsonPatch.dll True - - ..\..\..\packages\Newtonsoft.Json.6.0.4\lib\net45\Newtonsoft.Json.dll + + ..\..\..\..\packages\history-1.4\Newtonsoft.Json\lib\net45\Newtonsoft.Json.dll True - - ..\..\..\packages\SimpleRESTServices.1.3.0.1\lib\net35\SimpleRESTServices.dll + + ..\..\..\..\packages\history-1.4\SimpleRESTServices\lib\net35\SimpleRESTServices.dll True - - ..\..\..\packages\TaskParallelLibrary.1.0.2856.0\lib\Net35\System.Threading.dll + + ..\..\..\..\packages\history-1.4\TaskParallelLibrary\lib\Net35\System.Threading.dll True @@ -122,4 +119,4 @@ - + \ No newline at end of file diff --git a/src/Documentation/History/1.4/packages.config b/src/Documentation/History/1.4/packages.config deleted file mode 100644 index c35eb401b..000000000 --- a/src/Documentation/History/1.4/packages.config +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/Documentation/History/1.5/Documentation.1.5.shfbproj b/src/Documentation/History/1.5/Documentation.1.5.shfbproj index 9c8bc1711..910d0bbef 100644 --- a/src/Documentation/History/1.5/Documentation.1.5.shfbproj +++ b/src/Documentation/History/1.5/Documentation.1.5.shfbproj @@ -20,8 +20,8 @@ API Reference Documentation en-US - - + + OnlyWarningsAndErrors Website @@ -85,31 +85,28 @@ ..\..\ - - - - - ..\..\..\packages\Flurl.Signed.1.0.8\lib\portable-net40+sl50+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Flurl.dll + + ..\..\..\..\packages\history-1.5\Flurl.Signed\lib\portable-net40+sl50+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Flurl.dll True - - ..\..\..\packages\Flurl.Http.Signed.0.6.2.2015062601\lib\net45\Flurl.Http.dll + + ..\..\..\..\packages\history-1.5\Flurl.Http.Signed\lib\net45\Flurl.Http.dll True - - ..\..\..\packages\Marvin.JsonPatch.Signed.0.7.0\lib\portable-net40+win+wpa81\Marvin.JsonPatch.dll + + ..\..\..\..\packages\history-1.5\Marvin.JsonPatch.Signed\lib\portable-net40+win+wpa81\Marvin.JsonPatch.dll True - - ..\..\..\packages\Newtonsoft.Json.6.0.4\lib\net45\Newtonsoft.Json.dll + + ..\..\..\..\packages\history-1.5\Newtonsoft.Json\lib\net45\Newtonsoft.Json.dll True - - ..\..\..\packages\SimpleRESTServices.1.3.0.1\lib\net35\SimpleRESTServices.dll + + ..\..\..\..\packages\history-1.5\SimpleRESTServices\lib\net35\SimpleRESTServices.dll True - - ..\..\..\packages\TaskParallelLibrary.1.0.2856.0\lib\Net35\System.Threading.dll + + ..\..\..\..\packages\history-1.5\TaskParallelLibrary\lib\Net35\System.Threading.dll True diff --git a/src/Documentation/History/1.5/packages.config b/src/Documentation/History/1.5/packages.config deleted file mode 100644 index a2150cdfc..000000000 --- a/src/Documentation/History/1.5/packages.config +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/Documentation/History/Current/Documentation.Current.shfbproj b/src/Documentation/History/Current/Documentation.Current.shfbproj index 9162374a8..114c2b182 100644 --- a/src/Documentation/History/Current/Documentation.Current.shfbproj +++ b/src/Documentation/History/Current/Documentation.Current.shfbproj @@ -93,9 +93,6 @@ False ..\..\ - - - diff --git a/src/Documentation/History/Current/packages.config b/src/Documentation/History/Current/packages.config deleted file mode 100644 index 445d1f16e..000000000 --- a/src/Documentation/History/Current/packages.config +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/Documentation/NuGet.config b/src/Documentation/NuGet.config deleted file mode 100644 index 278737ecf..000000000 --- a/src/Documentation/NuGet.config +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/Documentation/packages.config b/src/Documentation/packages.config deleted file mode 100644 index b915eaadf..000000000 --- a/src/Documentation/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/Samples/CPPCodeSamples/CPPCodeSamples.vcxproj b/src/Samples/CPPCodeSamples/CPPCodeSamples.vcxproj index 641d3239e..6fc77e3ad 100644 --- a/src/Samples/CPPCodeSamples/CPPCodeSamples.vcxproj +++ b/src/Samples/CPPCodeSamples/CPPCodeSamples.vcxproj @@ -40,7 +40,6 @@ - true diff --git a/src/Samples/FSharpCodeSamples/FSharpCodeSamples.fsproj b/src/Samples/FSharpCodeSamples/FSharpCodeSamples.fsproj index 376f0d377..d4752e391 100644 --- a/src/Samples/FSharpCodeSamples/FSharpCodeSamples.fsproj +++ b/src/Samples/FSharpCodeSamples/FSharpCodeSamples.fsproj @@ -54,7 +54,7 @@ - + @@ -62,14 +62,6 @@ True - - ..\..\packages\Newtonsoft.Json.6.0.4\lib\net40\Newtonsoft.Json.dll - True - - - ..\..\packages\SimpleRESTServices.1.3.0.1-json6\lib\net40\SimpleRESTServices.dll - True - @@ -88,4 +80,90 @@ --> + + + + + + ..\..\..\packages\Newtonsoft.Json\lib\net20\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\..\packages\Newtonsoft.Json\lib\net35\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\..\packages\Newtonsoft.Json\lib\net40\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\..\packages\Newtonsoft.Json\lib\net45\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\..\packages\Newtonsoft.Json\lib\netcore45\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\..\packages\Newtonsoft.Json\lib\portable-net40+sl5+wp80+win8+wpa81\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\..\packages\Newtonsoft.Json\lib\portable-net45+wp80+win8+wpa81+aspnetcore50\Newtonsoft.Json.dll + True + True + + + + + + + + + ..\..\..\packages\SimpleRESTServices\lib\net35\SimpleRESTServices.dll + True + True + + + + + + + ..\..\..\packages\SimpleRESTServices\lib\net40\SimpleRESTServices.dll + True + True + + + + \ No newline at end of file diff --git a/src/Samples/FSharpCodeSamples/app.config b/src/Samples/FSharpCodeSamples/app.config index 44298137a..a38c807f2 100644 --- a/src/Samples/FSharpCodeSamples/app.config +++ b/src/Samples/FSharpCodeSamples/app.config @@ -1,11 +1,10 @@  - - - - - - - - - \ No newline at end of file + + + + True + + + + \ No newline at end of file diff --git a/src/Samples/FSharpCodeSamples/packages.config b/src/Samples/FSharpCodeSamples/packages.config deleted file mode 100644 index 37f0597d1..000000000 --- a/src/Samples/FSharpCodeSamples/packages.config +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/Samples/FSharpCodeSamples/paket.references b/src/Samples/FSharpCodeSamples/paket.references new file mode 100644 index 000000000..c74a3de10 --- /dev/null +++ b/src/Samples/FSharpCodeSamples/paket.references @@ -0,0 +1,2 @@ +Newtonsoft.Json +SimpleRESTServices \ No newline at end of file diff --git a/src/corelib/Compute/v2_1/IPProtocol.cs b/src/corelib/Compute/v2_1/IPProtocol.cs index 2c8a87b40..5455a39c7 100644 --- a/src/corelib/Compute/v2_1/IPProtocol.cs +++ b/src/corelib/Compute/v2_1/IPProtocol.cs @@ -1,30 +1,8 @@ -using OpenStack.Serialization; - namespace OpenStack.Compute.v2_1 { /// /// Internet Protocols. /// - public class IPProtocol : StringEnumeration - { - /// - protected IPProtocol(string displayName) - : base(displayName) - { } - - /// - /// ICMP - /// - public static readonly IPProtocol ICMP = new IPProtocol("icmp"); - - /// - /// TCP - /// - public static readonly IPProtocol TCP = new IPProtocol("tcp"); - - /// - /// UDP - /// - public static readonly IPProtocol UDP = new IPProtocol("udp"); - } + public class IPProtocol : Networking.v2.Serialization.IPProtocol + { } } \ No newline at end of file diff --git a/src/corelib/Compute/v2_1/Image.cs b/src/corelib/Compute/v2_1/Image.cs index 8872d330c..c0c2bcee6 100644 --- a/src/corelib/Compute/v2_1/Image.cs +++ b/src/corelib/Compute/v2_1/Image.cs @@ -40,19 +40,19 @@ public Image() /// The minimum disk size in GB that is required to boot the image. /// [JsonProperty("minDisk")] - public int MinimumDiskSize { get; set; } + public Int64 MinimumDiskSize { get; set; } /// /// The minimum amount of RAM in MB that is required to boot the image. /// [JsonProperty("minRam")] - public int MinimumMemorySize { get; set; } + public Int64 MinimumMemorySize { get; set; } /// /// The size of the image data, in bytes. /// [JsonProperty("OS-EXT-IMG-SIZE:size")] - public int? Size { get; set; } + public Int64? Size { get; set; } /// /// The build completion progress, as a percentage. @@ -111,7 +111,7 @@ public ImageType Type { return WaitForStatus(ImageStatus.Active, refreshDelay, timeout, progress, cancellationToken); } - + /// /// When this instance was not constructed by the , as it is missing the appropriate internal state to execute service calls. public override async Task WaitUntilDeletedAsync(TimeSpan? refreshDelay = null, TimeSpan? timeout = null, IProgress progress = null, CancellationToken cancellationToken = default(CancellationToken)) diff --git a/src/corelib/ContentDeliveryNetworks/v1/ServiceOperationFailedException.cs b/src/corelib/ContentDeliveryNetworks/v1/ServiceOperationFailedException.cs index 689de1c47..ba8f35596 100644 --- a/src/corelib/ContentDeliveryNetworks/v1/ServiceOperationFailedException.cs +++ b/src/corelib/ContentDeliveryNetworks/v1/ServiceOperationFailedException.cs @@ -27,7 +27,7 @@ public ServiceOperationFailedException(IEnumerable errors) /// The that contains contextual information about the source or destination. private ServiceOperationFailedException(SerializationInfo info, StreamingContext context) : base(info, context) { - Errors = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize>(info.GetString("service_errors")); + Errors = OpenStackNet.Deserialize>(info.GetString("service_errors")); } /// @@ -48,7 +48,7 @@ private ServiceOperationFailedException(SerializationInfo info, StreamingContext public override void GetObjectData(SerializationInfo info, StreamingContext context) { // ReSharper disable once ExceptionNotDocumented - info.AddValue("service_errors", OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(Errors)); + info.AddValue("service_errors", OpenStackNet.Serialize(Errors)); base.GetObjectData(info, context); } } diff --git a/src/corelib/Core/Providers/OpenStackIdentityProvider.cs b/src/corelib/Core/Providers/OpenStackIdentityProvider.cs index d5f48a6c1..ee08b700d 100644 --- a/src/corelib/Core/Providers/OpenStackIdentityProvider.cs +++ b/src/corelib/Core/Providers/OpenStackIdentityProvider.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using Newtonsoft.Json; using OpenStack; using OpenStack.Authentication; @@ -109,11 +110,12 @@ public override UserAccess GetUserAccess(CloudIdentity identity, bool forceCache if (response == null || response.Data == null) return null; - JToken userAccessObject = response.Data["access"]; - if (userAccessObject == null) + // The defalut json serialization is helpfully formatting the expires date string. Use our custom serializer for this part to prevent chaos of timezone proportions. + var rawJson = response.Data["access"]?.ToString(Formatting.None); + if (rawJson == null) return null; - UserAccess access = userAccessObject.ToObject(); + UserAccess access = OpenStackNet.Deserialize(rawJson); if (access == null || access.Token == null) return null; diff --git a/src/corelib/Networking/v2/IPProtocol.cs b/src/corelib/Networking/v2/IPProtocol.cs new file mode 100644 index 000000000..3a1f37096 --- /dev/null +++ b/src/corelib/Networking/v2/IPProtocol.cs @@ -0,0 +1,8 @@ +using OpenStack.Networking.v2.Serialization; + +namespace OpenStack.Networking.v2 +{ + /// + public class IPProtocol : IPProtocol + { } +} \ No newline at end of file diff --git a/src/corelib/Networking/v2/Layer3/NetworkingService_Layer3_Extensions.cs b/src/corelib/Networking/v2/Layer3/NetworkingService_Layer3_Extensions.cs index 4cff952a9..0ad8e74bf 100644 --- a/src/corelib/Networking/v2/Layer3/NetworkingService_Layer3_Extensions.cs +++ b/src/corelib/Networking/v2/Layer3/NetworkingService_Layer3_Extensions.cs @@ -6,6 +6,8 @@ using OpenStack.Networking.v2.Serialization; using OpenStack.Serialization; using OpenStack.Synchronous.Extensions; +using Flurl.Extensions; +using Flurl.Http; namespace OpenStack.Networking.v2.Layer3 { @@ -102,6 +104,20 @@ public static class NetworkingService_Layer3_Extensions return service._networkingApiBuilder.DeleteFloatingIPAsync(floatingIPId, cancellationToken); } #endregion + + #region Security Groups + /// + public static async Task> ListSecurityGroupsAsync(this NetworkingService service, SecurityGroupListOptions options = null, CancellationToken cancellationToken = default(CancellationToken)) + { + return await service._networkingApiBuilder.ListSecurityGroupsAsync(options, cancellationToken).ConfigureAwait(false); + } + + /// + public static async Task> ListSecurityGroupRulesAsync(this NetworkingService service, SecurityGroupRuleListOptions options = null, CancellationToken cancellationToken = default(CancellationToken)) + { + return await service._networkingApiBuilder.ListSecurityGroupRulesAsync(options, cancellationToken).ConfigureAwait(false); + } + #endregion } } @@ -200,5 +216,19 @@ public static void DeleteFloatingIP(this NetworkingService service, Identifier f service._networkingApiBuilder.DeleteFloatingIPAsync(floatingIPId).ForceSynchronous(); } #endregion + + #region Security Groups + /// + public static IEnumerable ListSecurityGroups(this NetworkingService service, SecurityGroupListOptions options = null) + { + return service.ListSecurityGroupsAsync(options).ForceSynchronous(); + } + /// + public static IEnumerable ListSecurityGroupRules(this NetworkingService service, SecurityGroupRuleListOptions options = null) + { + return service.ListSecurityGroupRulesAsync(options).ForceSynchronous(); + } + #endregion + } } diff --git a/src/corelib/Networking/v2/Layer3/SecurityGroup.cs b/src/corelib/Networking/v2/Layer3/SecurityGroup.cs new file mode 100644 index 000000000..03e27eabd --- /dev/null +++ b/src/corelib/Networking/v2/Layer3/SecurityGroup.cs @@ -0,0 +1,43 @@ +using System.Collections.Generic; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using OpenStack.Serialization; + +namespace OpenStack.Networking.v2.Layer3 +{ + /// + /// Represents the security group of the + /// + [JsonConverterWithConstructor(typeof(RootWrapperConverter), "security_group")] + public class SecurityGroup : IHaveExtraData, IServiceResource + { + /// + /// The security group description + /// + [JsonProperty("description")] + public string Description; + + /// + /// The UUID of security group + /// + [JsonProperty("id")] + public Identifier Id; + + /// + /// The security group name + /// + [JsonProperty("name")] + public string Name; + + /// + /// A list of objects. + /// + [JsonProperty("security_group_rules")] + public IList SecurityGroupRules; + + [JsonExtensionData] + IDictionary IHaveExtraData.Data { get; set; } = new Dictionary(); + + object IServiceResource.Owner { get; set; } + } +} diff --git a/src/corelib/Networking/v2/Layer3/SecurityGroupListOptions.cs b/src/corelib/Networking/v2/Layer3/SecurityGroupListOptions.cs new file mode 100644 index 000000000..47ed19ba6 --- /dev/null +++ b/src/corelib/Networking/v2/Layer3/SecurityGroupListOptions.cs @@ -0,0 +1,26 @@ +using System.Collections.Generic; + +namespace OpenStack.Networking.v2.Layer3 +{ + /// + /// Optional filter and paging options when listing security groups. + /// + public class SecurityGroupListOptions : FilterOptions + { + /// + /// Filter by the group name. + /// + public string Name { get; set; } + + /// + protected override IDictionary BuildQueryString() + { + var queryString = new Dictionary + { + ["name"] = Name + }; + + return queryString; + } + } +} diff --git a/src/corelib/Networking/v2/Layer3/SecurityGroupRule.cs b/src/corelib/Networking/v2/Layer3/SecurityGroupRule.cs new file mode 100644 index 000000000..04c46f79c --- /dev/null +++ b/src/corelib/Networking/v2/Layer3/SecurityGroupRule.cs @@ -0,0 +1,82 @@ +using System.Collections.Generic; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using OpenStack.Serialization; + +namespace OpenStack.Networking.v2.Layer3 +{ + /// + /// + /// + [JsonConverterWithConstructor(typeof(RootWrapperConverter), "security_group_rule")] + public class SecurityGroupRule : IHaveExtraData, IServiceResource + { + /// + /// ingress or egress: the direction in which the security group rule is applied. + /// For a compute instance, an ingress security group rule is applied to incoming (ingress) traffic for that instance. + /// An egress rule is applied to traffic leaving the instance. + /// + [JsonProperty("direction")] + public TrafficDirection Direction; + + /// + /// The internet protocol version. Addresses represented in CIDR must match the ingress or egress rules. + /// + [JsonProperty("ethertype")] + public IPVersion Ethertype; + + /// + /// The UUID of the security group rule. + /// + [JsonProperty("id")] + public Identifier Id; + + /// + /// The minimum port number in the range that is matched by the security group rule. + /// If the protocol is TCP or UDP, this value must be less than or equal to the port_range_max attribute value. + /// If the protocol is ICMP, this value must be an ICMP type. + /// + [JsonProperty("port_range_min")] + public int MinPort { get; set; } + + /// + /// The maximum port number in the range that is matched by the security group rule. + /// The port_range_min attribute constrains the port_range_max attribute. + /// If the protocol is ICMP, this value must be an ICMP type. + /// + [JsonProperty("port_range_max")] + public int MaxPort { get; set; } + + /// + /// The protocol that is matched by the security group rule. + /// + [JsonProperty("protocol")] + public IPProtocol Protocol; + + /// + /// The remote group UUID to associate with this security group rule. + /// You can specify either the remote_group_id or remote_ip_prefix attribute in the request body. + /// + [JsonProperty("remote_group_id")] + public Identifier RemoteGroupId; + + /// + /// The remote IP prefix or CIDR to associate with this security group rule. + /// You can specify either the remote_group_id or remote_ip_prefix attribute in the request body. + /// This attribute value matches the IP prefix as the source IP address of the IP packet. + /// + [JsonProperty("remote_ip_prefix")] + public string RemoteCIDR; + + /// + /// The UUId of security group + /// + [JsonProperty("security_group_id")] + public Identifier SecurityGroupId; + + [JsonExtensionData] + IDictionary IHaveExtraData.Data { get; set; } = new Dictionary(); + + object IServiceResource.Owner { get; set; } + } +} diff --git a/src/corelib/Networking/v2/Layer3/SecurityGroupRuleListOptions.cs b/src/corelib/Networking/v2/Layer3/SecurityGroupRuleListOptions.cs new file mode 100644 index 000000000..32144f2c5 --- /dev/null +++ b/src/corelib/Networking/v2/Layer3/SecurityGroupRuleListOptions.cs @@ -0,0 +1,26 @@ +using System.Collections.Generic; + +namespace OpenStack.Networking.v2.Layer3 +{ + /// + /// Optional filter and paging options when listing security group rules. + /// + public class SecurityGroupRuleListOptions : FilterOptions + { + /// + /// Filter by the group name. + /// + public TrafficDirection Direction { get; set; } + + /// + protected override IDictionary BuildQueryString() + { + var queryString = new Dictionary + { + ["direction"] = Direction + }; + + return queryString; + } + } +} \ No newline at end of file diff --git a/src/corelib/Networking/v2/NetworkingApiBuilder.cs b/src/corelib/Networking/v2/NetworkingApiBuilder.cs index cc86c88d0..d5a2fbaf1 100644 --- a/src/corelib/Networking/v2/NetworkingApiBuilder.cs +++ b/src/corelib/Networking/v2/NetworkingApiBuilder.cs @@ -384,7 +384,7 @@ public NetworkingApiBuilder(IServiceType serviceType, IAuthenticationProvider au } #endregion - #region Level 3 Extension + #region Layer 3 Extension #region Routers /// @@ -667,6 +667,80 @@ public NetworkingApiBuilder(IServiceType serviceType, IAuthenticationProvider au } #endregion + #region SecurityGroup + /// + /// Lists all network security groups associated with the account. + /// + /// Options for filtering. + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// A collection of network security group resources associated with the account. + /// + public async Task ListSecurityGroupsAsync(IQueryStringBuilder queryString, CancellationToken cancellationToken = default(CancellationToken)) + where T : IEnumerable + { + return await BuildListSecurityGroupsRequest(queryString, cancellationToken) + .SendAsync() + .ReceiveJson() + .PropogateOwnerToChildren(this).ConfigureAwait(false); + } + + /// + /// Builds a request. + /// + /// Options for filtering. + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + public async Task BuildListSecurityGroupsRequest(IQueryStringBuilder queryString, CancellationToken cancellationToken = default(CancellationToken)) + { + Url endpoint = await Endpoint.GetEndpoint(cancellationToken).ConfigureAwait(false); + + var request = endpoint + .AppendPathSegments("security-groups") + .Authenticate(AuthenticationProvider) + .PrepareGet(cancellationToken); + + request.Url.SetQueryParams(queryString?.Build()); + + return request; + } + + /// + /// Lists all network security group rules associated with the account. + /// + /// Options for filtering. + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// A collection of network security group rule resources associated with the account. + /// + public async Task ListSecurityGroupRulesAsync(IQueryStringBuilder queryString, CancellationToken cancellationToken = default(CancellationToken)) + where T : IEnumerable + { + return await BuildListSecurityGroupRulesRequest(queryString, cancellationToken) + .SendAsync() + .ReceiveJson() + .PropogateOwnerToChildren(this).ConfigureAwait(false); + } + + /// + /// Builds a request. + /// + /// Options for filtering. + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + public async Task BuildListSecurityGroupRulesRequest(IQueryStringBuilder queryString, CancellationToken cancellationToken = default(CancellationToken)) + { + Url endpoint = await Endpoint.GetEndpoint(cancellationToken).ConfigureAwait(false); + + var request = endpoint + .AppendPathSegments("security-group-rules") + .Authenticate(AuthenticationProvider) + .PrepareGet(cancellationToken); + + request.Url.SetQueryParams(queryString?.Build()); + + return request; + } + #endregion + #region Floating IPs /// /// Shows details for a server group. diff --git a/src/corelib/Networking/v2/Serialization/IPProtocol.cs b/src/corelib/Networking/v2/Serialization/IPProtocol.cs new file mode 100644 index 000000000..58dc7c80e --- /dev/null +++ b/src/corelib/Networking/v2/Serialization/IPProtocol.cs @@ -0,0 +1,27 @@ +using OpenStack.Serialization; + +namespace OpenStack.Networking.v2.Serialization +{ + /// + /// Internet Protocols. + /// + /// + public class IPProtocol : StringEnumeration + where T : IPProtocol, new() + { + /// + /// ICMP + /// + public static readonly T ICMP = new T {DisplayName = "icmp"}; + + /// + /// TCP + /// + public static readonly T TCP = new T {DisplayName = "tcp"}; + + /// + /// UDP + /// + public static readonly T UDP = new T {DisplayName = "udp"}; + } +} diff --git a/src/corelib/Networking/v2/Serialization/SecurityGroupCollection.cs b/src/corelib/Networking/v2/Serialization/SecurityGroupCollection.cs new file mode 100644 index 000000000..4e8a5785d --- /dev/null +++ b/src/corelib/Networking/v2/Serialization/SecurityGroupCollection.cs @@ -0,0 +1,32 @@ +using System.Collections.Generic; +using OpenStack.Serialization; +using OpenStack.Networking.v2.Layer3; + +namespace OpenStack.Networking.v2.Serialization +{ + /// + /// Represents a collection of security groups resources returned by the . + /// Intended for custom implementations and stubbing responses in unit tests. + /// + [JsonConverterWithConstructor(typeof(RootWrapperConverter), "security_groups")] + public class SecurityGroupCollection : List + { + /// + /// Initializes a new instance of the class. + /// + public SecurityGroupCollection() + { + + } + + /// + /// Initializes a new instance of the class. + /// + /// items + public SecurityGroupCollection(IEnumerable items) + : base(items) + { + + } + } +} diff --git a/src/corelib/Networking/v2/Serialization/SecurityGroupRuleCollection.cs b/src/corelib/Networking/v2/Serialization/SecurityGroupRuleCollection.cs new file mode 100644 index 000000000..3f1aff34e --- /dev/null +++ b/src/corelib/Networking/v2/Serialization/SecurityGroupRuleCollection.cs @@ -0,0 +1,32 @@ +using System.Collections.Generic; +using OpenStack.Networking.v2.Layer3; +using OpenStack.Serialization; + +namespace OpenStack.Networking.v2.Serialization +{ + /// + /// Represents a collection of security group rule resources returned by the . + /// Intended for custom implementations and stubbing responses in unit tests. + /// + [JsonConverterWithConstructor(typeof(RootWrapperConverter), "security_group_rules")] + public class SecurityGroupRuleCollection : List + { + + /// + /// Initializes a new instance of the class. + /// + public SecurityGroupRuleCollection() + { + + } + + /// + /// Initializes a new instance of the class. + /// + /// + public SecurityGroupRuleCollection(IEnumerable items) : base(items) + { + + } + } +} \ No newline at end of file diff --git a/src/corelib/Networking/v2/Serialization/TrafficDirection.cs b/src/corelib/Networking/v2/Serialization/TrafficDirection.cs new file mode 100644 index 000000000..fc39d32c7 --- /dev/null +++ b/src/corelib/Networking/v2/Serialization/TrafficDirection.cs @@ -0,0 +1,22 @@ +using OpenStack.Serialization; + +namespace OpenStack.Networking.v2.Serialization +{ + /// + /// Direction of network traffic. + /// + /// + public class TrafficDirection : StringEnumeration + where T : TrafficDirection, new() + { + /// + /// Incoming network traffic (ingress). + /// + public static readonly T Incoming = new T { DisplayName = "ingress" }; + + /// + /// Outgoing network traffic (egress). + /// + public static readonly T Outgoing = new T { DisplayName = "egress" }; + } +} diff --git a/src/corelib/Networking/v2/TrafficDirection.cs b/src/corelib/Networking/v2/TrafficDirection.cs new file mode 100644 index 000000000..1a41e415e --- /dev/null +++ b/src/corelib/Networking/v2/TrafficDirection.cs @@ -0,0 +1,8 @@ +using OpenStack.Networking.v2.Serialization; + +namespace OpenStack.Networking.v2 +{ + /// + public class TrafficDirection : TrafficDirection + { } +} \ No newline at end of file diff --git a/src/corelib/OpenStack.csproj b/src/corelib/OpenStack.csproj index f2e0c7a99..557b01642 100644 --- a/src/corelib/OpenStack.csproj +++ b/src/corelib/OpenStack.csproj @@ -48,27 +48,7 @@ ..\..\build\keys\OpenStackNetV1.dev.snk - - ..\packages\Flurl.Signed.1.0.10\lib\portable-net40+sl50+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Flurl.dll - True - - - ..\packages\Flurl.Http.Signed.0.7.0\lib\net45\Flurl.Http.dll - True - - - ..\packages\Marvin.JsonPatch.Signed.0.7.0\lib\portable-net40+win+wpa81\Marvin.JsonPatch.dll - True - - - ..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll - True - - - False - ..\packages\SimpleRESTServices.1.3.0.1-json6\lib\net40\SimpleRESTServices.dll - @@ -194,8 +174,13 @@ + + + + + @@ -222,6 +207,7 @@ + @@ -234,11 +220,15 @@ + + + + @@ -878,12 +868,11 @@ - + - + + + + + + ..\..\packages\Flurl.Http.Signed\lib\net45\Flurl.Http.dll + True + True + + + + + + + ..\..\packages\Flurl.Http.Signed\lib\portable-net45+sl50+win+wpa81+wp80\Flurl.Http.dll + True + True + + + + + + + + + ..\..\packages\Flurl.Signed\lib\portable-net40+sl50+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Flurl.dll + True + True + + + + + + + True + + + + + + + ..\..\packages\Marvin.JsonPatch.Signed\lib\portable-net40+win+wpa81\Marvin.JsonPatch.dll + True + True + + + + + + + + + ..\..\packages\Microsoft.Bcl\lib\portable-net40+sl4+win8\System.IO.dll + True + True + + + ..\..\packages\Microsoft.Bcl\lib\portable-net40+sl4+win8\System.Runtime.dll + True + True + + + ..\..\packages\Microsoft.Bcl\lib\portable-net40+sl4+win8\System.Threading.Tasks.dll + True + True + + + + + + + ..\..\packages\Microsoft.Bcl\lib\portable-net40+sl4+win8+wp71+wpa81\System.IO.dll + True + True + + + ..\..\packages\Microsoft.Bcl\lib\portable-net40+sl4+win8+wp71+wpa81\System.Runtime.dll + True + True + + + ..\..\packages\Microsoft.Bcl\lib\portable-net40+sl4+win8+wp71+wpa81\System.Threading.Tasks.dll + True + True + + + + + + + ..\..\packages\Microsoft.Bcl\lib\portable-net40+sl4+win8+wp8+wpa81\System.IO.dll + True + True + + + ..\..\packages\Microsoft.Bcl\lib\portable-net40+sl4+win8+wp8+wpa81\System.Runtime.dll + True + True + + + ..\..\packages\Microsoft.Bcl\lib\portable-net40+sl4+win8+wp8+wpa81\System.Threading.Tasks.dll + True + True + + + + + + + ..\..\packages\Microsoft.Bcl\lib\portable-net40+sl5+win8+wp8+wpa81\System.IO.dll + True + True + + + ..\..\packages\Microsoft.Bcl\lib\portable-net40+sl5+win8+wp8+wpa81\System.Runtime.dll + True + True + + + ..\..\packages\Microsoft.Bcl\lib\portable-net40+sl5+win8+wp8+wpa81\System.Threading.Tasks.dll + True + True + + + + + + + ..\..\packages\Microsoft.Bcl\lib\portable-net40+win8\System.IO.dll + True + True + + + ..\..\packages\Microsoft.Bcl\lib\portable-net40+win8\System.Runtime.dll + True + True + + + ..\..\packages\Microsoft.Bcl\lib\portable-net40+win8\System.Threading.Tasks.dll + True + True + + + + + + + ..\..\packages\Microsoft.Bcl\lib\portable-net40+win8+wp8+wpa81\System.IO.dll + True + True + + + ..\..\packages\Microsoft.Bcl\lib\portable-net40+win8+wp8+wpa81\System.Runtime.dll + True + True + + + ..\..\packages\Microsoft.Bcl\lib\portable-net40+win8+wp8+wpa81\System.Threading.Tasks.dll + True + True + + + + + + + + + ..\..\packages\Microsoft.Bcl.Async\lib\portable-net40+sl4+win8+wp71+wpa81\Microsoft.Threading.Tasks.dll + True + True + + + ..\..\packages\Microsoft.Bcl.Async\lib\portable-net40+sl4+win8+wp71+wpa81\Microsoft.Threading.Tasks.Extensions.dll + True + True + + + + + + + ..\..\packages\Microsoft.Bcl.Async\lib\portable-net45+win8+wp8+wpa81\Microsoft.Threading.Tasks.dll + True + True + + + ..\..\packages\Microsoft.Bcl.Async\lib\portable-net45+win8+wp8+wpa81\Microsoft.Threading.Tasks.Extensions.dll + True + True + + + + + + + ..\..\packages\Microsoft.Bcl.Async\lib\portable-net45+win8+wpa81\Microsoft.Threading.Tasks.dll + True + True + + + ..\..\packages\Microsoft.Bcl.Async\lib\portable-net45+win8+wpa81\Microsoft.Threading.Tasks.Extensions.dll + True + True + + + + + + + + + ..\..\packages\Microsoft.Net.Http\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.Extensions.dll + True + True + + + ..\..\packages\Microsoft.Net.Http\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.Primitives.dll + True + True + + + + + + + ..\..\packages\Microsoft.Net.Http\lib\portable-net45+win8\System.Net.Http.Extensions.dll + True + True + + + ..\..\packages\Microsoft.Net.Http\lib\portable-net45+win8\System.Net.Http.Primitives.dll + True + True + + + + + + + ..\..\packages\Microsoft.Net.Http\lib\portable-net45+win8+wpa81\System.Net.Http.Extensions.dll + True + True + + + ..\..\packages\Microsoft.Net.Http\lib\portable-net45+win8+wpa81\System.Net.Http.Primitives.dll + True + True + + + + + + + + + ..\..\packages\Newtonsoft.Json\lib\net20\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\packages\Newtonsoft.Json\lib\net35\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\packages\Newtonsoft.Json\lib\net40\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\packages\Newtonsoft.Json\lib\net45\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\packages\Newtonsoft.Json\lib\netcore45\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\packages\Newtonsoft.Json\lib\portable-net40+sl5+wp80+win8+wpa81\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\packages\Newtonsoft.Json\lib\portable-net45+wp80+win8+wpa81+aspnetcore50\Newtonsoft.Json.dll + True + True + + + + + + + + + ..\..\packages\PCLStorage\lib\portable-net45+sl5+wp8+wpa81+win8+monoandroid+monotouch+Xamarin.iOS+Xamarin.Mac\PCLStorage.dll + True + True + + + ..\..\packages\PCLStorage\lib\portable-net45+sl5+wp8+wpa81+win8+monoandroid+monotouch+Xamarin.iOS+Xamarin.Mac\PCLStorage.Abstractions.dll + True + True + + + + + + + ..\..\packages\PCLStorage\lib\portable-net45+wp8+wpa81+win8+monoandroid+monotouch+Xamarin.iOS+Xamarin.Mac\PCLStorage.dll + True + True + + + ..\..\packages\PCLStorage\lib\portable-net45+wp8+wpa81+win8+monoandroid+monotouch+Xamarin.iOS+Xamarin.Mac\PCLStorage.Abstractions.dll + True + True + + + + + + + ..\..\packages\PCLStorage\lib\portable-win8+wpa81\PCLStorage.dll + True + True + + + ..\..\packages\PCLStorage\lib\portable-win8+wpa81\PCLStorage.Abstractions.dll + True + True + + + + + + + + + ..\..\packages\SimpleRESTServices\lib\net35\SimpleRESTServices.dll + True + True + + + + + + + ..\..\packages\SimpleRESTServices\lib\net40\SimpleRESTServices.dll + True + True + + + + \ No newline at end of file diff --git a/src/corelib/OpenStackNet.cs b/src/corelib/OpenStackNet.cs index 5f2fb985d..a8eff122f 100644 --- a/src/corelib/OpenStackNet.cs +++ b/src/corelib/OpenStackNet.cs @@ -89,6 +89,26 @@ public static void ResetDefaults() } } + /// + /// Deserializes an object from a json string representation. + /// + /// The object type. + /// The json string. + public static T Deserialize(string json) + { + return Configuration.FlurlHttpSettings.JsonSerializer.Deserialize(json); + } + + /// + /// Serializes an object to a json string representation + /// + /// The object. + /// The json string representation of the object. + public static string Serialize(object obj) + { + return Configuration.FlurlHttpSettings.JsonSerializer.Serialize(obj); + } + /// /// Provides global point for programmatically configuraing tracing /// diff --git a/src/corelib/Providers/Rackspace/Objects/LoadBalancers/LoadBalancerSslConfiguration.cs b/src/corelib/Providers/Rackspace/Objects/LoadBalancers/LoadBalancerSslConfiguration.cs index 3c3184424..221d5834f 100644 --- a/src/corelib/Providers/Rackspace/Objects/LoadBalancers/LoadBalancerSslConfiguration.cs +++ b/src/corelib/Providers/Rackspace/Objects/LoadBalancers/LoadBalancerSslConfiguration.cs @@ -48,7 +48,7 @@ public class LoadBalancerSslConfiguration : ExtensibleJsonObject /// /// This is the backing field for the property. /// - [JsonProperty("intermediatecertificate", DefaultValueHandling = DefaultValueHandling.Ignore)] + [JsonProperty("intermediateCertificate", DefaultValueHandling = DefaultValueHandling.Ignore)] private string _intermediateCertificate; /// diff --git a/src/corelib/Testing/HttpTest.cs b/src/corelib/Testing/HttpTest.cs index 7d3d058ac..f26328914 100644 --- a/src/corelib/Testing/HttpTest.cs +++ b/src/corelib/Testing/HttpTest.cs @@ -54,7 +54,7 @@ private void SetTestMode(OpenStackNetConfigurationOptions options) ResponseQueue.Enqueue(new HttpResponseMessage { StatusCode = (HttpStatusCode)status, - Content = new CapturedJsonContent(OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(data)) + Content = new CapturedJsonContent(OpenStackNet.Serialize(data)) }); return this; } diff --git a/src/corelib/app.config b/src/corelib/app.config index 5ac8598cf..19027a646 100644 --- a/src/corelib/app.config +++ b/src/corelib/app.config @@ -1,11 +1,10 @@  - - - - - - - - - + + + + True + + + + diff --git a/src/corelib/corelib.nuspec b/src/corelib/corelib.nuspec index 343c2ff71..1d2b63994 100644 --- a/src/corelib/corelib.nuspec +++ b/src/corelib/corelib.nuspec @@ -15,7 +15,7 @@ openstack - + diff --git a/src/corelib/packages.config b/src/corelib/packages.config deleted file mode 100644 index 167200d48..000000000 --- a/src/corelib/packages.config +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/src/corelib/paket.references b/src/corelib/paket.references new file mode 100644 index 000000000..0eb4a8c65 --- /dev/null +++ b/src/corelib/paket.references @@ -0,0 +1,6 @@ +Flurl.Http.Signed +Flurl.Signed +ILMerge +Marvin.JsonPatch.Signed +Newtonsoft.Json +SimpleRESTServices \ No newline at end of file diff --git a/src/openstack.net.sln b/src/openstack.net.sln index 0ab3aadc4..42d94cf18 100644 --- a/src/openstack.net.sln +++ b/src/openstack.net.sln @@ -3,6 +3,11 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 14 VisualStudioVersion = 14.0.23107.0 MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".paket", ".paket", "{AB148713-068A-48E0-B8D9-4D53310809FC}" + ProjectSection(SolutionItems) = preProject + ..\paket.dependencies = ..\paket.dependencies + EndProjectSection +EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{DD863CE0-64D7-43AC-9DDD-C745B36CCD2C}" ProjectSection(SolutionItems) = preProject ..\appveyor.yml = ..\appveyor.yml @@ -16,7 +21,6 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{EFFA0DAE-1829-4783-92CF-390CFCE22E43}" ProjectSection(SolutionItems) = preProject ..\build\build.proj = ..\build\build.proj - ..\NuGet.config = ..\NuGet.config EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenStack", "corelib\OpenStack.csproj", "{1A4FB67F-8642-4402-B931-118955AE7538}" diff --git a/src/testing/integration/App.config b/src/testing/integration/App.config index f43e940d0..4919419b5 100644 --- a/src/testing/integration/App.config +++ b/src/testing/integration/App.config @@ -1,17 +1,16 @@  - - - - - - - - + - \ No newline at end of file + + + True + + + + \ No newline at end of file diff --git a/src/testing/integration/Networking/v2/Layer3/Layer3ExtensionTests.cs b/src/testing/integration/Networking/v2/Layer3/Layer3ExtensionTests.cs index 53774e54b..c86fcd2eb 100644 --- a/src/testing/integration/Networking/v2/Layer3/Layer3ExtensionTests.cs +++ b/src/testing/integration/Networking/v2/Layer3/Layer3ExtensionTests.cs @@ -1,5 +1,6 @@ using System; using System.Diagnostics; +using System.Linq; using System.Threading.Tasks; using OpenStack.Compute.v2_1; using Xunit; @@ -80,5 +81,26 @@ public async Task AssignFloatingIP() // 8. Disassociate the floating ip from the server await server.DisassociateFloatingIPAsync(floatingIP.FloatingIPAddress); } + + [Fact] + public async Task ListSecurityGroups() + { + var groups = await _networkingService.ListSecurityGroupsAsync(new SecurityGroupListOptions {Name = "default"}); + + Assert.NotEmpty(groups); + + var defaultGroup = groups.First(); + Assert.NotNull(defaultGroup); + Assert.NotNull(defaultGroup.Name); + Assert.NotNull(defaultGroup.Description); + Assert.NotNull(defaultGroup.Id); + Assert.NotEmpty(defaultGroup.SecurityGroupRules); + + var defaultRule = defaultGroup.SecurityGroupRules.First(); + Assert.NotNull(defaultRule.Id); + Assert.NotNull(defaultRule.Direction); + Assert.NotNull(defaultRule.Ethertype); + Assert.NotNull(defaultRule.SecurityGroupId); + } } } \ No newline at end of file diff --git a/src/testing/integration/OpenStack.IntegrationTests.csproj b/src/testing/integration/OpenStack.IntegrationTests.csproj index 28d72787c..7c9882a98 100644 --- a/src/testing/integration/OpenStack.IntegrationTests.csproj +++ b/src/testing/integration/OpenStack.IntegrationTests.csproj @@ -1,7 +1,5 @@  - - Debug AnyCPU @@ -48,36 +46,10 @@ ..\..\..\build\keys\SDKTestingKey.snk - - ..\..\packages\Flurl.Signed.1.0.10\lib\portable-net40+sl50+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Flurl.dll - True - - - ..\..\packages\Flurl.Http.Signed.0.7.0\lib\net45\Flurl.Http.dll - True - - - ..\..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll - - - ..\..\packages\Marvin.JsonPatch.Signed.0.7.0\lib\portable-net40+win+wpa81\Marvin.JsonPatch.dll - True - - - ..\..\packages\Moq.4.0.10827\lib\NET40\Moq.dll - - - ..\..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll - True - ..\..\lib\Security.Cryptography\Security.Cryptography.dll - - False - ..\..\packages\SimpleRESTServices.1.3.0.1-json6\lib\net40\SimpleRESTServices.dll - @@ -86,18 +58,6 @@ - - ..\..\packages\xunit.abstractions.2.0.0\lib\net35\xunit.abstractions.dll - True - - - ..\..\packages\xunit.assert.2.0.0\lib\portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS\xunit.assert.dll - True - - - ..\..\packages\xunit.extensibility.core.2.0.0\lib\portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS\xunit.core.dll - True - @@ -143,16 +103,58 @@ Designer - + - - - This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - + + + + <__paket__xunit_runner_visualstudio_props>net20\xunit.runner.visualstudio + + + + + <__paket__xunit_runner_visualstudio_props>portable-net45+win8+wp8+wpa81\xunit.runner.visualstudio + + + + + <__paket__xunit_runner_visualstudio_props>uap10.0\xunit.runner.visualstudio + <__paket__xunit_runner_visualstudio_targets>uap10.0\xunit.runner.visualstudio + + + + + <__paket__xunit_runner_visualstudio_props>win81\xunit.runner.visualstudio + <__paket__xunit_runner_visualstudio_targets>win81\xunit.runner.visualstudio + + + + + <__paket__xunit_runner_visualstudio_props>wpa81\xunit.runner.visualstudio + <__paket__xunit_runner_visualstudio_targets>wpa81\xunit.runner.visualstudio + + + + + + + + <__paket__xunit_core_props>portable-net45+win8+wp8+wpa81\xunit.core + + + + + <__paket__xunit_core_props>win81\xunit.core + + + + + <__paket__xunit_core_props>wpa81\xunit.core + + + + + + + + + + ..\..\..\packages\Flurl.Http.Signed\lib\net45\Flurl.Http.dll + True + True + + + + + + + ..\..\..\packages\Flurl.Http.Signed\lib\portable-net45+sl50+win+wpa81+wp80\Flurl.Http.dll + True + True + + + + + + + + + ..\..\..\packages\Flurl.Signed\lib\portable-net40+sl50+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Flurl.dll + True + True + + + + + + + + + ..\..\..\packages\Marvin.JsonPatch.Signed\lib\portable-net40+win+wpa81\Marvin.JsonPatch.dll + True + True + + + + + + + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+sl4+win8\System.IO.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+sl4+win8\System.Runtime.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+sl4+win8\System.Threading.Tasks.dll + True + True + + + + + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+sl4+win8+wp71+wpa81\System.IO.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+sl4+win8+wp71+wpa81\System.Runtime.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+sl4+win8+wp71+wpa81\System.Threading.Tasks.dll + True + True + + + + + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+sl4+win8+wp8+wpa81\System.IO.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+sl4+win8+wp8+wpa81\System.Runtime.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+sl4+win8+wp8+wpa81\System.Threading.Tasks.dll + True + True + + + + + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+sl5+win8+wp8+wpa81\System.IO.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+sl5+win8+wp8+wpa81\System.Runtime.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+sl5+win8+wp8+wpa81\System.Threading.Tasks.dll + True + True + + + + + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+win8\System.IO.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+win8\System.Runtime.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+win8\System.Threading.Tasks.dll + True + True + + + + + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+win8+wp8+wpa81\System.IO.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+win8+wp8+wpa81\System.Runtime.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+win8+wp8+wpa81\System.Threading.Tasks.dll + True + True + + + + + + + + + ..\..\..\packages\Microsoft.Bcl.Async\lib\portable-net40+sl4+win8+wp71+wpa81\Microsoft.Threading.Tasks.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl.Async\lib\portable-net40+sl4+win8+wp71+wpa81\Microsoft.Threading.Tasks.Extensions.dll + True + True + + + + + + + ..\..\..\packages\Microsoft.Bcl.Async\lib\portable-net45+win8+wp8+wpa81\Microsoft.Threading.Tasks.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl.Async\lib\portable-net45+win8+wp8+wpa81\Microsoft.Threading.Tasks.Extensions.dll + True + True + + + + + + + ..\..\..\packages\Microsoft.Bcl.Async\lib\portable-net45+win8+wpa81\Microsoft.Threading.Tasks.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl.Async\lib\portable-net45+win8+wpa81\Microsoft.Threading.Tasks.Extensions.dll + True + True + + + + + + + + + ..\..\..\packages\Microsoft.Net.Http\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.Extensions.dll + True + True + + + ..\..\..\packages\Microsoft.Net.Http\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.Primitives.dll + True + True + + + + + + + ..\..\..\packages\Microsoft.Net.Http\lib\portable-net45+win8\System.Net.Http.Extensions.dll + True + True + + + ..\..\..\packages\Microsoft.Net.Http\lib\portable-net45+win8\System.Net.Http.Primitives.dll + True + True + + + + + + + ..\..\..\packages\Microsoft.Net.Http\lib\portable-net45+win8+wpa81\System.Net.Http.Extensions.dll + True + True + + + ..\..\..\packages\Microsoft.Net.Http\lib\portable-net45+win8+wpa81\System.Net.Http.Primitives.dll + True + True + + + + + + + + + ..\..\..\packages\Moq\lib\net35\Moq.dll + True + True + + + + + + + ..\..\..\packages\Moq\lib\net40\Moq.dll + True + True + + + + + + + ..\..\..\packages\Moq\lib\sl5\Moq.Silverlight.dll + True + True + + + + + + + + + ..\..\..\packages\Newtonsoft.Json\lib\net20\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\..\packages\Newtonsoft.Json\lib\net35\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\..\packages\Newtonsoft.Json\lib\net40\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\..\packages\Newtonsoft.Json\lib\net45\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\..\packages\Newtonsoft.Json\lib\netcore45\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\..\packages\Newtonsoft.Json\lib\portable-net40+sl5+wp80+win8+wpa81\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\..\packages\Newtonsoft.Json\lib\portable-net45+wp80+win8+wpa81+aspnetcore50\Newtonsoft.Json.dll + True + True + + + + + + + + + ..\..\..\packages\PCLStorage\lib\portable-net45+sl5+wp8+wpa81+win8+monoandroid+monotouch+Xamarin.iOS+Xamarin.Mac\PCLStorage.dll + True + True + + + ..\..\..\packages\PCLStorage\lib\portable-net45+sl5+wp8+wpa81+win8+monoandroid+monotouch+Xamarin.iOS+Xamarin.Mac\PCLStorage.Abstractions.dll + True + True + + + + + + + ..\..\..\packages\PCLStorage\lib\portable-net45+wp8+wpa81+win8+monoandroid+monotouch+Xamarin.iOS+Xamarin.Mac\PCLStorage.dll + True + True + + + ..\..\..\packages\PCLStorage\lib\portable-net45+wp8+wpa81+win8+monoandroid+monotouch+Xamarin.iOS+Xamarin.Mac\PCLStorage.Abstractions.dll + True + True + + + + + + + ..\..\..\packages\PCLStorage\lib\portable-win8+wpa81\PCLStorage.dll + True + True + + + ..\..\..\packages\PCLStorage\lib\portable-win8+wpa81\PCLStorage.Abstractions.dll + True + True + + + + + + + + + ..\..\..\packages\SharpZipLib\lib\11\ICSharpCode.SharpZipLib.dll + True + True + + + + + + + ..\..\..\packages\SharpZipLib\lib\20\ICSharpCode.SharpZipLib.dll + True + True + + + + + + + ..\..\..\packages\SharpZipLib\lib\SL3\SharpZipLib.Silverlight3.dll + True + True + + + + + + + ..\..\..\packages\SharpZipLib\lib\SL4\SharpZipLib.Silverlight4.dll + True + True + + + + + + + + + ..\..\..\packages\SimpleRESTServices\lib\net35\SimpleRESTServices.dll + True + True + + + + + + + ..\..\..\packages\SimpleRESTServices\lib\net40\SimpleRESTServices.dll + True + True + + + + + + + + + ..\..\..\packages\xunit.abstractions\lib\net35\xunit.abstractions.dll + True + True + + + + + + + ..\..\..\packages\xunit.abstractions\lib\portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS\xunit.abstractions.dll + True + True + + + + + + + + + ..\..\..\packages\xunit.assert\lib\portable-net45+win8+wp8+wpa81\xunit.assert.dll + True + True + + + + + + + + + ..\..\..\packages\xunit.extensibility.core\lib\portable-net45+win8+wp8+wpa81\xunit.core.dll + True + True + + + + + + + + + ..\..\..\packages\xunit.extensibility.execution\lib\monoandroid\xunit.execution.dotnet.dll + True + True + + + + + + + ..\..\..\packages\xunit.extensibility.execution\lib\monotouch\xunit.execution.dotnet.dll + True + True + + + + + + + ..\..\..\packages\xunit.extensibility.execution\lib\net45\xunit.execution.desktop.dll + True + True + + + + + + + ..\..\..\packages\xunit.extensibility.execution\lib\portable-net45+win8+wp8+wpa81\xunit.execution.dotnet.dll + True + True + + + + + + + ..\..\..\packages\xunit.extensibility.execution\lib\win8\xunit.execution.dotnet.dll + True + True + + + + + + + ..\..\..\packages\xunit.extensibility.execution\lib\wp8\xunit.execution.dotnet.dll + True + True + + + + + + + ..\..\..\packages\xunit.extensibility.execution\lib\wpa81\xunit.execution.dotnet.dll + True + True + + + + + + + ..\..\..\packages\xunit.extensibility.execution\lib\xamarinios\xunit.execution.dotnet.dll + True + True + + + + + \ No newline at end of file diff --git a/src/testing/integration/packages.config b/src/testing/integration/packages.config deleted file mode 100644 index 815e1c581..000000000 --- a/src/testing/integration/packages.config +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/testing/integration/paket.references b/src/testing/integration/paket.references new file mode 100644 index 000000000..d4b064a17 --- /dev/null +++ b/src/testing/integration/paket.references @@ -0,0 +1,14 @@ +Flurl.Http.Signed +Flurl.Signed +Marvin.JsonPatch.Signed +Moq +Newtonsoft.Json +SharpZipLib +SimpleRESTServices +xunit +xunit.abstractions +xunit.assert +xunit.core +xunit.extensibility.core +xunit.runner.console +xunit.runner.visualstudio \ No newline at end of file diff --git a/src/testing/migration/NuGet.config b/src/testing/migration/NuGet.config deleted file mode 100644 index acfd54951..000000000 --- a/src/testing/migration/NuGet.config +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/src/testing/migration/migration.csproj b/src/testing/migration/migration.csproj index e20994c36..c61660132 100644 --- a/src/testing/migration/migration.csproj +++ b/src/testing/migration/migration.csproj @@ -33,26 +33,6 @@ 4 - - ..\..\packages\Flurl.Signed.1.0.8\lib\portable-net40+sl50+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Flurl.dll - True - - - ..\..\packages\Flurl.Http.Signed.0.6.2.2015062601\lib\net45\Flurl.Http.dll - True - - - ..\..\packages\Marvin.JsonPatch.Signed.0.7.0\lib\portable-net40+win+wpa81\Marvin.JsonPatch.dll - True - - - ..\..\packages\Newtonsoft.Json.6.0.4\lib\net45\Newtonsoft.Json.dll - True - - - ..\..\packages\openstack.net.1.5.0.2\lib\net45\openstacknet.dll - True - @@ -69,7 +49,7 @@ - + + + + + + + ..\..\..\packages\history-1.5\Flurl.Http.Signed\lib\net45\Flurl.Http.dll + True + True + + + + + + + + + ..\..\..\packages\history-1.5\Flurl.Signed\lib\portable-net40+sl50+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Flurl.dll + True + True + + + + + + + + + ..\..\..\packages\history-1.5\Marvin.JsonPatch.Signed\lib\portable-net40+win+wpa81\Marvin.JsonPatch.dll + True + True + + + + + + + + + ..\..\..\packages\history-1.5\Newtonsoft.Json\lib\net45\Newtonsoft.Json.dll + True + True + + + + + + + + + ..\..\..\packages\history-1.5\openstack.net\lib\net45\openstacknet.dll + True + True + + + + \ No newline at end of file diff --git a/src/testing/migration/migration.sln b/src/testing/migration/migration.sln index d2d49d8ab..017a3d4f2 100644 --- a/src/testing/migration/migration.sln +++ b/src/testing/migration/migration.sln @@ -3,6 +3,11 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 14 VisualStudioVersion = 14.0.23107.0 MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".paket", ".paket", "{54A07A31-92EE-43F5-8505-9B7D023EE650}" + ProjectSection(SolutionItems) = preProject + ..\..\..\paket.dependencies = ..\..\..\paket.dependencies + EndProjectSection +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "migration", "migration.csproj", "{3C26C430-5553-4B34-AF5A-C99EF44ED756}" EndProject Global diff --git a/src/testing/migration/packages.config b/src/testing/migration/packages.config deleted file mode 100644 index b3174070c..000000000 --- a/src/testing/migration/packages.config +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/src/testing/migration/paket.references b/src/testing/migration/paket.references new file mode 100644 index 000000000..6a377c254 --- /dev/null +++ b/src/testing/migration/paket.references @@ -0,0 +1,2 @@ +group History-1.5 + openstack.net \ No newline at end of file diff --git a/src/testing/unit/Compute/v2_1/KeyPairTests.cs b/src/testing/unit/Compute/v2_1/KeyPairTests.cs index 6f880b3a3..69e391475 100644 --- a/src/testing/unit/Compute/v2_1/KeyPairTests.cs +++ b/src/testing/unit/Compute/v2_1/KeyPairTests.cs @@ -43,7 +43,7 @@ public void DeserializeKeyPairCollection() ] }").ToString(); - var results = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize(json); + var results = OpenStackNet.Deserialize(json); Assert.NotNull(results); Assert.Equal(2, results.Count()); var result = results.First(); diff --git a/src/testing/unit/Compute/v2_1/SecurityGroupTests.cs b/src/testing/unit/Compute/v2_1/SecurityGroupTests.cs index 77e4a123c..b67deee14 100644 --- a/src/testing/unit/Compute/v2_1/SecurityGroupTests.cs +++ b/src/testing/unit/Compute/v2_1/SecurityGroupTests.cs @@ -98,7 +98,7 @@ public void DeserializeSecurityGroupRule() }, 'id': '55d75417-37df-48e2-96aa-20ba53a82900' }}"; - var result = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize(JObject.Parse(json).ToString()); + var result = OpenStackNet.Deserialize(JObject.Parse(json).ToString()); Assert.Equal("0.0.0.0 / 24", result.CIDR); } diff --git a/src/testing/unit/Compute/v2_1/ServerTests.cs b/src/testing/unit/Compute/v2_1/ServerTests.cs index ab673c0c1..3b926a19b 100644 --- a/src/testing/unit/Compute/v2_1/ServerTests.cs +++ b/src/testing/unit/Compute/v2_1/ServerTests.cs @@ -29,7 +29,7 @@ public void SerializeServerWithSchedulerHints() server.SchedulerHints = new SchedulerHints(); server.SchedulerHints.Add("group", "groupId"); - var json = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(server); + var json = OpenStackNet.Serialize(server); Assert.Equal(expectedJson, json); } @@ -40,7 +40,7 @@ public void SerializeServerWithoutSchedulerHints() .ToString(Formatting.None); var server = new ServerCreateDefinition("name", Guid.Empty, Guid.Empty); - var json = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(server); + var json = OpenStackNet.Serialize(server); Assert.Equal(expectedJson, json); } diff --git a/src/testing/unit/Compute/v2_1/VolumeTests.cs b/src/testing/unit/Compute/v2_1/VolumeTests.cs index 7cda497b5..bcfca48fc 100644 --- a/src/testing/unit/Compute/v2_1/VolumeTests.cs +++ b/src/testing/unit/Compute/v2_1/VolumeTests.cs @@ -24,7 +24,7 @@ public VolumeTests() public void DeserializeVolumeWithEmptyAttachment() { var json = JObject.Parse(@"{'volume': {'attachments': [{}]}}").ToString(); - var result = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize(json); + var result = OpenStackNet.Deserialize(json); Assert.Empty(result.Attachments); } diff --git a/src/testing/unit/ContentDeliveryNetworks/v1/ServiceCacheTests.cs b/src/testing/unit/ContentDeliveryNetworks/v1/ServiceCacheTests.cs index f2cb8ce49..696b31ead 100644 --- a/src/testing/unit/ContentDeliveryNetworks/v1/ServiceCacheTests.cs +++ b/src/testing/unit/ContentDeliveryNetworks/v1/ServiceCacheTests.cs @@ -12,7 +12,7 @@ public void SerializeTimeToLiveToSeconds() { var cache = new ServiceCache("cache", TimeSpan.FromSeconds(60)); - var json = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(cache); + var json = OpenStackNet.Serialize(cache); var result = JObject.Parse(json); Assert.Equal(60, result.Value("ttl")); @@ -22,9 +22,9 @@ public void SerializeTimeToLiveToSeconds() public void DeserializeTimeToLiveFromSeconds() { var cache = new ServiceCache("cache", TimeSpan.FromSeconds(60)); - var json = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(cache); + var json = OpenStackNet.Serialize(cache); - var result = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize(json); + var result = OpenStackNet.Deserialize(json); Assert.Equal(60, result.TimeToLive.TotalSeconds); } diff --git a/src/testing/unit/ContentDeliveryNetworks/v1/ServiceTests.cs b/src/testing/unit/ContentDeliveryNetworks/v1/ServiceTests.cs index 8295f7255..f1c75a469 100644 --- a/src/testing/unit/ContentDeliveryNetworks/v1/ServiceTests.cs +++ b/src/testing/unit/ContentDeliveryNetworks/v1/ServiceTests.cs @@ -32,11 +32,11 @@ public void SerializeServiceCollection() Items = {new Service {Id = "service-id"}}, Links = {new PageLink("next", "http://api.com/next")} }; - string json = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(services); + string json = OpenStackNet.Serialize(services); Assert.Contains("\"services\"", json); Assert.DoesNotContain("\"service\"", json); - var result = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize(json); + var result = OpenStackNet.Deserialize(json); Assert.NotNull(result); Assert.Equal(1, result.Count()); Assert.Equal(1, result.Items.Count()); @@ -48,9 +48,9 @@ public void SerializeServiceCollection() public void SerializePageLink() { var link = new PageLink("next", "http://api.com/next"); - string json = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(link); + string json = OpenStackNet.Serialize(link); - var result = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize(json); + var result = OpenStackNet.Deserialize(json); Assert.NotNull(result); Assert.True(result.IsNextPage); } diff --git a/src/testing/unit/IdentifierTests.cs b/src/testing/unit/IdentifierTests.cs index d96b3d361..9503d28f9 100644 --- a/src/testing/unit/IdentifierTests.cs +++ b/src/testing/unit/IdentifierTests.cs @@ -17,7 +17,7 @@ public void Serialize() var rawId = Guid.NewGuid(); var id = (Identifier)rawId; - var result = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(id); + var result = OpenStackNet.Serialize(id); Assert.Equal(string.Format("\"{0}\"", rawId.ToString("D")), result); } @@ -27,7 +27,7 @@ public void Serialize_WithinAClass() { var thing = new Thing {Id = Guid.NewGuid()}; - var result = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(thing); + var result = OpenStackNet.Serialize(thing); Assert.Equal(string.Format("{{\"Id\":\"{0}\"}}", thing.Id), result); } @@ -37,8 +37,8 @@ public void Deserialize() { var id = new Identifier(Guid.NewGuid()); - var json = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(id); - var result = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize(json); + var json = OpenStackNet.Serialize(id); + var result = OpenStackNet.Deserialize(json); Assert.Equal(id, result); } diff --git a/src/testing/unit/Networking/v2/DHCPOptionConverterTests.cs b/src/testing/unit/Networking/v2/DHCPOptionConverterTests.cs index c20ae1e32..a73f128e8 100644 --- a/src/testing/unit/Networking/v2/DHCPOptionConverterTests.cs +++ b/src/testing/unit/Networking/v2/DHCPOptionConverterTests.cs @@ -19,7 +19,7 @@ public void Serialize() } }; - string result = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(input); + string result = OpenStackNet.Serialize(input); string expectedJson = JObject.Parse("{'port':{'extra_dhcp_opts':[{'opt_name':'a','opt_value':'stuff'},{'opt_name':'b','opt_value':'things'}]}}").ToString(Formatting.None); Assert.Equal(expectedJson, result); @@ -30,7 +30,7 @@ public void Deserialize() { string json = JObject.Parse("{'port':{'extra_dhcp_opts':[{'opt_name':'a','opt_value':'stuff'},{'opt_name':'b','opt_value':'things'}]}}").ToString(Formatting.None); - var result = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize(json).DHCPOptions; + var result = OpenStackNet.Deserialize(json).DHCPOptions; Assert.NotNull(result); Assert.Equal(2, result.Count); @@ -52,8 +52,8 @@ public void OpenStackNet_UsesDHCPOptionConverter() } }; - var json = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(port); - var result = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize(json); + var json = OpenStackNet.Serialize(port); + var result = OpenStackNet.Deserialize(json); Assert.NotNull(result.DHCPOptions); Assert.Equal(1, result.DHCPOptions.Count); diff --git a/src/testing/unit/Networking/v2/Layer3/Layer3Tests.cs b/src/testing/unit/Networking/v2/Layer3/Layer3Tests.cs index fa8141f17..7a3c70d28 100644 --- a/src/testing/unit/Networking/v2/Layer3/Layer3Tests.cs +++ b/src/testing/unit/Networking/v2/Layer3/Layer3Tests.cs @@ -11,6 +11,7 @@ using OpenStack.Synchronous; using OpenStack.Testing; using Xunit; +using SecurityGroupCollection = OpenStack.Networking.v2.Serialization.SecurityGroupCollection; namespace OpenStack.Networking.v2.Layer3 { @@ -313,5 +314,55 @@ public void DeleteFloatingIP(HttpStatusCode responseCode) } #endregion + #region Security Groups + [Fact] + public void ListSecurityGroups() + { + using (var httpTest = new HttpTest()) + { + Identifier securityGroupId = Guid.NewGuid(); + Identifier securityGroupRuleId = Guid.NewGuid(); + SecurityGroupRule rule = new SecurityGroupRule { Id = securityGroupRuleId }; + List rules = new List { rule }; + + httpTest.RespondWithJson(new SecurityGroupCollection + { + new SecurityGroup { Id = securityGroupId, SecurityGroupRules = rules } + }); + + var results = _networking.ListSecurityGroups(); + + httpTest.ShouldHaveCalled("*/security-groups"); + Assert.Equal(1, results.Count()); + var result = results.First(); + var resultRule = result.SecurityGroupRules.First(); + Assert.Equal(securityGroupId, result.Id); + Assert.Equal(rule.Id, resultRule.Id); + } + } + + [Fact] + public void ListSecurityGroupRules() + { + using (var httpTest = new HttpTest()) + { + Identifier securityGroupId = Guid.NewGuid(); + Identifier securityGroupRuleId = Guid.NewGuid(); + httpTest.RespondWithJson(new SecurityGroupRuleCollection + { + new SecurityGroupRule {Id = securityGroupRuleId, SecurityGroupId = securityGroupId} + }); + + var results = _networking.ListSecurityGroupRules(); + + httpTest.ShouldHaveCalled("*/security-group-rules"); + Assert.Equal(1, results.Count()); + var result = results.First(); + Assert.Equal(securityGroupRuleId, result.Id); + Assert.Equal(securityGroupId, result.SecurityGroupId); + } + } + #endregion + } } diff --git a/src/testing/unit/OpenStack.UnitTests.csproj b/src/testing/unit/OpenStack.UnitTests.csproj index 4302b4e98..88381c8e5 100644 --- a/src/testing/unit/OpenStack.UnitTests.csproj +++ b/src/testing/unit/OpenStack.UnitTests.csproj @@ -1,7 +1,5 @@  - - Debug AnyCPU @@ -47,49 +45,14 @@ ..\..\..\build\keys\SDKTestingKey.snk - - ..\..\packages\Flurl.Signed.1.0.10\lib\portable-net40+sl50+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Flurl.dll - True - - - ..\..\packages\Flurl.Http.Signed.0.7.0\lib\net45\Flurl.Http.dll - True - - - ..\..\packages\Marvin.JsonPatch.Signed.0.7.0\lib\portable-net40+win+wpa81\Marvin.JsonPatch.dll - True - - - ..\..\packages\Moq.4.0.10827\lib\NET40\Moq.dll - - - ..\..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll - True - - - False - ..\..\packages\SimpleRESTServices.1.3.0.1-json6\lib\net40\SimpleRESTServices.dll - 3.5 - - ..\..\packages\xunit.abstractions.2.0.0\lib\net35\xunit.abstractions.dll - True - - - ..\..\packages\xunit.assert.2.0.0\lib\portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS\xunit.assert.dll - True - - - ..\..\packages\xunit.extensibility.core.2.0.0\lib\portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS\xunit.core.dll - True - @@ -145,7 +108,7 @@ SDKTestingKey.snk - + @@ -153,15 +116,56 @@ OpenStack - - - - This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - + + + + <__paket__xunit_runner_visualstudio_props>net20\xunit.runner.visualstudio + + + + + <__paket__xunit_runner_visualstudio_props>portable-net45+win8+wp8+wpa81\xunit.runner.visualstudio + + + + + <__paket__xunit_runner_visualstudio_props>uap10.0\xunit.runner.visualstudio + <__paket__xunit_runner_visualstudio_targets>uap10.0\xunit.runner.visualstudio + + + + + <__paket__xunit_runner_visualstudio_props>win81\xunit.runner.visualstudio + <__paket__xunit_runner_visualstudio_targets>win81\xunit.runner.visualstudio + + + + + <__paket__xunit_runner_visualstudio_props>wpa81\xunit.runner.visualstudio + <__paket__xunit_runner_visualstudio_targets>wpa81\xunit.runner.visualstudio + + + + + + + + <__paket__xunit_core_props>portable-net45+win8+wp8+wpa81\xunit.core + + + + + <__paket__xunit_core_props>win81\xunit.core + + + + + <__paket__xunit_core_props>wpa81\xunit.core + + + + + + + + + + ..\..\..\packages\Flurl.Http.Signed\lib\net45\Flurl.Http.dll + True + True + + + + + + + ..\..\..\packages\Flurl.Http.Signed\lib\portable-net45+sl50+win+wpa81+wp80\Flurl.Http.dll + True + True + + + + + + + + + ..\..\..\packages\Flurl.Signed\lib\portable-net40+sl50+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Flurl.dll + True + True + + + + + + + + + ..\..\..\packages\Marvin.JsonPatch.Signed\lib\portable-net40+win+wpa81\Marvin.JsonPatch.dll + True + True + + + + + + + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+sl4+win8\System.IO.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+sl4+win8\System.Runtime.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+sl4+win8\System.Threading.Tasks.dll + True + True + + + + + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+sl4+win8+wp71+wpa81\System.IO.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+sl4+win8+wp71+wpa81\System.Runtime.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+sl4+win8+wp71+wpa81\System.Threading.Tasks.dll + True + True + + + + + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+sl4+win8+wp8+wpa81\System.IO.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+sl4+win8+wp8+wpa81\System.Runtime.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+sl4+win8+wp8+wpa81\System.Threading.Tasks.dll + True + True + + + + + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+sl5+win8+wp8+wpa81\System.IO.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+sl5+win8+wp8+wpa81\System.Runtime.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+sl5+win8+wp8+wpa81\System.Threading.Tasks.dll + True + True + + + + + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+win8\System.IO.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+win8\System.Runtime.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+win8\System.Threading.Tasks.dll + True + True + + + + + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+win8+wp8+wpa81\System.IO.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+win8+wp8+wpa81\System.Runtime.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl\lib\portable-net40+win8+wp8+wpa81\System.Threading.Tasks.dll + True + True + + + + + + + + + ..\..\..\packages\Microsoft.Bcl.Async\lib\portable-net40+sl4+win8+wp71+wpa81\Microsoft.Threading.Tasks.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl.Async\lib\portable-net40+sl4+win8+wp71+wpa81\Microsoft.Threading.Tasks.Extensions.dll + True + True + + + + + + + ..\..\..\packages\Microsoft.Bcl.Async\lib\portable-net45+win8+wp8+wpa81\Microsoft.Threading.Tasks.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl.Async\lib\portable-net45+win8+wp8+wpa81\Microsoft.Threading.Tasks.Extensions.dll + True + True + + + + + + + ..\..\..\packages\Microsoft.Bcl.Async\lib\portable-net45+win8+wpa81\Microsoft.Threading.Tasks.dll + True + True + + + ..\..\..\packages\Microsoft.Bcl.Async\lib\portable-net45+win8+wpa81\Microsoft.Threading.Tasks.Extensions.dll + True + True + + + + + + + + + ..\..\..\packages\Microsoft.Net.Http\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.Extensions.dll + True + True + + + ..\..\..\packages\Microsoft.Net.Http\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.Primitives.dll + True + True + + + + + + + ..\..\..\packages\Microsoft.Net.Http\lib\portable-net45+win8\System.Net.Http.Extensions.dll + True + True + + + ..\..\..\packages\Microsoft.Net.Http\lib\portable-net45+win8\System.Net.Http.Primitives.dll + True + True + + + + + + + ..\..\..\packages\Microsoft.Net.Http\lib\portable-net45+win8+wpa81\System.Net.Http.Extensions.dll + True + True + + + ..\..\..\packages\Microsoft.Net.Http\lib\portable-net45+win8+wpa81\System.Net.Http.Primitives.dll + True + True + + + + + + + + + ..\..\..\packages\Moq\lib\net35\Moq.dll + True + True + + + + + + + ..\..\..\packages\Moq\lib\net40\Moq.dll + True + True + + + + + + + ..\..\..\packages\Moq\lib\sl5\Moq.Silverlight.dll + True + True + + + + + + + + + ..\..\..\packages\Newtonsoft.Json\lib\net20\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\..\packages\Newtonsoft.Json\lib\net35\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\..\packages\Newtonsoft.Json\lib\net40\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\..\packages\Newtonsoft.Json\lib\net45\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\..\packages\Newtonsoft.Json\lib\netcore45\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\..\packages\Newtonsoft.Json\lib\portable-net40+sl5+wp80+win8+wpa81\Newtonsoft.Json.dll + True + True + + + + + + + ..\..\..\packages\Newtonsoft.Json\lib\portable-net45+wp80+win8+wpa81+aspnetcore50\Newtonsoft.Json.dll + True + True + + + + + + + + + ..\..\..\packages\PCLStorage\lib\portable-net45+sl5+wp8+wpa81+win8+monoandroid+monotouch+Xamarin.iOS+Xamarin.Mac\PCLStorage.dll + True + True + + + ..\..\..\packages\PCLStorage\lib\portable-net45+sl5+wp8+wpa81+win8+monoandroid+monotouch+Xamarin.iOS+Xamarin.Mac\PCLStorage.Abstractions.dll + True + True + + + + + + + ..\..\..\packages\PCLStorage\lib\portable-net45+wp8+wpa81+win8+monoandroid+monotouch+Xamarin.iOS+Xamarin.Mac\PCLStorage.dll + True + True + + + ..\..\..\packages\PCLStorage\lib\portable-net45+wp8+wpa81+win8+monoandroid+monotouch+Xamarin.iOS+Xamarin.Mac\PCLStorage.Abstractions.dll + True + True + + + + + + + ..\..\..\packages\PCLStorage\lib\portable-win8+wpa81\PCLStorage.dll + True + True + + + ..\..\..\packages\PCLStorage\lib\portable-win8+wpa81\PCLStorage.Abstractions.dll + True + True + + + + + + + + + ..\..\..\packages\SimpleRESTServices\lib\net35\SimpleRESTServices.dll + True + True + + + + + + + ..\..\..\packages\SimpleRESTServices\lib\net40\SimpleRESTServices.dll + True + True + + + + + + + + + ..\..\..\packages\xunit.abstractions\lib\net35\xunit.abstractions.dll + True + True + + + + + + + ..\..\..\packages\xunit.abstractions\lib\portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS\xunit.abstractions.dll + True + True + + + + + + + + + ..\..\..\packages\xunit.assert\lib\portable-net45+win8+wp8+wpa81\xunit.assert.dll + True + True + + + + + + + + + ..\..\..\packages\xunit.extensibility.core\lib\portable-net45+win8+wp8+wpa81\xunit.core.dll + True + True + + + + + + + + + ..\..\..\packages\xunit.extensibility.execution\lib\monoandroid\xunit.execution.dotnet.dll + True + True + + + + + + + ..\..\..\packages\xunit.extensibility.execution\lib\monotouch\xunit.execution.dotnet.dll + True + True + + + + + + + ..\..\..\packages\xunit.extensibility.execution\lib\net45\xunit.execution.desktop.dll + True + True + + + + + + + ..\..\..\packages\xunit.extensibility.execution\lib\portable-net45+win8+wp8+wpa81\xunit.execution.dotnet.dll + True + True + + + + + + + ..\..\..\packages\xunit.extensibility.execution\lib\win8\xunit.execution.dotnet.dll + True + True + + + + + + + ..\..\..\packages\xunit.extensibility.execution\lib\wp8\xunit.execution.dotnet.dll + True + True + + + + + + + ..\..\..\packages\xunit.extensibility.execution\lib\wpa81\xunit.execution.dotnet.dll + True + True + + + + + + + ..\..\..\packages\xunit.extensibility.execution\lib\xamarinios\xunit.execution.dotnet.dll + True + True + + + + + \ No newline at end of file diff --git a/src/testing/unit/Serialization/EmptyEnumerableTests.cs b/src/testing/unit/Serialization/EmptyEnumerableTests.cs index 98aaca6af..86f10021c 100644 --- a/src/testing/unit/Serialization/EmptyEnumerableTests.cs +++ b/src/testing/unit/Serialization/EmptyEnumerableTests.cs @@ -21,10 +21,10 @@ public ExampleThing() public void WhenDeserializingNullCollection_ItShouldUseAnEmptyCollection() { var thing = new ExampleThing{Messages = null}; - string json = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(thing); + string json = OpenStackNet.Serialize(thing); Assert.DoesNotContain("messages", json); - var result = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize(json); + var result = OpenStackNet.Deserialize(json); Assert.NotNull(result.Messages); Assert.Empty(result.Messages); @@ -35,7 +35,7 @@ public void WhenSerializingEmptyCollection_ItShouldBeIgnored() { var thing = new ExampleThing { Messages = new List() }; - string json = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(thing); + string json = OpenStackNet.Serialize(thing); Assert.DoesNotContain("messages", json); } diff --git a/src/testing/unit/Serialization/RootWrapperConverterTests.cs b/src/testing/unit/Serialization/RootWrapperConverterTests.cs index a88a25c71..155a11e1c 100644 --- a/src/testing/unit/Serialization/RootWrapperConverterTests.cs +++ b/src/testing/unit/Serialization/RootWrapperConverterTests.cs @@ -23,7 +23,7 @@ class ThingCollection : List [Fact] public void Serialize() { - var json = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(new Thing()); + var json = OpenStackNet.Serialize(new Thing()); var jsonObj = JObject.Parse(json); JProperty rootProperty = jsonObj.Properties().FirstOrDefault(); @@ -34,15 +34,15 @@ public void Serialize() [Fact] public void Deserialize() { - var json = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(new Thing {Id = "thing-id"}); - var thing = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize(json); + var json = OpenStackNet.Serialize(new Thing {Id = "thing-id"}); + var thing = OpenStackNet.Deserialize(json); Assert.Equal("thing-id", thing.Id); } [Fact] public void SerializeWhenNotRoot() { - var json = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(new List{ new Thing() }); + var json = OpenStackNet.Serialize(new List{ new Thing() }); Assert.DoesNotContain("\"thing\"", json); } @@ -50,7 +50,7 @@ public void SerializeWhenNotRoot() [Fact] public void SerializeWhenNested() { - var json = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(new ThingCollection { new Thing() }); + var json = OpenStackNet.Serialize(new ThingCollection { new Thing() }); Assert.DoesNotContain("\"thing\"", json); } @@ -59,7 +59,7 @@ public void SerializeWhenNested() public void DeserializeWhenNotRoot() { var json = JArray.Parse("[{'id':'thing-id'}]").ToString(); - var things = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize>(json); + var things = OpenStackNet.Deserialize>(json); Assert.Equal(1, things.Count); Assert.Equal("thing-id", things[0].Id); } @@ -68,7 +68,7 @@ public void DeserializeWhenNotRoot() public void DeserializeWhenNested() { var json = JObject.Parse("{'things':[{'id':'thing-id'}]}").ToString(); - var things = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize(json); + var things = OpenStackNet.Deserialize(json); Assert.NotNull(things); Assert.Equal(1, things.Count); Assert.Equal("thing-id", things[0].Id); @@ -78,7 +78,7 @@ public void DeserializeWhenNested() public void ShouldIgnoreUnexpectedRootProperties() { var json = JObject.Parse("{'links': [{'name': 'next', 'link': 'http://nextlink'}], 'thing': {'id': 'thing-id'}}").ToString(); - var thing = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize(json); + var thing = OpenStackNet.Deserialize(json); Assert.NotNull(thing); Assert.Equal("thing-id", thing.Id); } diff --git a/src/testing/unit/Serialization/TolerantEnumConverterTests.cs b/src/testing/unit/Serialization/TolerantEnumConverterTests.cs index 46ab46d0b..dc8967f2a 100644 --- a/src/testing/unit/Serialization/TolerantEnumConverterTests.cs +++ b/src/testing/unit/Serialization/TolerantEnumConverterTests.cs @@ -25,7 +25,7 @@ enum StuffStatus [Fact] public void WhenValueIsRecognized_MatchToValue() { - var result = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize("\"ACTIVE\""); + var result = OpenStackNet.Deserialize("\"ACTIVE\""); Assert.Equal(ThingStatus.Active, result); } @@ -33,7 +33,7 @@ public void WhenValueIsRecognized_MatchToValue() [Fact] public void WhenAttributedValueIsRecognized_MatchToValue() { - var result = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize("\"REMOVE_FAILED\""); + var result = OpenStackNet.Deserialize("\"REMOVE_FAILED\""); Assert.Equal(ThingStatus.RemoveFailed, result); } @@ -41,7 +41,7 @@ public void WhenAttributedValueIsRecognized_MatchToValue() [Fact] public void WhenValueIsUnrecognized_MatchToUnknownValue() { - var result = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize("\"bad-enum-value\""); + var result = OpenStackNet.Deserialize("\"bad-enum-value\""); Assert.Equal(ThingStatus.Unknown, result); } @@ -49,7 +49,7 @@ public void WhenValueIsUnrecognized_MatchToUnknownValue() [Fact] public void WhenValueIsUnrecognized_AndUnknownIsNotPresent_MatchToFirstValue() { - var result = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize("\"bad-enum-value\""); + var result = OpenStackNet.Deserialize("\"bad-enum-value\""); Assert.Equal(StuffStatus.Missing, result); } @@ -57,7 +57,7 @@ public void WhenValueIsUnrecognized_AndUnknownIsNotPresent_MatchToFirstValue() [Fact] public void WhenValueIsUnrecognized_AndDestinationIsNullable_UseNull() { - var result = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize("\"bad-enum-value\""); + var result = OpenStackNet.Deserialize("\"bad-enum-value\""); Assert.Null(result); } diff --git a/src/testing/unit/app.config b/src/testing/unit/app.config index 5ac8598cf..19027a646 100644 --- a/src/testing/unit/app.config +++ b/src/testing/unit/app.config @@ -1,11 +1,10 @@  - - - - - - - - - + + + + True + + + + diff --git a/src/testing/unit/packages.config b/src/testing/unit/packages.config deleted file mode 100644 index 5a2c1906d..000000000 --- a/src/testing/unit/packages.config +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/testing/unit/paket.references b/src/testing/unit/paket.references new file mode 100644 index 000000000..c37c4c738 --- /dev/null +++ b/src/testing/unit/paket.references @@ -0,0 +1,13 @@ +Flurl.Http.Signed +Flurl.Signed +Marvin.JsonPatch.Signed +Moq +Newtonsoft.Json +SimpleRESTServices +xunit +xunit.abstractions +xunit.assert +xunit.core +xunit.extensibility.core +xunit.runner.console +xunit.runner.visualstudio \ No newline at end of file