Exemplo n.º 1
0
        public async Task ReadFromRequestAuthorizationScattered()
        {
            // Start by creating a standard POST HTTP request.
            var postedFields = new Dictionary <string, string> {
                { "age", "15" },
            };

            // Now add another field to the request URL
            var builder = new UriBuilder(MessagingTestBase.DefaultUrlForHttpRequestInfo);

            builder.Query = "Name=Andrew";

            // Finally, add an Authorization header
            var authHeaderFields = new Dictionary <string, string> {
                { "Location", "http://hostb/pathB" },
                { "Timestamp", XmlConvert.ToString(DateTime.UtcNow, XmlDateTimeSerializationMode.Utc) },
            };
            var headers = new NameValueCollection();

            headers.Add(HttpRequestHeaders.Authorization, CreateAuthorizationHeader(authHeaderFields));
            headers.Add(HttpRequestHeaders.ContentType, Channel.HttpFormUrlEncoded);

            var requestInfo = new HttpRequestInfo("POST", builder.Uri, form: postedFields.ToNameValueCollection(), headers: headers);

            IDirectedProtocolMessage requestMessage = await this.channel.ReadFromRequestAsync(requestInfo.AsHttpRequestMessage(), CancellationToken.None);

            Assert.IsNotNull(requestMessage);
            Assert.IsInstanceOf <TestMessage>(requestMessage);
            TestMessage testMessage = (TestMessage)requestMessage;

            Assert.AreEqual(15, testMessage.Age);
            Assert.AreEqual("Andrew", testMessage.Name);
            Assert.AreEqual("http://hostb/pathB", testMessage.Location.AbsoluteUri);
        }