Skip to content

Commit 6e330b8

Browse files
Test cache and no cache scenarios
1 parent 7512784 commit 6e330b8

File tree

2 files changed

+189
-27
lines changed

2 files changed

+189
-27
lines changed

tests/ImageSharp.Web.Tests/Actions/ActionTests.cs

Lines changed: 145 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ void OnParseCommands(ImageCommandContext context)
2828
complete = true;
2929
}
3030

31-
using (TestServer server = ImageSharpTestServer.CreateWithActions(OnParseCommands))
31+
using (TestServer server = ImageSharpTestServer.CreateWithActionsNoCache(OnParseCommands))
3232
{
3333
await server.CreateClient().GetAsync(url + Command);
3434
}
@@ -37,6 +37,34 @@ void OnParseCommands(ImageCommandContext context)
3737
}
3838

3939
[Theory]
40+
[InlineData(ImageSharpTestServer.PhysicalTestImage)]
41+
[InlineData(ImageSharpTestServer.AzureTestImage)]
42+
public async Task ShouldRunOnValidateActionWithCacheAsync(string url)
43+
{
44+
bool complete = false;
45+
void OnParseCommands(ImageCommandContext context)
46+
{
47+
Assert.NotNull(context);
48+
Assert.NotNull(context.Context);
49+
Assert.NotNull(context.Commands);
50+
Assert.NotNull(context.Parser);
51+
complete = true;
52+
}
53+
54+
using (TestServer server = ImageSharpTestServer.CreateWithActionsCache(OnParseCommands))
55+
{
56+
await server.CreateClient().GetAsync(url + Command);
57+
Assert.True(complete);
58+
59+
complete = false;
60+
await server.CreateClient().GetAsync(url + Command);
61+
}
62+
63+
Assert.True(complete);
64+
}
65+
66+
[Theory]
67+
[InlineData(ImageSharpTestServer.PhysicalTestImage)]
4068
[InlineData(ImageSharpTestServer.AzureTestImage)]
4169
public async Task ShouldRunOnValidateActionNoCommandsAsync(string url)
4270
{
@@ -50,16 +78,45 @@ void OnParseCommands(ImageCommandContext context)
5078
complete = true;
5179
}
5280

53-
using (TestServer server = ImageSharpTestServer.CreateWithActions(OnParseCommands))
81+
using (TestServer server = ImageSharpTestServer.CreateWithActionsNoCache(OnParseCommands))
5482
{
5583
await server.CreateClient().GetAsync(url);
5684
}
5785

5886
Assert.True(complete);
5987
}
6088

61-
[Fact]
62-
public async Task ShouldRunOnBeforeSaveActionAsync()
89+
[Theory]
90+
[InlineData(ImageSharpTestServer.PhysicalTestImage)]
91+
[InlineData(ImageSharpTestServer.AzureTestImage)]
92+
public async Task ShouldRunOnValidateActionNoCommandsWithCacheAsync(string url)
93+
{
94+
bool complete = false;
95+
void OnParseCommands(ImageCommandContext context)
96+
{
97+
Assert.NotNull(context);
98+
Assert.NotNull(context.Context);
99+
Assert.NotNull(context.Commands);
100+
Assert.NotNull(context.Parser);
101+
complete = true;
102+
}
103+
104+
using (TestServer server = ImageSharpTestServer.CreateWithActionsCache(OnParseCommands))
105+
{
106+
await server.CreateClient().GetAsync(url + Command);
107+
Assert.True(complete);
108+
109+
complete = false;
110+
await server.CreateClient().GetAsync(url + Command);
111+
}
112+
113+
Assert.True(complete);
114+
}
115+
116+
[Theory]
117+
[InlineData(ImageSharpTestServer.PhysicalTestImage)]
118+
[InlineData(ImageSharpTestServer.AzureTestImage)]
119+
public async Task ShouldRunOnBeforeSaveActionAsync(string url)
63120
{
64121
bool complete = false;
65122
void OnBeforeSave(FormattedImage image)
@@ -70,16 +127,41 @@ void OnBeforeSave(FormattedImage image)
70127
complete = true;
71128
}
72129

