2
// AsyncTests.HttpClientTests.Test.ServerError
5
// Martin Baulig (martin.baulig@gmail.com)
7
// Copyright 2012 Xamarin Inc. (http://www.xamarin.com)
10
// Permission is hereby granted, free of charge, to any person obtaining
11
// a copy of this software and associated documentation files (the
12
// "Software"), to deal in the Software without restriction, including
13
// without limitation the rights to use, copy, modify, merge, publish,
14
// distribute, sublicense, and/or sell copies of the Software, and to
15
// permit persons to whom the Software is furnished to do so, subject to
16
// the following conditions:
18
// The above copyright notice and this permission notice shall be
19
// included in all copies or substantial portions of the Software.
21
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
33
using System.Threading;
34
using System.Threading.Tasks;
35
using System.Net.Http;
36
using NUnit.Framework;
37
using NUnit.Framework.Constraints;
38
using NUnit.Framework.SyntaxHelpers;
40
namespace AsyncTests.HttpClientTests.Test {
45
[HttpClientTestFixture]
46
public class ServerError {
47
public const string Text = "Error Text";
50
public static void Error500Handler (ServerContext ctx)
52
ctx.Response.StatusCode = 500;
53
using (var writer = new StreamWriter (ctx.Response.OutputStream))
58
public static void NoResponseHandler (ServerContext ctx)
60
ctx.Response.StatusCode = 500;
64
[ExpectedException (typeof (HttpRequestException))]
65
public async Task GetStringAsync (HttpClientTestContext ctx)
67
var uri = Server.GetUri (Error500Handler);
68
await ctx.Client.GetStringAsync (uri).ConfigureAwait (false);
72
public async Task GetAsync (HttpClientTestContext ctx)
74
var uri = Server.GetUri (Error500Handler);
75
var res = await ctx.Client.GetAsync (uri).ConfigureAwait (false);
76
ctx.AutoDispose (res);
78
ctx.Assert (res.StatusCode, Is.EqualTo (HttpStatusCode.InternalServerError));
82
public async Task GetErrorMessage (HttpClientTestContext ctx,
83
CancellationToken cancellationToken)
85
var uri = Server.GetUri (Error500Handler);
86
var res = await ctx.Client.GetAsync (
87
uri, HttpCompletionOption.ResponseContentRead,
88
cancellationToken).ConfigureAwait (false);
90
ctx.AutoDispose (res);
92
ctx.Assert (res.StatusCode, Is.EqualTo (HttpStatusCode.InternalServerError));
93
var text = await res.Content.ReadAsStringAsync ();
94
ctx.Assert (text, Is.EqualTo (Text));
98
[ExpectedException (typeof (HttpRequestException))]
99
public async Task GetStringNoResponse (HttpClientTestContext ctx)
101
var uri = Server.GetUri (NoResponseHandler);
102
await ctx.Client.GetStringAsync (uri).ConfigureAwait (false);