Skip to content

Commit 715c44b

Browse files
committed
upload image test
1 parent 9e344d6 commit 715c44b

File tree

12 files changed

+294
-11
lines changed

12 files changed

+294
-11
lines changed

src/QAToolKit.Source.Swagger.Test/Fixtures/PetApi/Delete/DeletePetProperties.cs renamed to src/QAToolKit.Source.Swagger.Test/Fixtures/PetApi/Delete/DeletePetParameters.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
using QAToolKit.Core.Models;
2-
using QAToolKit.Source.Swagger.Test.Fixtures.PetApi.Get.Helpers;
32
using System.Collections.Generic;
43

54
namespace QAToolKit.Source.Swagger.Test.Fixtures.PetApi.Post
65
{
7-
public static class DeletePetProperties
6+
public static class DeletePetParameters
87
{
98
public static List<Parameter> Get(bool exampleValues)
109
{

src/QAToolKit.Source.Swagger.Test/Fixtures/PetApi/Delete/DeletePetResponse.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using QAToolKit.Core.Models;
2-
using QAToolKit.Source.Swagger.Test.Fixtures.PetApi.Get.Helpers;
32
using System.Collections.Generic;
43

54
namespace QAToolKit.Source.Swagger.Test.Fixtures.PetApi.Post
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using QAToolKit.Core.Models;
2+
using System.Net;
3+
4+
namespace QAToolKit.Source.Swagger.Test.Fixtures.PetApi.Post.Helpers
5+
{
6+
public static class ApiResponse200
7+
{
8+
public static Response Get()
9+
{
10+
return new Response()
11+
{
12+
StatusCode = HttpStatusCode.OK,
13+
Type = ResponseType.Object,
14+
Properties = ApiResponseObject.GetProperties()
15+
};
16+
}
17+
}
18+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
using QAToolKit.Core.Models;
2+
using System.Collections.Generic;
3+
4+
namespace QAToolKit.Source.Swagger.Test.Fixtures.PetApi.Post.Helpers
5+
{
6+
public class ApiResponseObject
7+
{
8+
public static List<Property> GetProperties()
9+
{
10+
return new List<Property>()
11+
{
12+
new Property()
13+
{
14+
Name = "code",
15+
Description = null,
16+
Format = "int32",
17+
Required = false,
18+
Properties = null,
19+
Type = "integer",
20+
Value = null
21+
},
22+
new Property()
23+
{
24+
Name = "type",
25+
Description = null,
26+
Format = null,
27+
Required = false,
28+
Properties = null,
29+
Type = "string",
30+
Value = null
31+
},
32+
new Property()
33+
{
34+
Name = "message",
35+
Description = null,
36+
Format = null,
37+
Required = false,
38+
Properties = null,
39+
Type = "string",
40+
Value = null
41+
}
42+
};
43+
}
44+
}
45+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using QAToolKit.Core.Models;
2+
using System.Collections.Generic;
3+
4+
namespace QAToolKit.Source.Swagger.Test.Fixtures.PetApi.Post
5+
{
6+
public static class UploadPetImageBody
7+
{
8+
public static List<RequestBody> Get()
9+
{
10+
return new List<RequestBody>()
11+
{
12+
new RequestBody() {
13+
ContentType = ContentType.ToEnum(ContentType.OctetStream),
14+
Name = null,
15+
Required = false,
16+
Properties = null
17+
}
18+
};
19+
}
20+
}
21+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
using QAToolKit.Core.Models;
2+
using System.Collections.Generic;
3+
4+
namespace QAToolKit.Source.Swagger.Test.Fixtures.PetApi.Post
5+
{
6+
public static class UploadPetImageParameters
7+
{
8+
public static List<Parameter> Get(bool exampleValues)
9+
{
10+
if (exampleValues)
11+
{
12+
return new List<Parameter>()
13+
{
14+
new Parameter() {
15+
Name = "petId",
16+
Location = Location.Path,
17+
Nullable = false,
18+
Type = "integer",
19+
Required = true,
20+
Value = null
21+
},
22+
new Parameter() {
23+
Name = "additionalMetadata",
24+
Location = Location.Query,
25+
Nullable = false,
26+
Type = "string",
27+
Required = false,
28+
Value = null
29+
}
30+
};
31+
}
32+
else
33+
{
34+
return new List<Parameter>()
35+
{
36+
new Parameter() {
37+
Name = "petId",
38+
Location = Location.Path,
39+
Nullable = false,
40+
Type = "integer",
41+
Required = true,
42+
Value = null
43+
},
44+
new Parameter() {
45+
Name = "additionalMetadata",
46+
Location = Location.Query,
47+
Nullable = false,
48+
Type = "string",
49+
Required = false,
50+
Value = null
51+
}
52+
};
53+
}
54+
}
55+
}
56+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
using QAToolKit.Core.Models;
2+
using QAToolKit.Source.Swagger.Test.Fixtures.PetApi.Post.Helpers;
3+
using System.Collections.Generic;
4+
5+
namespace QAToolKit.Source.Swagger.Test.Fixtures.PetApi.Post
6+
{
7+
public static class UploadPetImageResponse
8+
{
9+
public static List<Response> Get()
10+
{
11+
return new List<Response>()
12+
{
13+
ApiResponse200.Get()
14+
};
15+
}
16+
}
17+
}

src/QAToolKit.Source.Swagger.Test/SwaggerTests/PetApi/Delete/SwaggerProcessorDeletePetTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public async Task DeletePetWithoutExampleValuesTest_Successfull()
5252
Assert.Equal("deletePet", requests.FirstOrDefault().OperationId);
5353
Assert.Equal(2, requests.FirstOrDefault().Parameters.Count);
5454

55-
var expectedPetDeleteResponse = DeletePetProperties.Get(false).ToExpectedObject();
55+
var expectedPetDeleteResponse = DeletePetParameters.Get(false).ToExpectedObject();
5656
expectedPetDeleteResponse.ShouldEqual(requests.FirstOrDefault().Parameters);
5757

5858
Assert.Equal("/pet/{petId}", requests.FirstOrDefault().Path);
@@ -97,7 +97,7 @@ public async Task DeletePetWithExampleValuesTest_Successfull()
9797
Assert.Equal("deletePet", requests.FirstOrDefault().OperationId);
9898
Assert.Equal(2, requests.FirstOrDefault().Parameters.Count);
9999

100-
var expectedPetDeleteResponse = DeletePetProperties.Get(true).ToExpectedObject();
100+
var expectedPetDeleteResponse = DeletePetParameters.Get(true).ToExpectedObject();
101101
expectedPetDeleteResponse.ShouldEqual(requests.FirstOrDefault().Parameters);
102102

103103
Assert.Equal("/pet/{petId}", requests.FirstOrDefault().Path);

src/QAToolKit.Source.Swagger.Test/SwaggerTests/PetApi/Post/SwaggerProcessorAddNewPetTests.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ public async Task AddNewPetWithoutExampleValuesTest_Successfull()
5656
Assert.Equal(2, requests.FirstOrDefault().Responses.Count);
5757

5858
var expectedPetsBody = AddNewPetBody.Get(false).ToExpectedObject();
59-
expectedPetsBody.ShouldEqual(requests.FirstOrDefault().RequestBodies);
59+
expectedPetsBody.ShouldEqual(requests.FirstOrDefault().RequestBodies
60+
.Where(c => c.ContentType == ContentType.Enumeration.Json).ToList());
6061

6162
var expectedPetsResponse = AddNewPetResponse.Get(false).ToExpectedObject();
6263
expectedPetsResponse.ShouldEqual(requests.FirstOrDefault().Responses);
@@ -101,7 +102,8 @@ public async Task AddNewPetWithExampleValuesTest_Successfull()
101102
Assert.Equal(2, requests.FirstOrDefault().Responses.Count);
102103

103104
var expectedPetsBody = AddNewPetBody.Get(true).ToExpectedObject();
104-
expectedPetsBody.ShouldEqual(requests.FirstOrDefault().RequestBodies);
105+
expectedPetsBody.ShouldEqual(requests.FirstOrDefault().RequestBodies
106+
.Where(c => c.ContentType == ContentType.Enumeration.Json).ToList());
105107

106108
var expectedPetsResponse = AddNewPetResponse.Get(true).ToExpectedObject();
107109
expectedPetsResponse.ShouldEqual(requests.FirstOrDefault().Responses);
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
using ExpectedObjects;
2+
using Microsoft.Extensions.Logging;
3+
using Newtonsoft.Json;
4+
using QAToolKit.Core.Models;
5+
using QAToolKit.Source.Swagger.Test.Fixtures.PetApi.Post;
6+
using System;
7+
using System.Collections.Generic;
8+
using System.IO;
9+
using System.Linq;
10+
using System.Net.Http;
11+
using System.Threading.Tasks;
12+
using Xunit;
13+
using Xunit.Abstractions;
14+
15+
namespace QAToolKit.Source.Swagger.Test.SwaggerTests.PetApi.Post
16+
{
17+
public class SwaggerProcessorUploadPetImageTests
18+
{
19+
private readonly ILogger<SwaggerProcessorUploadPetImageTests> _logger;
20+
21+
public SwaggerProcessorUploadPetImageTests(ITestOutputHelper testOutputHelper)
22+
{
23+
var loggerFactory = new LoggerFactory();
24+
loggerFactory.AddProvider(new XunitLoggerProvider(testOutputHelper));
25+
_logger = loggerFactory.CreateLogger<SwaggerProcessorUploadPetImageTests>();
26+
}
27+
28+
[Fact]
29+
public async Task UploadPetImageWithoutExampleValuesTest_Successfull()
30+
{
31+
var fileSource = new SwaggerFileSource(options =>
32+
{
33+
options.AddBaseUrl(new Uri("https://petstore3.swagger.io/"));
34+
options.AddRequestFilters(new RequestFilter()
35+
{
36+
EndpointNameWhitelist = new string[] { "uploadFile" }
37+
});
38+
});
39+
40+
var requests = await fileSource.Load(new List<FileInfo>() {
41+
new FileInfo("Assets/swagger-pets-test.json")
42+
});
43+
44+
_logger.LogInformation(JsonConvert.SerializeObject(requests, Formatting.Indented));
45+
46+
Assert.NotNull(requests);
47+
Assert.Equal(1, requests.Count);
48+
49+
Assert.Empty(requests.FirstOrDefault().AuthenticationTypes);
50+
Assert.Equal("https://petstore3.swagger.io/api/v3", requests.FirstOrDefault().BasePath);
51+
Assert.Equal("", requests.FirstOrDefault().Description);
52+
Assert.Equal(HttpMethod.Post, requests.FirstOrDefault().Method);
53+
Assert.Equal("uploadFile", requests.FirstOrDefault().OperationId);
54+
Assert.Equal("/pet/{petId}/uploadImage", requests.FirstOrDefault().Path);
55+
Assert.Single(requests.FirstOrDefault().Responses);
56+
Assert.Equal(2, requests.FirstOrDefault().Parameters.Count);
57+
58+
var expectedUploadPetImageParameters = UploadPetImageParameters.Get(true).ToExpectedObject();
59+
expectedUploadPetImageParameters.ShouldEqual(requests.FirstOrDefault().Parameters);
60+
61+
var expectedUploadPetImageBody = UploadPetImageBody.Get().ToExpectedObject();
62+
expectedUploadPetImageBody.ShouldEqual(requests.FirstOrDefault().RequestBodies
63+
.Where(c => c.ContentType == ContentType.Enumeration.OctetStream).ToList());
64+
65+
var expectedUploadPetImageResponse = UploadPetImageResponse.Get().ToExpectedObject();
66+
expectedUploadPetImageResponse.ShouldEqual(requests.FirstOrDefault().Responses);
67+
68+
Assert.Equal("uploads an image", requests.FirstOrDefault().Summary);
69+
Assert.Collection(requests.FirstOrDefault().Tags, item =>
70+
{
71+
item = "pet";
72+
});
73+
Assert.Empty(requests.FirstOrDefault().TestTypes);
74+
}
75+
76+
[Fact]
77+
public async Task UploadPetImageWithExampleValuesTest_Successfull()
78+
{
79+
var fileSource = new SwaggerFileSource(options =>
80+
{
81+
options.AddBaseUrl(new Uri("https://petstore3.swagger.io/"));
82+
options.AddRequestFilters(new RequestFilter()
83+
{
84+
EndpointNameWhitelist = new string[] { "uploadFile" }
85+
});
86+
options.UseSwaggerExampleValues = true;
87+
});
88+
89+
var requests = await fileSource.Load(new List<FileInfo>() {
90+
new FileInfo("Assets/swagger-pets-test.json")
91+
});
92+
93+
_logger.LogInformation(JsonConvert.SerializeObject(requests, Formatting.Indented));
94+
95+
Assert.NotNull(requests);
96+
Assert.Equal(1, requests.Count);
97+
98+
Assert.Empty(requests.FirstOrDefault().AuthenticationTypes);
99+
Assert.Equal("https://petstore3.swagger.io/api/v3", requests.FirstOrDefault().BasePath);
100+
Assert.Equal("", requests.FirstOrDefault().Description);
101+
Assert.Equal(HttpMethod.Post, requests.FirstOrDefault().Method);
102+
Assert.Equal("uploadFile", requests.FirstOrDefault().OperationId);
103+
Assert.Equal("/pet/{petId}/uploadImage", requests.FirstOrDefault().Path);
104+
Assert.Single(requests.FirstOrDefault().Responses);
105+
Assert.Equal(2, requests.FirstOrDefault().Parameters.Count);
106+
107+
var expectedUploadPetImageParameters = UploadPetImageParameters.Get(true).ToExpectedObject();
108+
expectedUploadPetImageParameters.ShouldEqual(requests.FirstOrDefault().Parameters);
109+
110+
var expectedUploadPetImageBody = UploadPetImageBody.Get().ToExpectedObject();
111+
expectedUploadPetImageBody.ShouldEqual(requests.FirstOrDefault().RequestBodies
112+
.Where(c => c.ContentType == ContentType.Enumeration.OctetStream).ToList());
113+
114+
var expectedUploadPetImageResponse = UploadPetImageResponse.Get().ToExpectedObject();
115+
expectedUploadPetImageResponse.ShouldEqual(requests.FirstOrDefault().Responses);
116+
117+
Assert.Equal("uploads an image", requests.FirstOrDefault().Summary);
118+
Assert.Collection(requests.FirstOrDefault().Tags, item =>
119+
{
120+
item = "pet";
121+
});
122+
Assert.Empty(requests.FirstOrDefault().TestTypes);
123+
}
124+
}
125+
}

0 commit comments

Comments
 (0)