Skip to content

Commit 3dcecdc

Browse files
committed
tests
1 parent 6ddd207 commit 3dcecdc

File tree

8 files changed

+1392
-8
lines changed

8 files changed

+1392
-8
lines changed

src/QAToolKit.Source.Swagger.Test/Assets/swagger-test.json

Lines changed: 1225 additions & 0 deletions
Large diffs are not rendered by default.

src/QAToolKit.Source.Swagger.Test/QAToolKit.Source.Swagger.Test.csproj

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
44
<TargetFramework>netcoreapp3.1</TargetFramework>
@@ -23,4 +23,10 @@
2323
<ProjectReference Include="..\QAToolKit.Source.Swagger\QAToolKit.Source.Swagger.csproj" />
2424
</ItemGroup>
2525

26+
<ItemGroup>
27+
<None Update="Assets\swagger-test.json">
28+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
29+
</None>
30+
</ItemGroup>
31+
2632
</Project>
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using Newtonsoft.Json;
2+
using QAToolKit.Core.Models;
3+
using System;
4+
using System.Collections.Generic;
5+
using System.IO;
6+
using Xunit;
7+
8+
namespace QAToolKit.Source.Swagger.Test
9+
{
10+
public class SwaggerFileSourceIntegrationTest
11+
{
12+
[Fact]
13+
public async void SwaggerFileSourceWithoutOptionsTest_Successfull()
14+
{
15+
var fileSource = new SwaggerFileSource(options =>
16+
{
17+
options.AddBaseUrl(new Uri("https://petstore3.swagger.io/"));
18+
});
19+
20+
var requests = await fileSource.Load(new List<FileInfo>() {
21+
new FileInfo("Assets/swagger-test.json")
22+
});
23+
24+
Assert.NotNull(requests);
25+
}
26+
}
27+
}
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
using QAToolKit.Core.Models;
2+
using System;
3+
using System.Collections.Generic;
4+
using System.Linq;
5+
using System.Text;
6+
using Xunit;
7+
8+
namespace QAToolKit.Source.Swagger.Test
9+
{
10+
public class SwaggerOptionsTest
11+
{
12+
[Fact]
13+
public void SwaggerBasicAuthTest_Successful()
14+
{
15+
var options = new SwaggerOptions();
16+
options.AddBasicAuthentication("user", "password");
17+
18+
Assert.Equal("user", options.UserName);
19+
Assert.Equal("password", options.Password);
20+
Assert.True(options.UseBasicAuth);
21+
}
22+
23+
[Fact]
24+
public void SwaggerAddReplacementValuesTest_Successful()
25+
{
26+
var options = new SwaggerOptions();
27+
options.AddReplacementValues(new ReplacementValue[] {
28+
new ReplacementValue() {
29+
Key = "userId",
30+
Value = "1"
31+
},
32+
new ReplacementValue() {
33+
Key = "roleId",
34+
Value = "100"
35+
}
36+
});
37+
38+
Assert.Equal(2, options.ReplacementValues.Count());
39+
Assert.Equal("userId", options.ReplacementValues[0].Key);
40+
Assert.Equal("1", options.ReplacementValues[0].Value);
41+
Assert.Equal("roleId", options.ReplacementValues[1].Key);
42+
Assert.Equal("100", options.ReplacementValues[1].Value);
43+
}
44+
45+
[Fact]
46+
public void SwaggerAuthenticationTypeRequestFiltersTest_Successful()
47+
{
48+
var options = new SwaggerOptions();
49+
options.AddRequestFilters(new RequestFilter()
50+
{
51+
AuthenticationTypes = new List<AuthenticationType>() { AuthenticationType.Administrator, AuthenticationType.Basic }
52+
});
53+
54+
Assert.NotNull(options.RequestFilter.AuthenticationTypes.FirstOrDefault(i => i == AuthenticationType.Administrator));
55+
Assert.Null(options.RequestFilter.AuthenticationTypes.FirstOrDefault(i => i == AuthenticationType.Customer));
56+
Assert.Null(options.RequestFilter.AuthenticationTypes.FirstOrDefault(i => i == AuthenticationType.ApiKey));
57+
Assert.NotNull(options.RequestFilter.AuthenticationTypes.FirstOrDefault(i => i == AuthenticationType.Basic));
58+
Assert.True(options.UseRequestFilter);
59+
}
60+
61+
[Fact]
62+
public void SwaggerEndpointNameWhitelistRequestFiltersTest_Successful()
63+
{
64+
var options = new SwaggerOptions();
65+
options.AddRequestFilters(new RequestFilter()
66+
{
67+
EndpointNameWhitelist = new[] { "GetUsers" }
68+
});
69+
70+
Assert.NotNull(options.RequestFilter.EndpointNameWhitelist.FirstOrDefault(i => i == "GetUsers"));
71+
Assert.True(options.UseRequestFilter);
72+
}
73+
74+
[Fact]
75+
public void SwaggerTestTypeRequestFiltersTest_Successful()
76+
{
77+
var options = new SwaggerOptions();
78+
options.AddRequestFilters(new RequestFilter()
79+
{
80+
TestTypes = new List<TestType>() { TestType.LoadTest }
81+
});
82+
83+
Assert.NotNull(options.RequestFilter.TestTypes.FirstOrDefault(i => i == TestType.LoadTest));
84+
Assert.Null(options.RequestFilter.TestTypes.FirstOrDefault(i => i == TestType.IntegrationTest));
85+
Assert.Null(options.RequestFilter.TestTypes.FirstOrDefault(i => i == TestType.SecurityTest));
86+
Assert.Null(options.RequestFilter.TestTypes.FirstOrDefault(i => i == TestType.SqlTest));
87+
Assert.True(options.UseRequestFilter);
88+
}
89+
90+
[Fact]
91+
public void SwaggerAddBaseUrlRequestFiltersTest_Successful()
92+
{
93+
var options = new SwaggerOptions();
94+
options.AddBaseUrl(new Uri("https://petstore3.swagger.io/"));
95+
96+
Assert.Equal("https://petstore3.swagger.io/", options.BaseUrl.ToString());
97+
}
98+
}
99+
}