73-
using (TestServer server = ImageSharpTestServer.CreateWithActions(null, OnBeforeSave))
130+
using (TestServer server = ImageSharpTestServer.CreateWithActionsNoCache(null, OnBeforeSave))
74131
{
75-
await server.CreateClient().GetAsync(ImageSharpTestServer.PhysicalTestImage + Command);
132+
await server.CreateClient().GetAsync(url + Command);
76133
}
77134

78135
Assert.True(complete);
79136
}
80137

81-
[Fact]
82-
public async Task ShouldRunOnProcessedActionAsync()
138+
[Theory]
139+
[InlineData(ImageSharpTestServer.PhysicalTestImage)]
140+
[InlineData(ImageSharpTestServer.AzureTestImage)]
141+
public async Task ShouldNotRunOnBeforeSaveActionWithCacheAsync(string url)
142+
{
143+
bool complete = false;
144+
void OnBeforeSave(FormattedImage image)
145+
{
146+
complete = true;
147+
}
148+
149+
using (TestServer server = ImageSharpTestServer.CreateWithActionsCache(null, OnBeforeSave))
150+
{
151+
await server.CreateClient().GetAsync(url + Command);
152+
153+
Assert.False(complete);
154+
155+
await server.CreateClient().GetAsync(url + Command);
156+
}
157+
158+
Assert.False(complete);
159+
}
160+
161+
[Theory]
162+
[InlineData(ImageSharpTestServer.PhysicalTestImage)]
163+
[InlineData(ImageSharpTestServer.AzureTestImage)]
164+
public async Task ShouldRunOnProcessedActionAsync(string url)
83165
{
84166
bool complete = false;
85167
void OnProcessed(ImageProcessingContext context)
@@ -91,16 +173,61 @@ void OnProcessed(ImageProcessingContext context)
91173
complete = true;
92174
}
93175

94-
using (TestServer server = ImageSharpTestServer.CreateWithActions(null, null, OnProcessed))
176+
using (TestServer server = ImageSharpTestServer.CreateWithActionsNoCache(null, null, OnProcessed))
177+
{
178+
await server.CreateClient().GetAsync(url + Command);
179+
}
180+
181+
Assert.True(complete);
182+
}
183+
184+
[Theory]
185+
[InlineData(ImageSharpTestServer.PhysicalTestImage)]
186+
[InlineData(ImageSharpTestServer.AzureTestImage)]
187+
public async Task ShouldNotRunOnProcessedActionWithCacheAsync(string url)
188+
{
189+
bool complete = false;
190+
void OnProcessed(ImageProcessingContext context)
191+
{
192+
complete = true;
193+
}
194+
195+
using (TestServer server = ImageSharpTestServer.CreateWithActionsCache(null, null, OnProcessed))
95196
{
96-
await server.CreateClient().GetAsync(ImageSharpTestServer.PhysicalTestImage + Command);
197+
await server.CreateClient().GetAsync(url + Command);
198+
Assert.False(complete);
199+
200+
await server.CreateClient().GetAsync(url + Command);
201+
}
202+
203+
Assert.False(complete);
204+
}
205+
206+
[Theory]
207+
[InlineData(ImageSharpTestServer.PhysicalTestImage)]
208+
[InlineData(ImageSharpTestServer.AzureTestImage)]
209+
public async Task ShouldRunOnPrepareResponseActionAsync(string url)
210+
{
211+
bool complete = false;
212+
void OnPrepareResponse(HttpContext context)
213+
{
214+
Assert.NotNull(context);
215+
Assert.NotNull(context.Response);
216+
complete = true;
217+
}
218+
219+
using (TestServer server = ImageSharpTestServer.CreateWithActionsNoCache(null, null, null, OnPrepareResponse))
220+
{
221+
await server.CreateClient().GetAsync(url + Command);
97222
}
98223

99224
Assert.True(complete);
100225
}
101226

102-
[Fact]
103-
public async Task ShouldRunOnPrepareResponseActionAsync()
227+
[Theory]
228+
[InlineData(ImageSharpTestServer.PhysicalTestImage)]
229+
[InlineData(ImageSharpTestServer.AzureTestImage)]
230+
public async Task ShouldRunOnPrepareResponseActionWithCacheAsync(string url)
104231
{
105232
bool complete = false;
106233
void OnPrepareResponse(HttpContext context)
@@ -110,9 +237,13 @@ void OnPrepareResponse(HttpContext context)
110237
complete = true;
111238
}
112239

