Skip to content

Commit 3dd960e

Browse files
committed
Address PR comments
1 parent 90fd171 commit 3dd960e

File tree

3 files changed

+149
-116
lines changed

3 files changed

+149
-116
lines changed

test/OpenApiNSwagEndToEndTests/ModelStateValidation/ModelStateValidationTests.cs

Lines changed: 82 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
using FluentAssertions;
2-
using FluentAssertions.Specialized;
32
using JsonApiDotNetCore.OpenApi.Client.NSwag;
4-
using Newtonsoft.Json;
53
using OpenApiNSwagEndToEndTests.ModelStateValidation.GeneratedCode;
64
using OpenApiTests;
75
using OpenApiTests.ModelStateValidation;
@@ -35,18 +33,19 @@ public async Task Cannot_violate_compare_constraint()
3533
ModelStateValidationClient apiClient = new(httpClient);
3634

3735
// Act
38-
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(new SocialMediaAccountPostRequestDocument
36+
SocialMediaAccountPostRequestDocument requestBody = new()
3937
{
4038
Data = new SocialMediaAccountDataInPostRequest
4139
{
4240
Attributes = new SocialMediaAccountAttributesInPostRequest
4341
{
4442
FirstName = socialMediaAccount.FirstName,
4543
GivenName = "something else",
46-
LastName = ""
44+
LastName = socialMediaAccount.LastName
4745
}
4846
}
49-
});
47+
};
48+
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(requestBody);
5049

5150
// Assert
5251
ErrorResponseDocument document = (await action.Should().ThrowExactlyAsync<ApiException<ErrorResponseDocument>>()).Which.Result;
@@ -65,22 +64,25 @@ public async Task Cannot_violate_compare_constraint()
6564
public async Task Cannot_exceed_length_constraint(string firstName)
6665
{
6766
// Arrange
67+
SocialMediaAccount socialMediaAccount = _fakers.SocialMediaAccount.Generate();
68+
6869
using HttpClient httpClient = _testContext.Factory.CreateDefaultClient(_logHttpMessageHandler);
6970
ModelStateValidationClient apiClient = new(httpClient);
7071

7172
// Act
72-
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(new SocialMediaAccountPostRequestDocument
73+
SocialMediaAccountPostRequestDocument requestBody = new()
7374
{
7475
Data = new SocialMediaAccountDataInPostRequest
7576
{
7677
Attributes = new SocialMediaAccountAttributesInPostRequest
7778
{
7879
FirstName = firstName,
7980
GivenName = firstName,
80-
LastName = ""
81+
LastName = socialMediaAccount.LastName
8182
}
8283
}
83-
});
84+
};
85+
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(requestBody);
8486

8587
// Assert
8688
ErrorResponseDocument document = (await action.Should().ThrowExactlyAsync<ApiException<ErrorResponseDocument>>()).Which.Result;
@@ -99,21 +101,24 @@ public async Task Cannot_exceed_length_constraint(string firstName)
99101
public async Task Cannot_exceed_string_length_constraint(string userName)
100102
{
101103
// Arrange
104+
SocialMediaAccount socialMediaAccount = _fakers.SocialMediaAccount.Generate();
105+
102106
using HttpClient httpClient = _testContext.Factory.CreateDefaultClient(_logHttpMessageHandler);
103107
ModelStateValidationClient apiClient = new(httpClient);
104108

105109
// Act
106-
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(new SocialMediaAccountPostRequestDocument
110+
SocialMediaAccountPostRequestDocument requestBody = new()
107111
{
108112
Data = new SocialMediaAccountDataInPostRequest
109113
{
110114
Attributes = new SocialMediaAccountAttributesInPostRequest
111115
{
112-
LastName = "",
116+
LastName = socialMediaAccount.LastName,
113117
UserName = userName,
114118
}
115119
}
116-
});
120+
};
121+
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(requestBody);
117122

