@@ -110,6 +110,10 @@ public async Task ResponseStart_CallsFeatureIfSet()
110
110
mock . Setup ( o => o . StartAsync ( It . IsAny < CancellationToken > ( ) ) ) . Returns ( Task . CompletedTask ) ;
111
111
features . Set ( mock . Object ) ;
112
112
113
+ var responseMock = new Mock < IHttpResponseFeature > ( ) ;
114
+ responseMock . Setup ( o => o . HasStarted ) . Returns ( false ) ;
115
+ features . Set ( responseMock . Object ) ;
116
+
113
117
var context = new DefaultHttpContext ( features ) ;
114
118
await context . Response . StartAsync ( ) ;
115
119
@@ -126,12 +130,35 @@ public async Task ResponseStart_CallsFeatureIfSetWithProvidedCancellationToken()
126
130
mock . Setup ( o => o . StartAsync ( It . Is < CancellationToken > ( ( localCt ) => localCt . Equals ( ct ) ) ) ) . Returns ( Task . CompletedTask ) ;
127
131
features . Set ( mock . Object ) ;
128
132
133
+ var responseMock = new Mock < IHttpResponseFeature > ( ) ;
134
+ responseMock . Setup ( o => o . HasStarted ) . Returns ( false ) ;
135
+ features . Set ( responseMock . Object ) ;
136
+
129
137
var context = new DefaultHttpContext ( features ) ;
130
138
await context . Response . StartAsync ( ct ) ;
131
139
132
140
mock . Verify ( m => m . StartAsync ( default ) , Times . Once ( ) ) ;
133
141
}
134
142
143
+ [ Fact ]
144
+ public async Task ResponseStart_DoesNotCallStartIfHasStartedIsTrue ( )
145
+ {
146
+ var features = new FeatureCollection ( ) ;
147
+
148
+ var startMock = new Mock < IHttpResponseStartFeature > ( ) ;
149
+ startMock . Setup ( o => o . StartAsync ( It . IsAny < CancellationToken > ( ) ) ) . Returns ( Task . CompletedTask ) ;
150
+ features . Set ( startMock . Object ) ;
151
+
152
+ var responseMock = new Mock < IHttpResponseFeature > ( ) ;
153
+ responseMock . Setup ( o => o . HasStarted ) . Returns ( true ) ;
154
+ features . Set ( responseMock . Object ) ;
155
+
156
+ var context = new DefaultHttpContext ( features ) ;
157
+ await context . Response . StartAsync ( ) ;
158
+
159
+ startMock . Verify ( m => m . StartAsync ( default ) , Times . Never ( ) ) ;
160
+ }
161
+
135
162
[ Fact ]
136
163
public async Task ResponseStart_CallsResponseBodyFlushIfNotSet ( )
137
164
{
0 commit comments