1
1
// Licensed to the .NET Foundation under one or more agreements.
2
2
// The .NET Foundation licenses this file to you under the MIT license.
3
3
4
+ using System . Collections . Generic ;
4
5
using System . Net ;
5
6
using System . Net . Http ;
6
7
using System . Threading . Tasks ;
8
+ using Microsoft . AspNetCore . Hosting ;
9
+ using Microsoft . AspNetCore . Mvc . Testing ;
10
+ using Microsoft . AspNetCore . Testing ;
11
+ using Microsoft . Extensions . Configuration ;
12
+ using Microsoft . Extensions . Hosting ;
7
13
using Xunit ;
8
14
9
15
namespace Microsoft . AspNetCore . Mvc . FunctionalTests
10
16
{
11
17
public class SimpleWithWebApplicationBuilderTests : IClassFixture < MvcTestFixture < SimpleWebSiteWithWebApplicationBuilder . FakeStartup > >
12
18
{
19
+ private readonly MvcTestFixture < SimpleWebSiteWithWebApplicationBuilder . FakeStartup > _fixture ;
20
+
13
21
public SimpleWithWebApplicationBuilderTests ( MvcTestFixture < SimpleWebSiteWithWebApplicationBuilder . FakeStartup > fixture )
14
22
{
15
- Client = fixture . CreateDefaultClient ( ) ;
23
+ _fixture = fixture ;
16
24
}
17
25
18
- public HttpClient Client { get ; }
19
-
20
26
[ Fact ]
21
27
public async Task HelloWorld ( )
22
28
{
23
29
// Arrange
24
30
var expected = "Hello World" ;
31
+ using var client = _fixture . CreateDefaultClient ( ) ;
25
32
26
33
// Act
27
- var content = await Client . GetStringAsync ( "http://localhost/" ) ;
34
+ var content = await client . GetStringAsync ( "http://localhost/" ) ;
28
35
29
36
// Assert
30
37
Assert . Equal ( expected , content ) ;
@@ -35,9 +42,10 @@ public async Task JsonResult_Works()
35
42
{
36
43
// Arrange
37
44
var expected = "{\" name\" :\" John\" ,\" age\" :42}" ;
45
+ using var client = _fixture . CreateDefaultClient ( ) ;
38
46
39
47
// Act
40
- var response = await Client . GetAsync ( "/json" ) ;
48
+ var response = await client . GetAsync ( "/json" ) ;
41
49
42
50
// Assert
43
51
await response . AssertStatusCodeAsync ( HttpStatusCode . OK ) ;
@@ -50,9 +58,10 @@ public async Task OkObjectResult_Works()
50
58
{
51
59
// Arrange
52
60
var expected = "{\" name\" :\" John\" ,\" age\" :42}" ;
61
+ using var client = _fixture . CreateDefaultClient ( ) ;
53
62
54
63
// Act
55
- var response = await Client . GetAsync ( "/ok-object" ) ;
64
+ var response = await client . GetAsync ( "/ok-object" ) ;
56
65
57
66
// Assert
58
67
await response . AssertStatusCodeAsync ( HttpStatusCode . OK ) ;
@@ -65,9 +74,10 @@ public async Task AcceptedObjectResult_Works()
65
74
{
66
75
// Arrange
67
76
var expected = "{\" name\" :\" John\" ,\" age\" :42}" ;
77
+ using var client = _fixture . CreateDefaultClient ( ) ;
68
78
69
79
// Act
70
- var response = await Client . GetAsync ( "/accepted-object" ) ;
80
+ var response = await client . GetAsync ( "/accepted-object" ) ;
71
81
72
82
// Assert
73
83
await response . AssertStatusCodeAsync ( HttpStatusCode . Accepted ) ;
@@ -79,8 +89,11 @@ public async Task AcceptedObjectResult_Works()
79
89
[ Fact ]
80
90
public async Task ActionReturningMoreThanOneResult_NotFound ( )
81
91
{
92
+ // Arrange
93
+ using var client = _fixture . CreateDefaultClient ( ) ;
94
+
82
95
// Act
83
- var response = await Client . GetAsync ( "/many-results?id=-1" ) ;
96
+ var response = await client . GetAsync ( "/many-results?id=-1" ) ;
84
97
85
98
// Assert
86
99
await response . AssertStatusCodeAsync ( HttpStatusCode . NotFound ) ;
@@ -89,23 +102,75 @@ public async Task ActionReturningMoreThanOneResult_NotFound()
89
102
[ Fact ]
90
103
public async Task ActionReturningMoreThanOneResult_Found ( )
91
104
{
105
+ // Arrange
106
+ using var client = _fixture . CreateDefaultClient ( ) ;
107
+
92
108
// Act
93
- var response = await Client . GetAsync ( "/many-results?id=7" ) ;
109
+ var response = await client . GetAsync ( "/many-results?id=7" ) ;
94
110
95
111
// Assert
96
112
await response . AssertStatusCodeAsync ( HttpStatusCode . MovedPermanently ) ;
97
113
Assert . Equal ( "/json" , response . Headers . Location . ToString ( ) ) ;
98
114
}
99
115
100
116
[ Fact ]
101
- public async Task ActionReturningProblemDetails_ConfiguresContentType ( )
117
+ public async Task DefaultEnvironment_Is_Development ( )
118
+ {
119
+ // Arrange
120
+ var expected = "Development" ;
121
+ using var client = new WebApplicationFactory < SimpleWebSiteWithWebApplicationBuilder . FakeStartup > ( ) . CreateClient ( ) ;
122
+
123
+ // Act
124
+ var content = await client . GetStringAsync ( "http://localhost/environment" ) ;
125
+
126
+ // Assert
127
+ Assert . Equal ( expected , content ) ;
128
+ }
129
+
130
+ [ Fact ]
131
+ public async Task Configuration_Can_Be_Overridden ( )
102
132
{
133
+ // Arrange
134
+ var fixture = _fixture . WithWebHostBuilder ( builder =>
135
+ {
136
+ builder . ConfigureAppConfiguration ( builder =>
137
+ {
138
+ var config = new [ ]
139
+ {
140
+ KeyValuePair . Create ( "Greeting" , "Bonjour tout le monde" ) ,
141
+ } ;
142
+
143
+ builder . AddInMemoryCollection ( config ) ;
144
+ } ) ;
145
+ } ) ;
146
+
147
+ var expected = "Bonjour tout le monde" ;
148
+ using var client = fixture . CreateDefaultClient ( ) ;
149
+
103
150
// Act
104
- var response = await Client . GetAsync ( "/problem ") ;
151
+ var content = await client . GetStringAsync ( "http://localhost/greeting ") ;
105
152
106
153
// Assert
107
- await response . AssertStatusCodeAsync ( HttpStatusCode . InternalServerError ) ;
108
- Assert . Equal ( "application/problem+json" , response . Content . Headers . ContentType . ToString ( ) ) ;
154
+ Assert . Equal ( expected , content ) ;
155
+ }
156
+
157
+ [ Fact ]
158
+ public async Task Environment_Can_Be_Overridden ( )
159
+ {
160
+ // Arrange
161
+ var fixture = _fixture . WithWebHostBuilder ( builder =>
162
+ {
163
+ builder . UseEnvironment ( Environments . Staging ) ;
164
+ } ) ;
165
+
166
+ var expected = "Staging" ;
167
+ using var client = fixture . CreateDefaultClient ( ) ;
168
+
169
+ // Act
170
+ var content = await client . GetStringAsync ( "http://localhost/environment" ) ;
171
+
172
+ // Assert
173
+ Assert . Equal ( expected , content ) ;
109
174
}
110
175
}
111
176
}
0 commit comments