118123
// Assert
119124
ErrorResponseDocument document = (await action.Should().ThrowExactlyAsync<ApiException<ErrorResponseDocument>>()).Which.Result;
@@ -130,21 +135,24 @@ public async Task Cannot_exceed_string_length_constraint(string userName)
130135
public async Task Cannot_violate_regular_expression_constraint()
131136
{
132137
// Arrange
138+
SocialMediaAccount socialMediaAccount = _fakers.SocialMediaAccount.Generate();
139+
133140
using HttpClient httpClient = _testContext.Factory.CreateDefaultClient(_logHttpMessageHandler);
134141
ModelStateValidationClient apiClient = new(httpClient);
135142

136143
// Act
137-
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(new SocialMediaAccountPostRequestDocument
144+
SocialMediaAccountPostRequestDocument requestBody = new()
138145
{
139146
Data = new SocialMediaAccountDataInPostRequest
140147
{
141148
Attributes = new SocialMediaAccountAttributesInPostRequest
142149
{
143-
LastName = "",
150+
LastName = socialMediaAccount.LastName,
144151
UserName = "aB1",
145152
}
146153
}
147-
});
154+
};
155+
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(requestBody);
148156

149157
// Assert
150158
ErrorResponseDocument document = (await action.Should().ThrowExactlyAsync<ApiException<ErrorResponseDocument>>()).Which.Result;
@@ -158,24 +166,27 @@ public async Task Cannot_violate_regular_expression_constraint()
158166
}
159167

160168
[Fact]
161-
public async Task Cannot_use_invalid_credit_card()
169+
public async Task Cannot_use_invalid_credit_card_number()
162170
{
163171
// Arrange
172+
SocialMediaAccount socialMediaAccount = _fakers.SocialMediaAccount.Generate();
173+
164174
using HttpClient httpClient = _testContext.Factory.CreateDefaultClient(_logHttpMessageHandler);
165175
ModelStateValidationClient apiClient = new(httpClient);
166176

167177
// Act
168-
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(new SocialMediaAccountPostRequestDocument
178+
SocialMediaAccountPostRequestDocument requestBody = new()
169179
{
170180
Data = new SocialMediaAccountDataInPostRequest
171181
{
172182
Attributes = new SocialMediaAccountAttributesInPostRequest
173183
{
174-
LastName = "",
184+
LastName = socialMediaAccount.LastName,
175185
CreditCard = "123-456",
176186
}
177187
}
178-
});
188+
};
189+
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(requestBody);
179190

180191
// Assert
181192
ErrorResponseDocument document = (await action.Should().ThrowExactlyAsync<ApiException<ErrorResponseDocument>>()).Which.Result;
@@ -192,21 +203,24 @@ public async Task Cannot_use_invalid_credit_card()
192203
public async Task Cannot_use_invalid_email()
193204
{
194205
// Arrange
206+
SocialMediaAccount socialMediaAccount = _fakers.SocialMediaAccount.Generate();
207+
195208
using HttpClient httpClient = _testContext.Factory.CreateDefaultClient(_logHttpMessageHandler);
196209
ModelStateValidationClient apiClient = new(httpClient);
197210

198211
// Act
199-
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(new SocialMediaAccountPostRequestDocument
212+
SocialMediaAccountPostRequestDocument requestBody = new()
200213
{
201214
Data = new SocialMediaAccountDataInPostRequest
202215
{
203216
Attributes = new SocialMediaAccountAttributesInPostRequest
204217
{
205-
LastName = "",
218+
LastName = socialMediaAccount.LastName,
206219
Email = "abc",
207220
}
208221
}
209-
});
222+
};
223+
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(requestBody);
210224

211225
// Assert
212226
ErrorResponseDocument document = (await action.Should().ThrowExactlyAsync<ApiException<ErrorResponseDocument>>()).Which.Result;
@@ -227,21 +241,24 @@ public async Task Cannot_use_invalid_email()
227241
public async Task Cannot_use_double_outside_of_valid_range(int age)
228242
{
229243
// Arrange
244+
SocialMediaAccount socialMediaAccount = _fakers.SocialMediaAccount.Generate();
245+
230246
using HttpClient httpClient = _testContext.Factory.CreateDefaultClient(_logHttpMessageHandler);
231247
ModelStateValidationClient apiClient = new(httpClient);
232248

233249
// Act
234-
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(new SocialMediaAccountPostRequestDocument
250+
SocialMediaAccountPostRequestDocument requestBody = new()
235251
{
236252
Data = new SocialMediaAccountDataInPostRequest
237253
{
238254
Attributes = new SocialMediaAccountAttributesInPostRequest
239255
{
240-
LastName = "",
256+
LastName = socialMediaAccount.LastName,
241257
Age = age,
242258
}
243259
}
244-
});
260+
};
261+
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(requestBody);
245262

