summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorEd Tanous <ed@tanous.net>2024-03-19 19:16:16 +0300
committerEd Tanous <ed@tanous.net>2024-03-21 03:21:57 +0300
commit1fccd0d5eafd56049a8a381543dd83d5559fbf25 (patch)
treeda46c6ada6dc567ebc4b0278ff24c540d9d3ece1 /test
parent78d4ec4f0ccc85d92280c8b542f3c516b9e72786 (diff)
downloadbmcweb-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.cpp32
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