File tree Expand file tree Collapse file tree 5 files changed +59
-44
lines changed
test/HealthChecks.OpenIdConnectServer.Tests Expand file tree Collapse file tree 5 files changed +59
-44
lines changed Original file line number Diff line number Diff line change 2929
3030jobs :
3131 build :
32- runs-on : ubuntu-latest
33- services :
34- idsvr :
35- image : nakah/identityserver4
36- ports :
37- - 8888:80
38- steps :
39- - uses : actions/checkout@v3
40- - name : Setup .NET
41- uses : actions/setup-dotnet@v4
42- with :
43- dotnet-version : |
44- 8.0.x
45- 9.0.x
46- - name : Restore
47- run : |
48- dotnet restore ./src/HealthChecks.OpenIdConnectServer/HealthChecks.OpenIdConnectServer.csproj &&
49- dotnet restore ./test/HealthChecks.OpenIdConnectServer.Tests/HealthChecks.OpenIdConnectServer.Tests.csproj
50- - name : Check formatting
51- run : |
52- dotnet format --no-restore --verify-no-changes --severity warn ./src/HealthChecks.OpenIdConnectServer/HealthChecks.OpenIdConnectServer.csproj || (echo "Run 'dotnet format' to fix issues" && exit 1) &&
53- dotnet format --no-restore --verify-no-changes --severity warn ./test/HealthChecks.OpenIdConnectServer.Tests/HealthChecks.OpenIdConnectServer.Tests.csproj || (echo "Run 'dotnet format' to fix issues" && exit 1)
54- - name : Build
55- run : |
56- dotnet build --no-restore ./src/HealthChecks.OpenIdConnectServer/HealthChecks.OpenIdConnectServer.csproj &&
57- dotnet build --no-restore ./test/HealthChecks.OpenIdConnectServer.Tests/HealthChecks.OpenIdConnectServer.Tests.csproj
58- - name : Test
59- run : >
60- dotnet test
61- ./test/HealthChecks.OpenIdConnectServer.Tests/HealthChecks.OpenIdConnectServer.Tests.csproj
62- --no-restore
63- --no-build
64- --collect "XPlat Code Coverage"
65- --results-directory .coverage
66- --
67- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=opencover
68- - name : Upload Coverage
69- uses : codecov/codecov-action@v5
70- with :
71- flags : OpenIdConnectServer
72- directory : .coverage
32+ uses : ./.github/workflows/reusable_ci_workflow.yml
33+ with :
34+ PROJECT_PATH : ./src/HealthChecks.OpenIdConnectServer/HealthChecks.OpenIdConnectServer.csproj
35+ TEST_PROJECT_PATH : ./test/HealthChecks.OpenIdConnectServer.Tests/HealthChecks.OpenIdConnectServer.Tests.csproj
36+ CODECOV_FLAGS : OpenIdConnectServer
Original file line number Diff line number Diff line change 105105 <PackageVersion Include =" Testcontainers" Version =" $(TestcontainersVersion)" />
106106 <PackageVersion Include =" Testcontainers.ClickHouse" Version =" $(TestcontainersVersion)" />
107107 <PackageVersion Include =" Testcontainers.Kafka" Version =" $(TestcontainersVersion)" />
108+ <PackageVersion Include =" Testcontainers.Keycloak" Version =" $(TestcontainersVersion)" />
108109 <PackageVersion Include =" Testcontainers.Milvus" Version =" $(TestcontainersVersion)" />
109110 <PackageVersion Include =" Testcontainers.PostgreSql" Version =" $(TestcontainersVersion)" />
110111 <PackageVersion Include =" TestContainers.MongoDb" Version =" $(TestcontainersVersion)" />
119120 <ItemGroup Condition =" '$(IsPackable)' == 'true'" >
120121 <PackageVersion Include =" Microsoft.SourceLink.GitHub" Version =" 8.0.0" />
121122 </ItemGroup >
122- </Project >
123+ </Project >
Original file line number Diff line number Diff line change 22
33namespace HealthChecks . OpenIdConnectServer . Tests . Functional ;
44
5- public class oidc_server_healthcheck_should
5+ public class oidc_server_healthcheck_should ( KeycloakContainerFixture keycloakFixture ) : IClassFixture < KeycloakContainerFixture >
66{
77 [ Fact ]
88 public async Task be_unhealthy_if_oidc_server_is_unavailable ( )
@@ -32,12 +32,14 @@ public async Task be_unhealthy_if_oidc_server_is_unavailable()
3232 [ Fact ]
3333 public async Task be_healthy_if_oidc_server_is_available ( )
3434 {
35+ string baseAddress = keycloakFixture . GetBaseAddress ( ) ;
36+
3537 var webHostBuilder = new WebHostBuilder ( )
3638 . ConfigureServices ( services =>
3739 {
3840 services
3941 . AddHealthChecks ( )
40- . AddOpenIdConnectServer ( new Uri ( "http://localhost:8888" ) , tags : [ "oidcserver" ] ) ;
42+ . AddOpenIdConnectServer ( new Uri ( baseAddress ) , tags : [ "oidcserver" ] ) ;
4143 } )
4244 . Configure ( app =>
4345 {
Original file line number Diff line number Diff line change 44 <ProjectReference Include =" ..\..\src\HealthChecks.OpenIdConnectServer\HealthChecks.OpenIdConnectServer.csproj" />
55 </ItemGroup >
66
7+ <ItemGroup >
8+ <PackageReference Include =" Testcontainers.Keycloak" />
9+ </ItemGroup >
10+
711</Project >
Original file line number Diff line number Diff line change 1+ using Testcontainers . Keycloak ;
2+
3+ namespace HealthChecks . OpenIdConnectServer . Tests ;
4+
5+ public class KeycloakContainerFixture : IAsyncLifetime
6+ {
7+ private const string Registry = "quay.io" ;
8+
9+ private const string Image = "keycloak/keycloak" ;
10+
11+ private const string Tag = "26.3.2" ;
12+
13+ public KeycloakContainer ? Container { get ; private set ; }
14+
15+ public string GetBaseAddress ( )
16+ {
17+ if ( Container is null )
18+ {
19+ throw new InvalidOperationException ( "The test container was not initialized." ) ;
20+ }
21+
22+ var uriBuilder = new UriBuilder ( Container . GetBaseAddress ( ) )
23+ {
24+ Path = "/realms/master/"
25+ } ;
26+
27+ return uriBuilder . ToString ( ) ;
28+ }
29+
30+ public async Task InitializeAsync ( ) => Container = await CreateContainerAsync ( ) ;
31+
32+ public Task DisposeAsync ( ) => Container ? . DisposeAsync ( ) . AsTask ( ) ?? Task . CompletedTask ;
33+
34+ private static async Task < KeycloakContainer > CreateContainerAsync ( )
35+ {
36+ var container = new KeycloakBuilder ( )
37+ . WithImage ( $ "{ Registry } /{ Image } :{ Tag } ")
38+ . Build ( ) ;
39+
40+ await container . StartAsync ( ) ;
41+
42+ return container ;
43+ }
44+ }
You can’t perform that action at this time.
0 commit comments