246263
// Assert
247264
ErrorResponseDocument document = (await action.Should().ThrowExactlyAsync<ApiException<ErrorResponseDocument>>()).Which.Result;
@@ -255,24 +272,27 @@ public async Task Cannot_use_double_outside_of_valid_range(int age)
255272
}
256273

257274
[Fact]
258-
public async Task Cannot_use_invalid_url()
275+
public async Task Cannot_use_relative_url()
259276
{
260277
// Arrange
278+
SocialMediaAccount socialMediaAccount = _fakers.SocialMediaAccount.Generate();
279+
261280
using HttpClient httpClient = _testContext.Factory.CreateDefaultClient(_logHttpMessageHandler);
262281
ModelStateValidationClient apiClient = new(httpClient);
263282

264283
// Act
265-
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(new SocialMediaAccountPostRequestDocument
284+
SocialMediaAccountPostRequestDocument requestBody = new()
266285
{
267286
Data = new SocialMediaAccountDataInPostRequest
268287
{
269288
Attributes = new SocialMediaAccountAttributesInPostRequest
270289
{
271-
LastName = "",
290+
LastName = socialMediaAccount.LastName,
272291
BackgroundPicture = new Uri("/justapath", UriKind.Relative),
273292
}
274293
}
275-
});
294+
};
295+
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(requestBody);
276296

277297
// Assert
278298
ErrorResponseDocument document = (await action.Should().ThrowExactlyAsync<ApiException<ErrorResponseDocument>>()).Which.Result;
@@ -291,21 +311,24 @@ public async Task Cannot_use_invalid_url()
291311
public async Task Cannot_exceed_collection_length_constraint(int length)
292312
{
293313
// Arrange
314+
SocialMediaAccount socialMediaAccount = _fakers.SocialMediaAccount.Generate();
315+
294316
using HttpClient httpClient = _testContext.Factory.CreateDefaultClient(_logHttpMessageHandler);
295317
ModelStateValidationClient apiClient = new(httpClient);
296318

297319
// Act
298-
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(new SocialMediaAccountPostRequestDocument
320+
SocialMediaAccountPostRequestDocument requestBody = new()
299321
{
300322
Data = new SocialMediaAccountDataInPostRequest
301323
{
302324
Attributes = new SocialMediaAccountAttributesInPostRequest
303325
{
304-
LastName = "",
305-
Tags = Enumerable.Repeat("", length).ToArray(),
326+
LastName = socialMediaAccount.LastName,
327+
Tags = Enumerable.Repeat("-", length).ToArray(),
306328
}
307329
}
308-
});
330+
};
331+
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(requestBody);
309332

310333
// Assert
311334
ErrorResponseDocument document = (await action.Should().ThrowExactlyAsync<ApiException<ErrorResponseDocument>>()).Which.Result;
@@ -322,21 +345,24 @@ public async Task Cannot_exceed_collection_length_constraint(int length)
322345
public async Task Cannot_use_non_allowed_value()
323346
{
324347
// Arrange
348+
SocialMediaAccount socialMediaAccount = _fakers.SocialMediaAccount.Generate();
349+
325350
using HttpClient httpClient = _testContext.Factory.CreateDefaultClient(_logHttpMessageHandler);
326351
ModelStateValidationClient apiClient = new(httpClient);
327352

328353
// Act
329-
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(new SocialMediaAccountPostRequestDocument
354+
SocialMediaAccountPostRequestDocument requestBody = new()
330355
{
331356
Data = new SocialMediaAccountDataInPostRequest
332357
{
333358
Attributes = new SocialMediaAccountAttributesInPostRequest
334359
{
335-
LastName = "",
360+
LastName = socialMediaAccount.LastName,
336361
CountryCode = "XX"
337362
}
338363
}
339-
});
364+
};
365+
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(requestBody);
340366

