| 184 | } |
| 185 | |
| 186 | void 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")); |
nothing calls this directly
no test coverage detected