src/QAToolKit.Source.Swagger.Test/SwaggerUrlSourceTests.cs renamed to src/QAToolKit.Source.Swagger.Test/SwaggerUrlSourceIntegrationTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
namespace QAToolKit.Source.Swagger.Test
77
{
8-
public class SwaggerUrlSourceTests
8+
public class SwaggerUrlSourceIntegrationTests
99
{
1010
[Fact]
1111
public async Task SwaggerUrlSourceWithoutOptionsV3Test_Successfull()

src/QAToolKit.Source.Swagger/SwaggerFileSource.cs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using Microsoft.OpenApi.Readers;
2+
using Microsoft.OpenApi.Writers;
23
using QAToolKit.Core.Interfaces;
34
using QAToolKit.Core.Models;
45
using System;
@@ -13,7 +14,7 @@ namespace QAToolKit.Source.Swagger
1314
/// </summary>
1415
public class SwaggerFileSource : ITestSource<IList<FileInfo>, IList<HttpTestRequest>>
1516
{
16-
private SwaggerOptions _swaggerOptions;
17+
private readonly SwaggerOptions _swaggerOptions;
1718

1819
/// <summary>
1920
/// New instance of swagger file source
@@ -39,15 +40,23 @@ public async Task<IList<HttpTestRequest>> Load(IList<FileInfo> source)
3940

4041
foreach (var filePath in source)
4142
{
42-
using (var fileStream = File.OpenRead(filePath.FullName))
43+
using (FileStream SourceStream = File.OpenRead(filePath.FullName))
4344
{
44-
var openApiDocument = new OpenApiStreamReader().Read(fileStream, out var diagnostic);
45+
var openApiDocument = new OpenApiStreamReader().Read(SourceStream, out var diagnostic);
4546

46-
restRequests.AddRange(processor.MapFromOpenApiDocument(null, openApiDocument, _swaggerOptions.ReplacementValues));
47+
var textWritter = new OpenApiJsonWriter(new StringWriter());
48+
openApiDocument.SerializeAsV3(textWritter);
49+
50+
restRequests.AddRange(processor.MapFromOpenApiDocument(_swaggerOptions.BaseUrl, openApiDocument, _swaggerOptions.ReplacementValues));
4751
}
4852
}
4953

5054
return restRequests;
5155
}
56+
57+
internal Task Load(FileInfo fileInfo)
58+
{
59+
throw new NotImplementedException();
60+
}
5261
}
5362
}

src/QAToolKit.Source.Swagger/SwaggerOptions.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
using QAToolKit.Core.Models;
2+
using System;
3+
using System.Runtime.CompilerServices;
24

5+
[assembly: InternalsVisibleTo("QAToolKit.Source.Swagger.Test")]
36
namespace QAToolKit.Source.Swagger
47
{
58
/// <summary>
@@ -31,6 +34,10 @@ public class SwaggerOptions
3134
/// Swagger basic authentication password
3235
/// </summary>
3336
internal string Password { get; private set; }
37+
/// <summary>
38+
/// Set custom base API URL
39+
/// </summary>
40+
internal Uri BaseUrl { get; private set; }
3441

3542
/// <summary>
3643
/// Add basic authentication
@@ -68,5 +75,16 @@ public SwaggerOptions AddReplacementValues(ReplacementValue[] replacementValues)
6875
ReplacementValues = replacementValues;
6976
return this;
7077
}
78+
79+
/// <summary>
80+
/// Add base url
81+
/// </summary>
82+
/// <param name="baseUrl"></param>
83+
/// <returns></returns>
84+
public SwaggerOptions AddBaseUrl(Uri baseUrl)
85+
{
86+
BaseUrl = baseUrl;
87+
return this;
88+
}
7189
}
7290
}

src/QAToolKit.Source.Swagger/SwaggerUrlSource.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ namespace QAToolKit.Source.Swagger
1818
/// </summary>
1919
public class SwaggerUrlSource : ITestSource<Uri[], IList<HttpTestRequest>>
2020
{
21-
private SwaggerOptions _swaggerOptions;
21+
private readonly SwaggerOptions _swaggerOptions;
2222

2323
/// <summary>
2424
/// Swagger Url source constructor
@@ -76,7 +76,7 @@ public async Task<IList<HttpTestRequest>> Load(Uri[] source)
7676
return restRequests;
7777
}
7878

79-
private List<HttpTestRequest> FilterRequests(IList<HttpTestRequest> requests, RequestFilter requestFilter)
79+
private IList<HttpTestRequest> FilterRequests(IList<HttpTestRequest> requests, RequestFilter requestFilter)
8080
{
8181
var requestsLocal = new List<HttpTestRequest>();
8282

0 commit comments

Comments
 (0)