3
3
#if NET6_0_OR_GREATER
4
4
using System ;
5
5
using System . IO ;
6
+ using System . Linq ;
6
7
using System . Net . Http ;
7
8
using System . Text ;
8
9
using System . Threading . Tasks ;
9
10
using FluentAssertions ;
11
+ using FluentAssertions . Execution ;
10
12
using Greet ;
11
13
using Grpc . Net . Client ;
12
14
using WireMock . Constants ;
@@ -18,28 +20,118 @@ namespace WireMock.Net.Tests.Testcontainers;
18
20
public partial class TestcontainersTests
19
21
{
20
22
[ Fact ]
21
- public async Task WireMockContainer_Build_TestGrpc_ProtoDefinitionFromJson_UsingGrpcGeneratedClient ( )
23
+ public async Task WireMockContainer_Build_Grpc_TestPortsAndUrls1 ( )
22
24
{
23
- var wireMockContainer = await Given_WireMockContainerIsStartedForHttpAndGrpc ( ) ;
25
+ // Act
26
+ var adminUsername = $ "username_{ Guid . NewGuid ( ) } ";
27
+ var adminPassword = $ "password_{ Guid . NewGuid ( ) } ";
28
+ var wireMockContainer = new WireMockContainerBuilder ( )
29
+ . WithAutoRemove ( true )
30
+ . WithCleanUp ( true )
31
+ . WithAdminUserNameAndPassword ( adminUsername , adminPassword )
32
+ . WithCommand ( "--UseHttp2" )
33
+ . WithCommand ( "--Urls" , "http://*:80 grpc://*:9090" )
34
+ . WithPortBinding ( 9090 , true )
35
+ . Build ( ) ;
24
36
25
- await Given_ProtoBufMappingIsAddedViaAdminInterfaceAsync ( wireMockContainer ) ;
37
+ try
38
+ {
39
+ await wireMockContainer . StartAsync ( ) . ConfigureAwait ( false ) ;
26
40
27
- var adminClient = wireMockContainer . CreateWireMockAdminClient ( ) ;
41
+ // Assert
42
+ using ( new AssertionScope ( ) )
43
+ {
44
+ var logs = await wireMockContainer . GetLogsAsync ( DateTime . MinValue ) ;
45
+ logs . Should ( ) . NotBeNull ( ) ;
28
46
29
- var mappingModels = await adminClient . GetMappingsAsync ( ) ;
30
- mappingModels . Should ( ) . NotBeNull ( ) . And . HaveCount ( 1 ) ;
47
+ var url = wireMockContainer . GetPublicUrl ( ) ;
48
+ url . Should ( ) . NotBeNullOrWhiteSpace ( ) ;
31
49
32
- try
50
+ var urls = wireMockContainer . GetPublicUrls ( ) ;
51
+ urls . Should ( ) . HaveCount ( 2 ) ;
52
+
53
+ var httpPort = wireMockContainer . GetMappedPublicPort ( 80 ) ;
54
+ httpPort . Should ( ) . BeGreaterThan ( 0 ) ;
55
+
56
+ var httpUrl = wireMockContainer . GetMappedPublicUrl ( 80 ) ;
57
+ httpUrl . Should ( ) . StartWith ( "http://" ) ;
58
+
59
+ var grpcPort = wireMockContainer . GetMappedPublicPort ( 9090 ) ;
60
+ grpcPort . Should ( ) . BeGreaterThan ( 0 ) ;
61
+
62
+ var grpcUrl = wireMockContainer . GetMappedPublicUrl ( 80 ) ;
63
+ grpcUrl . Should ( ) . StartWith ( "http://" ) ;
64
+
65
+ var adminClient = wireMockContainer . CreateWireMockAdminClient ( ) ;
66
+
67
+ var settings = await adminClient . GetSettingsAsync ( ) ;
68
+ settings . Should ( ) . NotBeNull ( ) ;
69
+ }
70
+ }
71
+ finally
33
72
{
34
- var x = await When_GrpcClient_Calls_SayHelloAsync ( wireMockContainer ) ;
73
+ await wireMockContainer . StopAsync ( ) ;
35
74
}
36
- catch ( Exception e )
75
+ }
76
+
77
+ [ Fact ]
78
+ public async Task WireMockContainer_Build_Grpc_TestPortsAndUrls2 ( )
79
+ {
80
+ // Act
81
+ var adminUsername = $ "username_{ Guid . NewGuid ( ) } ";
82
+ var adminPassword = $ "password_{ Guid . NewGuid ( ) } ";
83
+ var wireMockContainer = new WireMockContainerBuilder ( )
84
+ . WithAutoRemove ( true )
85
+ . WithCleanUp ( true )
86
+ . WithAdminUserNameAndPassword ( adminUsername , adminPassword )
87
+ . AddUrl ( "http://*:8080" )
88
+ . AddUrl ( "grpc://*:9090" )
89
+ . AddUrl ( "grpc://*:9091" )
90
+ . Build ( ) ;
91
+
92
+ try
37
93
{
38
- var logs = await wireMockContainer . GetLogsAsync ( DateTime . MinValue ) ;
94
+ await wireMockContainer . StartAsync ( ) . ConfigureAwait ( false ) ;
95
+
96
+ // Assert
97
+ using ( new AssertionScope ( ) )
98
+ {
99
+ var logs = await wireMockContainer . GetLogsAsync ( DateTime . MinValue ) ;
100
+ logs . Should ( ) . NotBeNull ( ) ;
101
+
102
+ var url = wireMockContainer . GetPublicUrl ( ) ;
103
+ url . Should ( ) . NotBeNullOrWhiteSpace ( ) ;
104
+
105
+ var urls = wireMockContainer . GetPublicUrls ( ) ;
106
+ urls . Should ( ) . HaveCount ( 4 ) ;
107
+
108
+ foreach ( var internalPort in new [ ] { 80 , 8080 , 9090 , 9091 } )
109
+ {
110
+ var publicPort = wireMockContainer . GetMappedPublicPort ( internalPort ) ;
111
+ publicPort . Should ( ) . BeGreaterThan ( 0 ) ;
112
+
113
+ var publicUrl = wireMockContainer . GetMappedPublicUrl ( internalPort ) ;
114
+ publicUrl . Should ( ) . StartWith ( "http://" ) ;
115
+ }
39
116
40
- int tttt = 9 ;
41
- throw ;
117
+ var adminClient = wireMockContainer . CreateWireMockAdminClient ( ) ;
118
+
119
+ var settings = await adminClient . GetSettingsAsync ( ) ;
120
+ settings . Should ( ) . NotBeNull ( ) ;
121
+ }
122
+ }
123
+ finally
124
+ {
125
+ await wireMockContainer . StopAsync ( ) ;
42
126
}
127
+ }
128
+
129
+ [ Fact ]
130
+ public async Task WireMockContainer_Build_Grpc_ProtoDefinitionFromJson_UsingGrpcGeneratedClient ( )
131
+ {
132
+ var wireMockContainer = await Given_WireMockContainerIsStartedForHttpAndGrpc ( ) ;
133
+
134
+ await Given_ProtoBufMappingIsAddedViaAdminInterfaceAsync ( wireMockContainer ) ;
43
135
44
136
var reply = await When_GrpcClient_Calls_SayHelloAsync ( wireMockContainer ) ;
45
137
0 commit comments