Skip to content

Commit ff30254

Browse files
author
Bart Koelman
committed
Converted existing content negotiation tests to new syntax.
Fixed: Integration tests used to send request body "null" on GET requests, while they should not send a body at all.
1 parent 7c7702a commit ff30254

File tree

7 files changed

+422
-311
lines changed

7 files changed

+422
-311
lines changed

Diff for: test/JsonApiDotNetCoreExampleTests/Acceptance/Spec/ContentNegotiationTests.cs

-296
This file was deleted.

Diff for: test/JsonApiDotNetCoreExampleTests/IntegrationTestContext.cs

+40-15
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Collections.Generic;
23
using System.Net.Http;
34
using System.Net.Http.Headers;
45
using System.Threading.Tasks;
@@ -102,42 +103,66 @@ public async Task RunOnDatabaseAsync(Func<TDbContext, Task> asyncAction)
102103
}
103104

104105
public async Task<(HttpResponseMessage httpResponse, TResponseDocument responseDocument)>
105-
ExecuteGetAsync<TResponseDocument>(string requestUrl)
106+
ExecuteGetAsync<TResponseDocument>(string requestUrl,
107+
IEnumerable<MediaTypeWithQualityHeaderValue> acceptHeaders = null)
106108
{
107-
return await ExecuteRequestAsync<TResponseDocument>(HttpMethod.Get, requestUrl);
109+
return await ExecuteRequestAsync<TResponseDocument>(HttpMethod.Get, requestUrl, null, null, acceptHeaders);
108110
}
109111

110112
public async Task<(HttpResponseMessage httpResponse, TResponseDocument responseDocument)>
111-
ExecutePostAsync<TResponseDocument>(string requestUrl, object requestBody)
113+
ExecutePostAsync<TResponseDocument>(string requestUrl, object requestBody,
114+
string contentType = HeaderConstants.MediaType,
115+
IEnumerable<MediaTypeWithQualityHeaderValue> acceptHeaders = null)
112116
{
113-
return await ExecuteRequestAsync<TResponseDocument>(HttpMethod.Post, requestUrl, requestBody);
117+
return await ExecuteRequestAsync<TResponseDocument>(HttpMethod.Post, requestUrl, requestBody, contentType,
118+
acceptHeaders);
114119
}
115120

116121
public async Task<(HttpResponseMessage httpResponse, TResponseDocument responseDocument)>
117-
ExecutePatchAsync<TResponseDocument>(string requestUrl, object requestBody)
122+
ExecutePatchAsync<TResponseDocument>(string requestUrl, object requestBody,
123+
string contentType = HeaderConstants.MediaType,
124+
IEnumerable<MediaTypeWithQualityHeaderValue> acceptHeaders = null)
118125
{
119-
return await ExecuteRequestAsync<TResponseDocument>(HttpMethod.Patch, requestUrl, requestBody);
126+
return await ExecuteRequestAsync<TResponseDocument>(HttpMethod.Patch, requestUrl, requestBody, contentType,
127+
acceptHeaders);
120128
}
121129

122130
public async Task<(HttpResponseMessage httpResponse, TResponseDocument responseDocument)>
123-
ExecuteDeleteAsync<TResponseDocument>(string requestUrl, object requestBody = null)
131+
ExecuteDeleteAsync<TResponseDocument>(string requestUrl, object requestBody = null,
132+
string contentType = HeaderConstants.MediaType,
133+
IEnumerable<MediaTypeWithQualityHeaderValue> acceptHeaders = null)
124134
{
125-
return await ExecuteRequestAsync<TResponseDocument>(HttpMethod.Delete, requestUrl, requestBody);
135+
return await ExecuteRequestAsync<TResponseDocument>(HttpMethod.Delete, requestUrl, requestBody, contentType,
136+
acceptHeaders);
126137
}
127138

128139
private async Task<(HttpResponseMessage httpResponse, TResponseDocument responseDocument)>
129-
ExecuteRequestAsync<TResponseDocument>(HttpMethod method, string requestUrl, object requestBody = null)
140+
ExecuteRequestAsync<TResponseDocument>(HttpMethod method, string requestUrl, object requestBody,
141+
string contentType, IEnumerable<MediaTypeWithQualityHeaderValue> acceptHeaders)
130142
{
131143
var request = new HttpRequestMessage(method, requestUrl);
132144
string requestText = SerializeRequest(requestBody);
133145

134146
if (!string.IsNullOrEmpty(requestText))
135147
{
136148
request.Content = new StringContent(requestText);
137-
request.Content.Headers.ContentType = new MediaTypeHeaderValue(HeaderConstants.MediaType);
149+
150+
if (contentType != null)
151+
{
152+
request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse(contentType);
153+
}
138154
}
139155

140156
using HttpClient client = Factory.CreateClient();
157+
158+
if (acceptHeaders != null)
159+
{
160+
foreach (var acceptHeader in acceptHeaders)
161+
{
162+
client.DefaultRequestHeaders.Accept.Add(acceptHeader);
163+
}
164+
}
165+
141166
HttpResponseMessage responseMessage = await client.SendAsync(request);
142167

143168
string responseText = await responseMessage.Content.ReadAsStringAsync();
@@ -148,11 +173,11 @@ public async Task RunOnDatabaseAsync(Func<TDbContext, Task> asyncAction)
148173

149174
private string SerializeRequest(object requestBody)
150175
{
151-
string requestText = requestBody is string stringRequestBody
152-
? stringRequestBody
153-
: JsonConvert.SerializeObject(requestBody);
154-
155-
return requestText;
176+
return requestBody == null
177+
? null
178+
: requestBody is string stringRequestBody
179+
? stringRequestBody
180+
: JsonConvert.SerializeObject(requestBody);
156181
}
157182

158183
private TResponseDocument DeserializeResponse<TResponseDocument>(string responseText)

0 commit comments

Comments
 (0)