diff options
author | Ed Tanous <ed@tanous.net> | 2024-03-19 19:16:16 +0300 |
---|---|---|
committer | Ed Tanous <ed@tanous.net> | 2024-03-21 03:21:57 +0300 |
commit | 1fccd0d5eafd56049a8a381543dd83d5559fbf25 (patch) | |
tree | da46c6ada6dc567ebc4b0278ff24c540d9d3ece1 /test | |
parent | 78d4ec4f0ccc85d92280c8b542f3c516b9e72786 (diff) | |
download | bmcweb-1fccd0d5eafd56049a8a381543dd83d5559fbf25.tar.xz |
Allow no spaces in content-type
For the content type header
application/json;charset=utf-8
The Redfish specification DSP0266 shows no space between the ; and
charset. Sites like mozilla show the space included [1]
Considering the discrepancy, we should just accept both.
Resolves #271
[1] https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type
Tested: Submitter reports issue fixed.
Change-Id: I77b7db91d65acc84f2221ec50985d4b942fbe77f
Signed-off-by: Ed Tanous <ed@tanous.net>
Diffstat (limited to 'test')
-rw-r--r-- | test/http/parsing_test.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/test/http/parsing_test.cpp b/test/http/parsing_test.cpp new file mode 100644 index 0000000000..e51e89cf98 --- /dev/null +++ b/test/http/parsing_test.cpp @@ -0,0 +1,32 @@ +#include "http/parsing.hpp" + +#include <gtest/gtest.h> + +namespace +{ + +TEST(HttpParsing, isJsonContentType) +{ + EXPECT_TRUE(isJsonContentType("application/json")); + + // The Redfish specification DSP0266 shows no space between the ; and + // charset. + EXPECT_TRUE(isJsonContentType("application/json;charset=utf-8")); + + // Sites like mozilla show the space included [1] + // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type + EXPECT_TRUE(isJsonContentType("application/json; charset=utf-8")); + + EXPECT_TRUE(isJsonContentType("APPLICATION/JSON")); + EXPECT_TRUE(isJsonContentType("APPLICATION/JSON; CHARSET=UTF-8")); + EXPECT_TRUE(isJsonContentType("APPLICATION/JSON;CHARSET=UTF-8")); + + EXPECT_FALSE(isJsonContentType("application/xml")); + EXPECT_FALSE(isJsonContentType("")); + EXPECT_FALSE(isJsonContentType(";")); + EXPECT_FALSE(isJsonContentType("application/json;")); + EXPECT_FALSE(isJsonContentType("application/json; ")); + EXPECT_FALSE(isJsonContentType("application/json; charset=ascii")); + EXPECT_FALSE(isJsonContentType("json")); +} +} // namespace |