internal void Initialize(DefaultHttpContext httpContext, IFeatureCollection featureCollection)
        {
            Debug.Assert(featureCollection != null);
            Debug.Assert(httpContext != null);

            httpContext.Initialize(featureCollection);

            Initialize(httpContext);
        }
예제 #2
0
        public void InternalActiveFlagIsSetAndUnset()
        {
            var context = new DefaultHttpContext();

            Assert.False(context._active);

            context.Initialize(new FeatureCollection());

            Assert.True(context._active);

            context.Uninitialize();

            Assert.False(context._active);
        }
예제 #3
0
        public void UpdateFeatures_ClearsCachedFeatures()
        {
            var features = new FeatureCollection();

            features.Set <IHttpRequestFeature>(new HttpRequestFeature());
            features.Set <IHttpResponseFeature>(new HttpResponseFeature());
            features.Set <IHttpResponseBodyFeature>(new StreamResponseBodyFeature(Stream.Null));
            features.Set <IHttpWebSocketFeature>(new TestHttpWebSocketFeature());

            // FeatureCollection is set. all cached interfaces are null.
            var context = new DefaultHttpContext(features);

            TestAllCachedFeaturesAreNull(context, features);
            Assert.Equal(4, features.Count());

            // getting feature properties populates feature collection with defaults
            TestAllCachedFeaturesAreSet(context, features);
            Assert.NotEqual(4, features.Count());

            // FeatureCollection is null. and all cached interfaces are null.
            // only top level is tested because child objects are inaccessible.
            context.Uninitialize();
            TestCachedFeaturesAreNull(context, null);


            var newFeatures = new FeatureCollection();

            newFeatures.Set <IHttpRequestFeature>(new HttpRequestFeature());
            newFeatures.Set <IHttpResponseFeature>(new HttpResponseFeature());
            newFeatures.Set <IHttpResponseBodyFeature>(new StreamResponseBodyFeature(Stream.Null));
            newFeatures.Set <IHttpWebSocketFeature>(new TestHttpWebSocketFeature());

            // FeatureCollection is set to newFeatures. all cached interfaces are null.
            context.Initialize(newFeatures);
            TestAllCachedFeaturesAreNull(context, newFeatures);
            Assert.Equal(4, newFeatures.Count());

            // getting feature properties populates new feature collection with defaults
            TestAllCachedFeaturesAreSet(context, newFeatures);
            Assert.NotEqual(4, newFeatures.Count());
        }