MCPcopy Create free account
hub / github.com/Pagghiu/SaneCppLibraries / headerBuilders

Method headerBuilders

Tests/Libraries/Http/HttpHeadersTest.cpp:186–248  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

184}
185
186void HttpHeadersTest::headerBuilders()
187{
188 SC_TEST_EXPECT(HttpContentTypeTextPlainUtf8() == "text/plain; charset=utf-8");
189 SC_TEST_EXPECT(HttpContentTypeTextHtmlUtf8() == "text/html; charset=utf-8");
190 SC_TEST_EXPECT(HttpContentTypeApplicationJson() == "application/json");
191 SC_TEST_EXPECT(HttpContentTypeApplicationOctetStream() == "application/octet-stream");
192
193 char storage[128];
194 StringSpan output;
195
196 HttpCacheControlBuilder cache;
197 cache.publicCache = true;
198 cache.hasMaxAge = true;
199 cache.maxAgeSeconds = 3600;
200 cache.mustRevalidate = true;
201 cache.immutable = true;
202 SC_TEST_EXPECT(cache.writeTo({storage, sizeof(storage)}, output));
203 SC_TEST_EXPECT(output == "public, max-age=3600, must-revalidate, immutable");
204
205 cache = {};
206 cache.noStore = true;
207 SC_TEST_EXPECT(cache.writeTo({storage, sizeof(storage)}, output));
208 SC_TEST_EXPECT(output == "no-store");
209
210 cache = {};
211 cache.publicCache = true;
212 cache.privateCache = true;
213 SC_TEST_EXPECT(resultMessageEquals(cache.writeTo({storage, sizeof(storage)}, output),
214 "Cache-Control cannot be both public and private"));
215 SC_TEST_EXPECT(output.isEmpty());
216
217 cache = {};
218 cache.hasMaxAge = true;
219 cache.maxAgeSeconds = 42;
220 SC_TEST_EXPECT(
221 resultMessageEquals(cache.writeTo({storage, 8}, output), "Cache-Control output buffer is too small"));
222 SC_TEST_EXPECT(output.isEmpty());
223
224 SC_TEST_EXPECT(HttpWriteBearerAuthorization("token", {storage, sizeof(storage)}, output));
225 SC_TEST_EXPECT(output == "Bearer token");
226 SC_TEST_EXPECT(HttpWriteBasicAuthorization("dXNlcjpwYXNz", {storage, sizeof(storage)}, output));
227 SC_TEST_EXPECT(output == "Basic dXNlcjpwYXNz");
228 SC_TEST_EXPECT(HttpWriteBasicAuthorizationCredentials("user", "pass", {storage, sizeof(storage)}, output));
229 SC_TEST_EXPECT(output == "Basic dXNlcjpwYXNz");
230 SC_TEST_EXPECT(HttpWriteBasicAuthorizationCredentials("user", "", {storage, sizeof(storage)}, output));
231 SC_TEST_EXPECT(output == "Basic dXNlcjo=");
232 SC_TEST_EXPECT(HttpWriteBasicAuthorizationCredentials("", "pass", {storage, sizeof(storage)}, output));
233 SC_TEST_EXPECT(output == "Basic OnBhc3M=");
234
235 SC_TEST_EXPECT(resultMessageEquals(HttpWriteBearerAuthorization("", {storage, sizeof(storage)}, output),
236 "Bearer authorization token is empty"));
237 SC_TEST_EXPECT(output.isEmpty());
238 SC_TEST_EXPECT(resultMessageEquals(HttpWriteBasicAuthorization("dXNlcjpwYXNz", {storage, 8}, output),
239 "Authorization output buffer is too small"));
240 SC_TEST_EXPECT(output.isEmpty());
241 SC_TEST_EXPECT(resultMessageEquals(
242 HttpWriteBasicAuthorizationCredentials("bad:name", "pass", {storage, sizeof(storage)}, output),
243 "Basic authorization username must not contain colon"));

Callers

nothing calls this directly

Tested by

no test coverage detected