341367
// Assert
342368
ErrorResponseDocument document = (await action.Should().ThrowExactlyAsync<ApiException<ErrorResponseDocument>>()).Which.Result;
@@ -353,21 +379,24 @@ public async Task Cannot_use_non_allowed_value()
353379
public async Task Cannot_use_denied_value()
354380
{
355381
// Arrange
382+
SocialMediaAccount socialMediaAccount = _fakers.SocialMediaAccount.Generate();
383+
356384
using HttpClient httpClient = _testContext.Factory.CreateDefaultClient(_logHttpMessageHandler);
357385
ModelStateValidationClient apiClient = new(httpClient);
358386

359387
// Act
360-
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(new SocialMediaAccountPostRequestDocument
388+
SocialMediaAccountPostRequestDocument requestBody = new()
361389
{
362390
Data = new SocialMediaAccountDataInPostRequest
363391
{
364392
Attributes = new SocialMediaAccountAttributesInPostRequest
365393
{
366-
LastName = "",
394+
LastName = socialMediaAccount.LastName,
367395
Planet = "pluto"
368396
}
369397
}
370-
});
398+
};
399+
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(requestBody);
371400

372401
// Assert
373402
ErrorResponseDocument document = (await action.Should().ThrowExactlyAsync<ApiException<ErrorResponseDocument>>()).Which.Result;
@@ -384,21 +413,24 @@ public async Task Cannot_use_denied_value()
384413
public async Task Cannot_use_TimeSpan_outside_of_valid_range()
385414
{
386415
// Arrange
416+
SocialMediaAccount socialMediaAccount = _fakers.SocialMediaAccount.Generate();
417+
387418
using HttpClient httpClient = _testContext.Factory.CreateDefaultClient(_logHttpMessageHandler);
388419
ModelStateValidationClient apiClient = new(httpClient);
389420

390421
// Act
391-
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(new SocialMediaAccountPostRequestDocument
422+
SocialMediaAccountPostRequestDocument requestBody = new()
392423
{
393424
Data = new SocialMediaAccountDataInPostRequest
394425
{
395426
Attributes = new SocialMediaAccountAttributesInPostRequest
396427
{
397-
LastName = "",
428+
LastName = socialMediaAccount.LastName,
398429
NextRevalidation = "00:00:01",
399430
}
400431
}
401-
});
432+
};
433+
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(requestBody);
402434

403435
// Assert
404436
ErrorResponseDocument document = (await action.Should().ThrowExactlyAsync<ApiException<ErrorResponseDocument>>()).Which.Result;
@@ -415,21 +447,24 @@ public async Task Cannot_use_TimeSpan_outside_of_valid_range()
415447
public async Task Cannot_use_invalid_TimeOnly()
416448
{
417449
// Arrange
450+
SocialMediaAccount socialMediaAccount = _fakers.SocialMediaAccount.Generate();
451+
418452
using HttpClient httpClient = _testContext.Factory.CreateDefaultClient(_logHttpMessageHandler);
419453
ModelStateValidationClient apiClient = new(httpClient);
420454

421455
// Act
422-
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(new SocialMediaAccountPostRequestDocument
456+
SocialMediaAccountPostRequestDocument requestBody = new()
423457
{
424458
Data = new SocialMediaAccountDataInPostRequest
425459
{
426460
Attributes = new SocialMediaAccountAttributesInPostRequest
427461
{
428-
LastName = "",
462+
LastName = socialMediaAccount.LastName,
429463
ValidatedAtTime = TimeSpan.FromSeconds(-1),
430464
}
431465
}
432-
});
466+
};
467+
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(requestBody);
433468

434469
// Assert
435470
ErrorResponseDocument document = (await action.Should().ThrowExactlyAsync<ApiException<ErrorResponseDocument>>()).Which.Result;
@@ -452,7 +487,7 @@ public async Task Can_create_resource_with_valid_properties()
452487
ModelStateValidationClient apiClient = new(httpClient);
453488

454489
// Act
455-
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(new SocialMediaAccountPostRequestDocument
490+
SocialMediaAccountPostRequestDocument requestBody = new()
456491
{
457492
Data = new SocialMediaAccountDataInPostRequest
458493
{
@@ -476,7 +511,8 @@ public async Task Can_create_resource_with_valid_properties()
476511
ValidatedAtTime = socialMediaAccount.ValidatedAtTime!.Value.ToTimeSpan()
477512
}
478513
}
479-
});
514+
};
515+
Func<Task<SocialMediaAccountPrimaryResponseDocument>> action = () => apiClient.PostSocialMediaAccountAsync(requestBody);
480516

481517
// Assert
482518
await action.Should().NotThrowAsync();

0 commit comments

Comments
 (0)