public void OwinEnvironmentImplementsGetEnumerator() { var owinEnvironment = new OwinEnvironment(CreateContext()); Assert.NotNull(owinEnvironment.GetEnumerator()); Assert.NotNull(((IEnumerable)owinEnvironment).GetEnumerator()); }
public void OwinEnvironmentSuppliesDefaultsForMissingRequiredEntries() { ProtoContext context = CreateContext(); IDictionary <string, object> env = new OwinEnvironment(context); object value; Assert.True(env.TryGetValue("owin.CallCancelled", out value), "owin.CallCancelled"); Assert.True(env.TryGetValue("owin.Version", out value), "owin.Version"); Assert.Equal(CancellationToken.None, env["owin.CallCancelled"]); Assert.Equal("1.0", env["owin.Version"]); }
public void OwinEnvironmentDoesNotContainEntriesForMissingFeatures(string key) { ProtoContext context = CreateContext(); IDictionary <string, object> env = new OwinEnvironment(context); object value; Assert.False(env.TryGetValue(key, out value)); Assert.Throws <KeyNotFoundException>(() => env[key]); Assert.False(env.Keys.Contains(key)); Assert.False(env.ContainsKey(key)); }
public void OwinEnvironmentCanBeModified() { ProtoContext context = CreateContext(); IDictionary <string, object> env = new OwinEnvironment(context); env["owin.RequestMethod"] = "SomeMethod"; env["server.User"] = new ClaimsPrincipal(new ClaimsIdentity("Foo")); Assert.Equal("Foo", context.User.Identity.AuthenticationType); // User property should fall back from owin.RequestUser to server.User. env["owin.RequestUser"] = new ClaimsPrincipal(new ClaimsIdentity("Bar")); Assert.Equal("Bar", context.User.Identity.AuthenticationType); env["owin.RequestBody"] = Stream.Null; var requestHeaders = Get <IDictionary <string, string[]> >(env, "owin.RequestHeaders"); Assert.NotNull(requestHeaders); requestHeaders["CustomRequestHeader"] = new[] { "CustomRequestValue" }; env["owin.RequestPath"] = "/path"; env["owin.RequestPathBase"] = "/pathBase"; env["owin.RequestProtocol"] = "http/1.0"; env["owin.RequestQueryString"] = "key=value"; env["owin.RequestScheme"] = "http"; env["owin.ResponseBody"] = Stream.Null; var responseHeaders = Get <IDictionary <string, string[]> >(env, "owin.ResponseHeaders"); Assert.NotNull(responseHeaders); responseHeaders["CustomResponseHeader"] = new[] { "CustomResponseValue" }; env["owin.ResponseStatusCode"] = 201; Assert.Equal("SomeMethod", context.Request.Method); Assert.Same(Stream.Null, context.Request.Body); Assert.Equal("CustomRequestValue", context.Request.Headers["CustomRequestHeader"]); Assert.Equal("/path", context.Request.Path.Value); Assert.Equal("/pathBase", context.Request.PathBase.Value); Assert.Equal("http/1.0", context.Request.Protocol); Assert.Equal("?key=value", context.Request.QueryString.Value); Assert.Equal("http", context.Request.Scheme); Assert.Same(Stream.Null, context.Response.Body); Assert.Equal("CustomResponseValue", context.Response.Headers["CustomResponseHeader"]); Assert.Equal(201, context.Response.StatusCode); }
public void OwinEnvironmentCanBeCreated() { ProtoContext context = CreateContext(); context.Request.Method = "SomeMethod"; context.User = new ClaimsPrincipal(new ClaimsIdentity("Foo")); context.Request.Body = Stream.Null; context.Request.Headers["CustomRequestHeader"] = "CustomRequestValue"; context.Request.Path = new PathString("/path"); context.Request.PathBase = new PathString("/pathBase"); context.Request.Protocol = "http/1.0"; context.Request.QueryString = new QueryString("?key=value"); context.Request.Scheme = "http"; context.Response.Body = Stream.Null; context.Response.Headers["CustomResponseHeader"] = "CustomResponseValue"; context.Response.StatusCode = 201; IDictionary <string, object> env = new OwinEnvironment(context); Assert.Equal("SomeMethod", Get <string>(env, "owin.RequestMethod")); // User property should set both server.User (non-standard) and owin.RequestUser. Assert.Equal("Foo", Get <ClaimsPrincipal>(env, "server.User").Identity.AuthenticationType); Assert.Equal("Foo", Get <ClaimsPrincipal>(env, "owin.RequestUser").Identity.AuthenticationType); Assert.Same(Stream.Null, Get <Stream>(env, "owin.RequestBody")); var requestHeaders = Get <IDictionary <string, string[]> >(env, "owin.RequestHeaders"); Assert.NotNull(requestHeaders); Assert.Equal("CustomRequestValue", requestHeaders["CustomRequestHeader"].First()); Assert.Equal("/path", Get <string>(env, "owin.RequestPath")); Assert.Equal("/pathBase", Get <string>(env, "owin.RequestPathBase")); Assert.Equal("http/1.0", Get <string>(env, "owin.RequestProtocol")); Assert.Equal("key=value", Get <string>(env, "owin.RequestQueryString")); Assert.Equal("http", Get <string>(env, "owin.RequestScheme")); Assert.Same(Stream.Null, Get <Stream>(env, "owin.ResponseBody")); var responseHeaders = Get <IDictionary <string, string[]> >(env, "owin.ResponseHeaders"); Assert.NotNull(responseHeaders); Assert.Equal("CustomResponseValue", responseHeaders["CustomResponseHeader"].First()); Assert.Equal(201, Get <int>(env, "owin.ResponseStatusCode")); }