From 5010507257474330f6d6273a09015931d1fa17e3 Mon Sep 17 00:00:00 2001 From: wwwlicious <773dcf03@opayq.com> Date: Mon, 13 Aug 2018 23:14:35 +0100 Subject: [PATCH] #4 WIP - updating project formats and framework targeting. Updating tests for apphost and self-contained redis instance --- .../Properties/AssemblyInfo.cs | 35 ---- .../ServiceStack.RateLimit.Redis.csproj | 125 +++++--------- .../ServiceStack.RateLimit.Redis.nuspec | 18 -- .../packages.config | 9 - test/DemoService/App.config | 3 - test/DemoService/AppHost.cs | 1 - test/DemoService/DemoService.csproj | 84 +-------- test/DemoService/Properties/AssemblyInfo.cs | 35 ---- test/DemoService/packages.config | 9 - .../AppHostFixture.cs | 22 --- .../AppSettingsLimitProviderTests.cs | 8 +- .../AttributeLimitProviderTests.cs | 5 +- .../Headers/RateLimitHeaderTests.cs | 2 +- .../LimitKeyGeneratorTests.cs | 6 +- .../LimitRateAttributeTests.cs | 2 +- .../Models/RateLimitResultTests.cs | 2 +- .../Models/RateLimitTimeResultTests.cs | 2 +- .../Properties/AssemblyInfo.cs | 35 ---- .../RateLimitAppHostFixture.cs | 105 +++++++++++ .../RateLimitFeatureTests.cs | 2 +- .../ServiceStack.RateLimit.Redis.Tests.csproj | 163 ++---------------- .../Utilities/LuaScriptHelpersTests.cs | 2 +- .../Utilities/MaybeTests.cs | 2 +- .../Utilities/RequestExtensionsTests.cs | 2 +- .../app.config | 15 -- .../packages.config | 22 --- 26 files changed, 182 insertions(+), 534 deletions(-) delete mode 100644 src/ServiceStack.RateLimit.Redis/Properties/AssemblyInfo.cs delete mode 100644 src/ServiceStack.RateLimit.Redis/ServiceStack.RateLimit.Redis.nuspec delete mode 100644 src/ServiceStack.RateLimit.Redis/packages.config delete mode 100644 test/DemoService/Properties/AssemblyInfo.cs delete mode 100644 test/DemoService/packages.config delete mode 100644 test/ServiceStack.RateLimit.Redis.Tests/AppHostFixture.cs delete mode 100644 test/ServiceStack.RateLimit.Redis.Tests/Properties/AssemblyInfo.cs create mode 100644 test/ServiceStack.RateLimit.Redis.Tests/RateLimitAppHostFixture.cs delete mode 100644 test/ServiceStack.RateLimit.Redis.Tests/app.config delete mode 100644 test/ServiceStack.RateLimit.Redis.Tests/packages.config diff --git a/src/ServiceStack.RateLimit.Redis/Properties/AssemblyInfo.cs b/src/ServiceStack.RateLimit.Redis/Properties/AssemblyInfo.cs deleted file mode 100644 index 17c62ac..0000000 --- a/src/ServiceStack.RateLimit.Redis/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("ServiceStack.RateLimit.Redis")] -[assembly: AssemblyDescription("Plugin for ServiceStack that adds rate limiting to ensure endpoints are protected from misuse")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("wwwlicious")] -[assembly: AssemblyProduct("ServiceStack.RateLimit.Redis")] -[assembly: AssemblyCopyright("Copyright © 2016")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("1bef4f02-645e-4536-b15c-bc735f7058f7")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/ServiceStack.RateLimit.Redis/ServiceStack.RateLimit.Redis.csproj b/src/ServiceStack.RateLimit.Redis/ServiceStack.RateLimit.Redis.csproj index b8d93d1..b94194f 100644 --- a/src/ServiceStack.RateLimit.Redis/ServiceStack.RateLimit.Redis.csproj +++ b/src/ServiceStack.RateLimit.Redis/ServiceStack.RateLimit.Redis.csproj @@ -1,97 +1,52 @@ - - - + - Debug - AnyCPU - {1BEF4F02-645E-4536-B15C-BC735F7058F7} - Library - Properties - ServiceStack.RateLimit.Redis - ServiceStack.RateLimit.Redis - v4.5.2 - 512 + netstandard2.0;net452 + Debug;Release + ServiceStack.RateLimit.Redis + Plugin for ServiceStack that adds rate limiting to ensure endpoints are protected from misuse + Donald Gray (@donaldgray);Scott Mackay (@wwwlicious) + Scott Mackay (@wwwlicious) + Copyright (c) wwwlicious 2016 - Present + false + true + CS1591 + false + ServiceStack.RateLimit.Redis + $(Version) + $(PackageVersion) + $(PackageOutputPath) + https://opensource.org/licenses/MPL-2.0 + https://github.com/wwwlicious/servicestack-ratelimit-redis + https://servicestack.net/img/logo-32.png + https://github.com/wwwlicious/servicestack-ratelimit-redis/releases + servicestack plugin rate limit ratelimit microservices redis protect + true + true + https://github.com/wwwlicious/servicestack-ratelimit-redis - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 + + TRACE;DEBUG;NET452; + bin\Debug\net452\ServiceStack.RateLimit.Redis.xml - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 + + NET452 + bin\Release\net452\ServiceStack.RateLimit.Redis.xml + + + TRACE;DEBUG;NETSTANDARD2_0; + bin\Debug\netstandard2.0\ServiceStack.RateLimit.Redis.xml + + + NETSTANDARD2_0 + bin\Release\netstandard2.0\ServiceStack.RateLimit.Redis.xml - - ..\packages\ServiceStack.4.5.14\lib\net45\ServiceStack.dll - True - - - ..\packages\ServiceStack.Client.4.5.14\lib\net45\ServiceStack.Client.dll - True - - - ..\packages\ServiceStack.Common.4.5.14\lib\net45\ServiceStack.Common.dll - True - - - ..\packages\ServiceStack.Interfaces.4.5.14\lib\portable-wp80+sl5+net45+win8+wpa81+monotouch+monoandroid+xamarin.ios10\ServiceStack.Interfaces.dll - True - - - ..\packages\ServiceStack.Redis.4.5.14\lib\net45\ServiceStack.Redis.dll - True - - - ..\packages\ServiceStack.Text.4.5.14\lib\net45\ServiceStack.Text.dll - True - - - - - - - - - - - - - - - - - - - - - - - - + - - Designer - + - - \ No newline at end of file diff --git a/src/ServiceStack.RateLimit.Redis/ServiceStack.RateLimit.Redis.nuspec b/src/ServiceStack.RateLimit.Redis/ServiceStack.RateLimit.Redis.nuspec deleted file mode 100644 index b34ee14..0000000 --- a/src/ServiceStack.RateLimit.Redis/ServiceStack.RateLimit.Redis.nuspec +++ /dev/null @@ -1,18 +0,0 @@ - - - - ServiceStack.RateLimit.Redis - $version$ - Donald Gray (@donaldgray);Scott Mackay (@wwwlicious) - Plugin for ServiceStack that adds rate limiting to ensure endpoints are protected from misuse - https://github.com/wwwlicious/servicestack-ratelimit-redis - https://opensource.org/licenses/MPL-2.0 - https://servicestack.net/img/logo-32.png - false - servicestack plugin rate limit ratelimit microservices redis protect - See github project for details - - - - - \ No newline at end of file diff --git a/src/ServiceStack.RateLimit.Redis/packages.config b/src/ServiceStack.RateLimit.Redis/packages.config deleted file mode 100644 index 20b0cad..0000000 --- a/src/ServiceStack.RateLimit.Redis/packages.config +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/test/DemoService/App.config b/test/DemoService/App.config index 424cdc9..b06d864 100644 --- a/test/DemoService/App.config +++ b/test/DemoService/App.config @@ -1,8 +1,5 @@  - - - diff --git a/test/DemoService/AppHost.cs b/test/DemoService/AppHost.cs index 4b46487..8caeede 100644 --- a/test/DemoService/AppHost.cs +++ b/test/DemoService/AppHost.cs @@ -55,7 +55,6 @@ private void SetupDependencies() Container.Register(new BasicRedisClientManager(redisConnection)); // Setup basic auth - Container.Register(new MemoryCacheClient()); var userRep = new InMemoryAuthRepository(); Container.Register(userRep); diff --git a/test/DemoService/DemoService.csproj b/test/DemoService/DemoService.csproj index 43f8ecb..aa0af37 100644 --- a/test/DemoService/DemoService.csproj +++ b/test/DemoService/DemoService.csproj @@ -1,86 +1,10 @@ - - - + - Debug - AnyCPU - {B0A54830-AA7B-4919-97CD-81D58C270EC4} + net462 + Debug;Release Exe - Properties - DemoService - DemoService - v4.5.2 - 512 - true - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\..\src\packages\ServiceStack.4.5.14\lib\net45\ServiceStack.dll - True - - - ..\..\src\packages\ServiceStack.Client.4.5.14\lib\net45\ServiceStack.Client.dll - True - - - ..\..\src\packages\ServiceStack.Common.4.5.14\lib\net45\ServiceStack.Common.dll - True - - - ..\..\src\packages\ServiceStack.Interfaces.4.5.14\lib\portable-wp80+sl5+net45+win8+wpa81+monotouch+monoandroid+xamarin.ios10\ServiceStack.Interfaces.dll - True - - - ..\..\src\packages\ServiceStack.Redis.4.5.14\lib\net45\ServiceStack.Redis.dll - True - - - ..\..\src\packages\ServiceStack.Text.4.5.14\lib\net45\ServiceStack.Text.dll - True - - - - - - - - - - - - - - - {1BEF4F02-645E-4536-B15C-BC735F7058F7} - ServiceStack.RateLimit.Redis - + - - \ No newline at end of file diff --git a/test/DemoService/Properties/AssemblyInfo.cs b/test/DemoService/Properties/AssemblyInfo.cs deleted file mode 100644 index 89b73bb..0000000 --- a/test/DemoService/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("DemoService")] -[assembly: AssemblyDescription("Demo project to demonstrate ServiceStack.RateLimit.Redis project functionality")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("wwwlicious")] -[assembly: AssemblyProduct("DemoService")] -[assembly: AssemblyCopyright("Copyright © 2016")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("b0a54830-aa7b-4919-97cd-81d58c270ec4")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/test/DemoService/packages.config b/test/DemoService/packages.config deleted file mode 100644 index 20b0cad..0000000 --- a/test/DemoService/packages.config +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/test/ServiceStack.RateLimit.Redis.Tests/AppHostFixture.cs b/test/ServiceStack.RateLimit.Redis.Tests/AppHostFixture.cs deleted file mode 100644 index 34d8381..0000000 --- a/test/ServiceStack.RateLimit.Redis.Tests/AppHostFixture.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; -using ServiceStack.Testing; - -namespace ServiceStack.RateLimit.Redis.Tests -{ - public class AppHostFixture : IDisposable - { - private ServiceStackHost appHost; - - public AppHostFixture() - { - appHost = new BasicAppHost().Init(); - } - - public ServiceStackHost AppHost => appHost; - - public void Dispose() - { - appHost.Dispose(); - } - } -} \ No newline at end of file diff --git a/test/ServiceStack.RateLimit.Redis.Tests/AppSettingsLimitProviderTests.cs b/test/ServiceStack.RateLimit.Redis.Tests/AppSettingsLimitProviderTests.cs index 071b5af..6e39d98 100644 --- a/test/ServiceStack.RateLimit.Redis.Tests/AppSettingsLimitProviderTests.cs +++ b/test/ServiceStack.RateLimit.Redis.Tests/AppSettingsLimitProviderTests.cs @@ -16,7 +16,7 @@ namespace ServiceStack.RateLimit.Redis.Tests using Testing; using Xunit; - public class AppSettingsLimitProviderTests : IClassFixture + public class AppSettingsLimitProviderTests { public AppSettingsLimitProviderTests() { @@ -47,8 +47,7 @@ public void GetLimits_ReturnsRequestLimits_FromConfig(IEnumerable reques { var mockHttpRequest = new MockHttpRequest(); - A.CallTo(() => keyGenerator.GetConfigKeysForRequest(mockHttpRequest)) - .Returns(requestKeys); + A.CallTo(() => keyGenerator.GetConfigKeysForRequest(mockHttpRequest)).Returns(requestKeys); A.CallTo(() => appSetting.Get(requestKeys.First())).Returns(limitGroup); var limits = limitProvider.GetLimits(mockHttpRequest); @@ -62,8 +61,7 @@ public void GetLimits_ReturnsUserLimits_FromConfig(IEnumerable userKeys, { var mockHttpRequest = new MockHttpRequest(); - A.CallTo(() => keyGenerator.GetConfigKeysForUser(mockHttpRequest)) - .Returns(userKeys); + A.CallTo(() => keyGenerator.GetConfigKeysForUser(mockHttpRequest)).Returns(userKeys); A.CallTo(() => appSetting.Get(userKeys.First())).Returns(limitGroup); var limits = limitProvider.GetLimits(mockHttpRequest); diff --git a/test/ServiceStack.RateLimit.Redis.Tests/AttributeLimitProviderTests.cs b/test/ServiceStack.RateLimit.Redis.Tests/AttributeLimitProviderTests.cs index d5655b4..36fcf5e 100644 --- a/test/ServiceStack.RateLimit.Redis.Tests/AttributeLimitProviderTests.cs +++ b/test/ServiceStack.RateLimit.Redis.Tests/AttributeLimitProviderTests.cs @@ -14,9 +14,10 @@ namespace ServiceStack.RateLimit.Redis.Tests using Testing; using Xunit; - public class AttributeLimitProviderTests : IClassFixture + [Collection("RateLimitFeature")] + public class AttributeLimitProviderTests { - public AttributeLimitProviderTests() + public AttributeLimitProviderTests(RateLimitAppHostFixture fixture) { appSetting = A.Fake(); diff --git a/test/ServiceStack.RateLimit.Redis.Tests/Headers/RateLimitHeaderTests.cs b/test/ServiceStack.RateLimit.Redis.Tests/Headers/RateLimitHeaderTests.cs index 4cc9024..332f708 100644 --- a/test/ServiceStack.RateLimit.Redis.Tests/Headers/RateLimitHeaderTests.cs +++ b/test/ServiceStack.RateLimit.Redis.Tests/Headers/RateLimitHeaderTests.cs @@ -11,7 +11,7 @@ namespace ServiceStack.RateLimit.Redis.Tests.Headers using Redis.Models; using Xunit; - public class RateLimitHeaderTests : IClassFixture + public class RateLimitHeaderTests { [Fact] public void Create_ReturnsEmptyList_IfPassedNull() diff --git a/test/ServiceStack.RateLimit.Redis.Tests/LimitKeyGeneratorTests.cs b/test/ServiceStack.RateLimit.Redis.Tests/LimitKeyGeneratorTests.cs index 34bf483..52e1918 100644 --- a/test/ServiceStack.RateLimit.Redis.Tests/LimitKeyGeneratorTests.cs +++ b/test/ServiceStack.RateLimit.Redis.Tests/LimitKeyGeneratorTests.cs @@ -14,11 +14,11 @@ namespace ServiceStack.RateLimit.Redis.Tests using Web; using Xunit; - [Collection("LimitKeyGeneratorTests")] - public class LimitKeyGeneratorTests : IClassFixture + [Collection("RateLimitFixture")] + public class LimitKeyGeneratorTests { - public LimitKeyGeneratorTests(AppHostFixture fixture) + public LimitKeyGeneratorTests(RateLimitAppHostFixture fixture) { // The GetConsumerId method requires an AuthUserSession. AuthenticateService.Init(() => new AuthUserSession(), new BasicAuthProvider(fixture.AppHost.AppSettings)); diff --git a/test/ServiceStack.RateLimit.Redis.Tests/LimitRateAttributeTests.cs b/test/ServiceStack.RateLimit.Redis.Tests/LimitRateAttributeTests.cs index 5c91418..56e48cf 100644 --- a/test/ServiceStack.RateLimit.Redis.Tests/LimitRateAttributeTests.cs +++ b/test/ServiceStack.RateLimit.Redis.Tests/LimitRateAttributeTests.cs @@ -12,7 +12,7 @@ namespace ServiceStack.RateLimit.Redis.Tests using Web; using Xunit; - public class LimitRateAttributeTests : IClassFixture + public class LimitRateAttributeTests { [Theory] [InlineData(-1)] diff --git a/test/ServiceStack.RateLimit.Redis.Tests/Models/RateLimitResultTests.cs b/test/ServiceStack.RateLimit.Redis.Tests/Models/RateLimitResultTests.cs index 1fe5e80..033f2d2 100644 --- a/test/ServiceStack.RateLimit.Redis.Tests/Models/RateLimitResultTests.cs +++ b/test/ServiceStack.RateLimit.Redis.Tests/Models/RateLimitResultTests.cs @@ -7,7 +7,7 @@ namespace ServiceStack.RateLimit.Redis.Tests.Models using Redis.Models; using Xunit; - public class RateLimitResultTests : IClassFixture + public class RateLimitResultTests { [Fact] public void Results_DefaultedToEmptyArray() diff --git a/test/ServiceStack.RateLimit.Redis.Tests/Models/RateLimitTimeResultTests.cs b/test/ServiceStack.RateLimit.Redis.Tests/Models/RateLimitTimeResultTests.cs index 84948c7..8884765 100644 --- a/test/ServiceStack.RateLimit.Redis.Tests/Models/RateLimitTimeResultTests.cs +++ b/test/ServiceStack.RateLimit.Redis.Tests/Models/RateLimitTimeResultTests.cs @@ -7,7 +7,7 @@ namespace ServiceStack.RateLimit.Redis.Tests.Models using Redis.Models; using Xunit; - public class RateLimitTimeResultTests : IClassFixture + public class RateLimitTimeResultTests { [Fact] public void Remaining_ReturnsCorrect() diff --git a/test/ServiceStack.RateLimit.Redis.Tests/Properties/AssemblyInfo.cs b/test/ServiceStack.RateLimit.Redis.Tests/Properties/AssemblyInfo.cs deleted file mode 100644 index 0f2f88b..0000000 --- a/test/ServiceStack.RateLimit.Redis.Tests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("ServiceStack.RateLimit.Redis.Tests")] -[assembly: AssemblyDescription("Unit tests for ServiceStack.RateLimit.Redis project")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("ServiceStack.RateLimit.Redis.Tests")] -[assembly: AssemblyCopyright("Copyright © 2016")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("c342abcf-a2d5-45c0-8612-55fb32627e9e")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/test/ServiceStack.RateLimit.Redis.Tests/RateLimitAppHostFixture.cs b/test/ServiceStack.RateLimit.Redis.Tests/RateLimitAppHostFixture.cs new file mode 100644 index 0000000..c56efe0 --- /dev/null +++ b/test/ServiceStack.RateLimit.Redis.Tests/RateLimitAppHostFixture.cs @@ -0,0 +1,105 @@ +using System; +using ServiceStack.Testing; + +namespace ServiceStack.RateLimit.Redis.Tests +{ + using System.Reflection; + using FluentAssertions; + using Funq; + using RedisInside; + using ServiceStack.Auth; + using ServiceStack.Redis; + using Xunit; + + public class RateLimitAppHostFixture : IDisposable + { + internal readonly RateLimitAppHost Apphost; + internal readonly string BaseUrl; + + public RateLimitAppHostFixture() + { + AppHost = new RateLimitAppHost(); + Apphost.Init(); + BaseUrl = "http://localhost:1337/"; + Apphost.Start(BaseUrl); + Apphost.StartUpErrors.Should().BeNullOrEmpty(); + } + + public ServiceStackHost AppHost { get; } + + public IServiceClient CreateClient() + { + return new JsonServiceClient(BaseUrl); + } + + public IServiceClient CreateAuthenticatedClient() + { + var client = CreateClient(); + client.SetCredentials(Apphost.ValidUser, Apphost.ValidPassword); + return client; + } + + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + protected virtual void Dispose(bool disposing) + { + Apphost?.Dispose(); + } + } + + public class RateLimitAppHost : AppSelfHostBase + { + internal IUserAuth TestUser; + + public RateLimitAppHost() : base("RateLimitTestAppHost", typeof(RateLimitAppHost).Assembly) + { + } + + public string ValidUser { get; set; } = "test"; + public string ValidPassword { get; set; } = "user"; + + public override void Configure(Container container) + { + // create a valid user for testing + var authRepository = new InMemoryAuthRepository(); + TestUser = authRepository.CreateUserAuth(); + TestUser.UserName = ValidUser; + authRepository.CreateUserAuth(TestUser, ValidPassword); + container.Register(authRepository); + + var instance = new Redis(); + container.Register(instance); + + Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] { new BasicAuthProvider(AppSettings) }, "/home")); + Plugins.Add(new RateLimitFeature(new BasicRedisClientManager())); + } + } + + [CollectionDefinition("RateLimitFeature")] + public class RateLimitFeatureCollection : ICollectionFixture + { + // This class has no code, and is never created. Its purpose is simply + // to be the place to apply [CollectionDefinition] and all the + // ICollectionFixture<> interfaces. + + // To use, add [Collection("RateLimitFeature")] to the test class and + // add a constructor with the argument (RateLimitAppHostFixture fixture) + } + + public class RateLimitedService : Service + { + public object Any(ConfigBasedRateLimitRequest request) + { + return request; + } + } + + [Authenticate] + public class ConfigBasedRateLimitRequest : IGet, IReturn + { + } +} \ No newline at end of file diff --git a/test/ServiceStack.RateLimit.Redis.Tests/RateLimitFeatureTests.cs b/test/ServiceStack.RateLimit.Redis.Tests/RateLimitFeatureTests.cs index 92313cb..1105699 100644 --- a/test/ServiceStack.RateLimit.Redis.Tests/RateLimitFeatureTests.cs +++ b/test/ServiceStack.RateLimit.Redis.Tests/RateLimitFeatureTests.cs @@ -17,7 +17,7 @@ namespace ServiceStack.RateLimit.Redis.Tests using Web; using Xunit; - public class RateLimitFeatureTests : IClassFixture + public class RateLimitFeatureTests { private readonly ILimitKeyGenerator keyGenerator; private readonly ILimitProvider limitProvider; diff --git a/test/ServiceStack.RateLimit.Redis.Tests/ServiceStack.RateLimit.Redis.Tests.csproj b/test/ServiceStack.RateLimit.Redis.Tests/ServiceStack.RateLimit.Redis.Tests.csproj index 9be3152..6b250bf 100644 --- a/test/ServiceStack.RateLimit.Redis.Tests/ServiceStack.RateLimit.Redis.Tests.csproj +++ b/test/ServiceStack.RateLimit.Redis.Tests/ServiceStack.RateLimit.Redis.Tests.csproj @@ -1,150 +1,19 @@ - - - - - - Debug - AnyCPU - {C342ABCF-A2D5-45C0-8612-55FB32627E9E} - Library - Properties - ServiceStack.RateLimit.Redis.Tests - ServiceStack.RateLimit.Redis.Tests - v4.5.2 - 512 - - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\..\src\packages\AutoFixture.4.5.0\lib\net452\AutoFixture.dll - True - - - ..\..\src\packages\AutoFixture.AutoFakeItEasy.4.5.0\lib\net452\AutoFixture.AutoFakeItEasy.dll - True - - - ..\..\src\packages\AutoFixture.Xunit2.4.5.0\lib\net452\AutoFixture.Xunit2.dll - True - - - ..\..\src\packages\FakeItEasy.4.8.0\lib\net45\FakeItEasy.dll - True - - - ..\..\src\packages\Fare.2.1.1\lib\net35\Fare.dll - True - - - ..\..\src\packages\FluentAssertions.5.4.1\lib\net45\FluentAssertions.dll - True - - - ..\..\src\packages\ServiceStack.4.5.14\lib\net45\ServiceStack.dll - True - - - ..\..\src\packages\ServiceStack.Client.4.5.14\lib\net45\ServiceStack.Client.dll - True - - - ..\..\src\packages\ServiceStack.Common.4.5.14\lib\net45\ServiceStack.Common.dll - True - - - ..\..\src\packages\ServiceStack.Interfaces.4.5.14\lib\portable-wp80+sl5+net45+win8+wpa81+monotouch+monoandroid+xamarin.ios10\ServiceStack.Interfaces.dll - True - - - ..\..\src\packages\ServiceStack.Text.4.5.14\lib\net45\ServiceStack.Text.dll - True - - - - - - ..\..\src\packages\System.ValueTuple.4.4.0\lib\netstandard1.0\System.ValueTuple.dll - True - - - - - ..\..\src\packages\xunit.abstractions.2.0.2\lib\net35\xunit.abstractions.dll - True - - - ..\..\src\packages\xunit.assert.2.4.0\lib\netstandard1.1\xunit.assert.dll - True - - - ..\..\src\packages\xunit.extensibility.core.2.4.0\lib\net452\xunit.core.dll - True - - - ..\..\src\packages\xunit.extensibility.execution.2.4.0\lib\net452\xunit.execution.desktop.dll - True - - - - - - - - - - - - - - - - - - - - - - - - {1bef4f02-645e-4536-b15c-bc735f7058f7} - ServiceStack.RateLimit.Redis - - - - - - - + - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + net462 - - - - - + + + + + + + + + + + + + + \ No newline at end of file diff --git a/test/ServiceStack.RateLimit.Redis.Tests/Utilities/LuaScriptHelpersTests.cs b/test/ServiceStack.RateLimit.Redis.Tests/Utilities/LuaScriptHelpersTests.cs index b1bcbbb..213be29 100644 --- a/test/ServiceStack.RateLimit.Redis.Tests/Utilities/LuaScriptHelpersTests.cs +++ b/test/ServiceStack.RateLimit.Redis.Tests/Utilities/LuaScriptHelpersTests.cs @@ -10,7 +10,7 @@ namespace ServiceStack.RateLimit.Redis.Tests.Utilities using ServiceStack.Redis; using Xunit; - public class LuaScriptHelpersTests : IClassFixture + public class LuaScriptHelpersTests { [Fact] public void GetLuaScript_ReturnsScript() diff --git a/test/ServiceStack.RateLimit.Redis.Tests/Utilities/MaybeTests.cs b/test/ServiceStack.RateLimit.Redis.Tests/Utilities/MaybeTests.cs index 71f3b49..a113936 100644 --- a/test/ServiceStack.RateLimit.Redis.Tests/Utilities/MaybeTests.cs +++ b/test/ServiceStack.RateLimit.Redis.Tests/Utilities/MaybeTests.cs @@ -8,7 +8,7 @@ namespace ServiceStack.RateLimit.Redis.Tests.Utilities using Redis.Utilities; using Xunit; - public class MaybeTests : IClassFixture + public class MaybeTests { [Fact] public void DefaultCtor_HasValueFalse() => new Maybe().HasValue.Should().BeFalse(); diff --git a/test/ServiceStack.RateLimit.Redis.Tests/Utilities/RequestExtensionsTests.cs b/test/ServiceStack.RateLimit.Redis.Tests/Utilities/RequestExtensionsTests.cs index ae18516..2958d1d 100644 --- a/test/ServiceStack.RateLimit.Redis.Tests/Utilities/RequestExtensionsTests.cs +++ b/test/ServiceStack.RateLimit.Redis.Tests/Utilities/RequestExtensionsTests.cs @@ -13,7 +13,7 @@ namespace ServiceStack.RateLimit.Redis.Tests.Utilities using Web; using Xunit; - public class RequestExtensionsTests : IClassFixture + public class RequestExtensionsTests { [Theory, InlineAutoData] public void GetRequestCorrelationId_ReturnsRequestFromHeader(string header) diff --git a/test/ServiceStack.RateLimit.Redis.Tests/app.config b/test/ServiceStack.RateLimit.Redis.Tests/app.config deleted file mode 100644 index a9c973b..0000000 --- a/test/ServiceStack.RateLimit.Redis.Tests/app.config +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/test/ServiceStack.RateLimit.Redis.Tests/packages.config b/test/ServiceStack.RateLimit.Redis.Tests/packages.config deleted file mode 100644 index 498084c..0000000 --- a/test/ServiceStack.RateLimit.Redis.Tests/packages.config +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file