113-
using (TestServer server = ImageSharpTestServer.CreateWithActions(null, null, null, OnPrepareResponse))
240+
using (TestServer server = ImageSharpTestServer.CreateWithActionsCache(null, null, null, OnPrepareResponse))
114241
{
115-
await server.CreateClient().GetAsync(ImageSharpTestServer.PhysicalTestImage + Command);
242+
await server.CreateClient().GetAsync(url + Command);
243+
Assert.True(complete);
244+
245+
complete = false;
246+
await server.CreateClient().GetAsync(url + Command);
116247
}
117248

118249
Assert.True(complete);

tests/ImageSharp.Web.Tests/ImageSharpTestServer.cs

Lines changed: 44 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -101,25 +101,54 @@ public static class ImageSharpTestServer
101101

102102
public static TestServer CreateAzure() => Create(DefaultConfig, DefaultServices);
103103

104-
public static TestServer CreateWithActions(
104+
public static TestServer CreateWithActionsNoCache(
105105
Action<ImageCommandContext> onParseCommands,
106106
Action<FormattedImage> onBeforeSave = null,
107107
Action<ImageProcessingContext> onProcessed = null,
108108
Action<HttpContext> onPrepareResponse = null)
109+
{
110+
Action<ImageSharpMiddlewareOptions> config = options =>
111+
{
112+
options.Configuration = Configuration.Default;
113+
options.MemoryStreamManager = new RecyclableMemoryStreamManager();
114+
options.MaxBrowserCacheDays = -1;
115+
options.MaxCacheDays = -1;
116+
options.OnParseCommands = onParseCommands;
117+
options.OnBeforeSave = onBeforeSave;
118+
options.OnProcessed = onProcessed;
119+
options.OnPrepareResponse = onPrepareResponse;
120+
};
121+
122+
return CreateWithActionsImpl(config);
123+
}
124+
125+
public static TestServer CreateWithActionsCache(
126+
Action<ImageCommandContext> onParseCommands,
127+
Action<FormattedImage> onBeforeSave = null,
128+
Action<ImageProcessingContext> onProcessed = null,
129+
Action<HttpContext> onPrepareResponse = null)
130+
{
131+
Action<ImageSharpMiddlewareOptions> config = options =>
132+
{
133+
options.Configuration = Configuration.Default;
134+
options.MemoryStreamManager = new RecyclableMemoryStreamManager();
135+
options.MaxBrowserCacheDays = 7;
136+
options.MaxCacheDays = 365;
137+
options.OnParseCommands = onParseCommands;
138+
options.OnBeforeSave = onBeforeSave;
139+
options.OnProcessed = onProcessed;
140+
options.OnPrepareResponse = onPrepareResponse;
141+
};
142+
143+
return CreateWithActionsImpl(config);
144+
}
145+
146+
private static TestServer CreateWithActionsImpl(
147+
Action<ImageSharpMiddlewareOptions> config)
109148
{
110149
void ConfigureServices(IServiceCollection services)
111150
{
112-
services.AddImageSharpCore(options =>
113-
{
114-
options.Configuration = Configuration.Default;
115-
options.MemoryStreamManager = new RecyclableMemoryStreamManager();
116-
options.MaxBrowserCacheDays = -1;
117-
options.MaxCacheDays = -1;
118-
options.OnParseCommands = onParseCommands;
119-
options.OnBeforeSave = onBeforeSave;
120-
options.OnProcessed = onProcessed;
121-
options.OnPrepareResponse = onPrepareResponse;
122-
})
151+
services.AddImageSharpCore(config)
123152
.SetRequestParser<QueryCollectionRequestParser>()
124153
.Configure<PhysicalFileSystemCacheOptions>(_ => { })
125154
.SetCache<PhysicalFileSystemCache>()
@@ -140,7 +169,9 @@ void ConfigureServices(IServiceCollection services)
140169
return Create(DefaultConfig, ConfigureServices);
141170
}
142171

143-
public static TestServer Create(Action<IApplicationBuilder> configureApp, Action<IServiceCollection> configureServices = null)
172+
public static TestServer Create(
173+
Action<IApplicationBuilder> configureApp,
174+
Action<IServiceCollection> configureServices = null)
144175
{
145176
IConfigurationRoot configuration = new ConfigurationBuilder()
146177
.AddInMemoryCollection(new[]

0 commit comments

Comments
 (0)