44using System . Linq ;
55using System . Web . SessionState ;
66using AutoFixture ;
7+ using Microsoft . AspNetCore . SystemWebAdapters . Features ;
78using Moq ;
89using Xunit ;
910
@@ -27,7 +28,7 @@ public void SessionId()
2728 var session = new Mock < ISessionState > ( ) ;
2829 session . Setup ( s => s . SessionID ) . Returns ( id ) ;
2930
30- var state = new HttpSessionState ( session . Object ) ;
31+ var state = CreateSession ( session . Object ) ;
3132
3233 // Act
3334 var result = state . SessionID ;
@@ -42,7 +43,7 @@ public void Mode()
4243 // Arrange
4344 var session = new Mock < ISessionState > ( ) ;
4445
45- var state = new HttpSessionState ( session . Object ) ;
46+ var state = CreateSession ( session . Object ) ;
4647
4748 // Act
4849 var result = state . Mode ;
@@ -60,7 +61,7 @@ public void Count()
6061 var session = new Mock < ISessionState > ( ) ;
6162 session . Setup ( s => s . Count ) . Returns ( count ) ;
6263
63- var state = new HttpSessionState ( session . Object ) ;
64+ var state = CreateSession ( session . Object ) ;
6465
6566 // Act
6667 var result = state . Count ;
@@ -78,7 +79,7 @@ public void IsReadOnly(bool isReadOnly)
7879 var session = new Mock < ISessionState > ( ) ;
7980 session . Setup ( s => s . IsReadOnly ) . Returns ( isReadOnly ) ;
8081
81- var state = new HttpSessionState ( session . Object ) ;
82+ var state = CreateSession ( session . Object ) ;
8283
8384 // Act
8485 var result = state . IsReadOnly ;
@@ -96,7 +97,7 @@ public void IsNewSession(bool isNewSession)
9697 var session = new Mock < ISessionState > ( ) ;
9798 session . Setup ( s => s . IsNewSession ) . Returns ( isNewSession ) ;
9899
99- var state = new HttpSessionState ( session . Object ) ;
100+ var state = CreateSession ( session . Object ) ;
100101
101102 // Act
102103 var result = state . IsNewSession ;
@@ -116,7 +117,7 @@ public void TimeOut()
116117 session . SetupProperty ( s => s . Timeout ) ;
117118 session . Object . Timeout = timeout1 ;
118119
119- var state = new HttpSessionState ( session . Object ) ;
120+ var state = CreateSession ( session . Object ) ;
120121
121122 // Act
122123 var result = state . Timeout ;
@@ -136,7 +137,7 @@ public void IsSynchronized(bool isSynchronized)
136137 var session = new Mock < ISessionState > ( ) ;
137138 session . Setup ( s => s . IsSynchronized ) . Returns ( isSynchronized ) ;
138139
139- var state = new HttpSessionState ( session . Object ) ;
140+ var state = CreateSession ( session . Object ) ;
140141
141142 // Act
142143 var result = state . IsSynchronized ;
@@ -153,7 +154,7 @@ public void SyncRoot()
153154 var session = new Mock < ISessionState > ( ) ;
154155 session . Setup ( s => s . SyncRoot ) . Returns ( sync ) ;
155156
156- var state = new HttpSessionState ( session . Object ) ;
157+ var state = CreateSession ( session . Object ) ;
157158
158159 // Act
159160 var result = state . SyncRoot ;
@@ -169,7 +170,7 @@ public void Abandon()
169170 var session = new Mock < ISessionState > ( ) ;
170171 session . SetupProperty ( s => s . IsAbandoned ) ;
171172
172- var state = new HttpSessionState ( session . Object ) ;
173+ var state = CreateSession ( session . Object ) ;
173174
174175 // Act
175176 state . Abandon ( ) ;
@@ -188,7 +189,7 @@ public void Get()
188189 var session = new Mock < ISessionState > ( ) ;
189190 session . Setup ( s => s [ key ] ) . Returns ( value ) ;
190191
191- var state = new HttpSessionState ( session . Object ) ;
192+ var state = CreateSession ( session . Object ) ;
192193
193194 // Act
194195 var result = state [ key ] ;
@@ -206,7 +207,7 @@ public void Set()
206207
207208 var session = new Mock < ISessionState > ( ) ;
208209
209- var state = new HttpSessionState ( session . Object ) ;
210+ var state = CreateSession ( session . Object ) ;
210211
211212 // Act
212213 state [ key ] = value ;
@@ -223,7 +224,7 @@ public void Add()
223224 var value = new object ( ) ;
224225
225226 var session = new Mock < ISessionState > ( ) ;
226- var state = new HttpSessionState ( session . Object ) ;
227+ var state = CreateSession ( session . Object ) ;
227228
228229 // Act
229230 state . Add ( key , value ) ;
@@ -239,7 +240,7 @@ public void Remove()
239240 var key = _fixture . Create < string > ( ) ;
240241
241242 var session = new Mock < ISessionState > ( ) ;
242- var state = new HttpSessionState ( session . Object ) ;
243+ var state = CreateSession ( session . Object ) ;
243244
244245 // Act
245246 state . Remove ( key ) ;
@@ -255,7 +256,7 @@ public void RemoveAll()
255256 var key = _fixture . Create < string > ( ) ;
256257
257258 var session = new Mock < ISessionState > ( ) ;
258- var state = new HttpSessionState ( session . Object ) ;
259+ var state = CreateSession ( session . Object ) ;
259260
260261 // Act
261262 state . RemoveAll ( ) ;
@@ -271,7 +272,7 @@ public void Clear()
271272 var key = _fixture . Create < string > ( ) ;
272273
273274 var session = new Mock < ISessionState > ( ) ;
274- var state = new HttpSessionState ( session . Object ) ;
275+ var state = CreateSession ( session . Object ) ;
275276
276277 // Act
277278 state . Clear ( ) ;
@@ -289,7 +290,7 @@ public void GetEnumerator()
289290 var session = new Mock < ISessionState > ( ) ;
290291 session . Setup ( s => s . Keys ) . Returns ( keys ) ;
291292
292- var state = new HttpSessionState ( session . Object ) ;
293+ var state = CreateSession ( session . Object ) ;
293294
294295 // Act
295296 var result = state . GetEnumerator ( ) ;
@@ -320,7 +321,7 @@ public void CopyTo()
320321 session . Setup ( s => s [ key1 ] ) . Returns ( item1 ) ;
321322 session . Setup ( s => s [ key2 ] ) . Returns ( item2 ) ;
322323
323- var state = new HttpSessionState ( session . Object ) ;
324+ var state = CreateSession ( session . Object ) ;
324325 var array = new object [ 3 ] ;
325326
326327 // Act
@@ -332,4 +333,12 @@ public void CopyTo()
332333 item => Assert . Equal ( item1 , item ) ,
333334 item => Assert . Equal ( item2 , item ) ) ; ;
334335 }
336+
337+ private static HttpSessionState CreateSession ( ISessionState session )
338+ {
339+ var feature = new Mock < ISessionStateFeature > ( ) ;
340+ feature . Setup ( f => f . State ) . Returns ( session ) ;
341+
342+ return new ( feature . Object ) ;
343+ }
335344}
0 commit comments