1 #include "http_utility.hpp" 2 3 #include <gtest/gtest.h> // IWYU pragma: keep 4 5 // IWYU pragma: no_include <gtest/gtest-message.h> 6 // IWYU pragma: no_include <gtest/gtest-test-part.h> 7 // IWYU pragma: no_include "gtest/gtest_pred_impl.h" 8 9 namespace http_helpers 10 { 11 namespace 12 { 13 14 TEST(isContentTypeAllowed, PositiveTest) 15 { 16 EXPECT_TRUE(isContentTypeAllowed("*/*, application/octet-stream", 17 ContentType::OctetStream)); 18 EXPECT_TRUE(isContentTypeAllowed("application/octet-stream", 19 ContentType::OctetStream)); 20 EXPECT_TRUE(isContentTypeAllowed("text/html", ContentType::HTML)); 21 EXPECT_TRUE(isContentTypeAllowed("application/json", ContentType::JSON)); 22 EXPECT_TRUE(isContentTypeAllowed("application/cbor", ContentType::CBOR)); 23 EXPECT_TRUE( 24 isContentTypeAllowed("application/json, text/html", ContentType::HTML)); 25 } 26 27 TEST(isContentTypeAllowed, NegativeTest) 28 { 29 EXPECT_FALSE( 30 isContentTypeAllowed("application/octet-stream", ContentType::HTML)); 31 EXPECT_FALSE(isContentTypeAllowed("application/html", ContentType::JSON)); 32 EXPECT_FALSE(isContentTypeAllowed("application/json", ContentType::CBOR)); 33 EXPECT_FALSE(isContentTypeAllowed("application/cbor", ContentType::HTML)); 34 EXPECT_FALSE(isContentTypeAllowed("application/json, text/html", 35 ContentType::OctetStream)); 36 } 37 38 TEST(isContentTypeAllowed, ContainsAnyMimeTypeReturnsTrue) 39 { 40 EXPECT_TRUE( 41 isContentTypeAllowed("text/html, */*", ContentType::OctetStream)); 42 } 43 44 TEST(isContentTypeAllowed, ContainsQFactorWeightingReturnsTrue) 45 { 46 EXPECT_TRUE( 47 isContentTypeAllowed("text/html, */*;q=0.8", ContentType::OctetStream)); 48 } 49 50 TEST(getPreferedContentType, PositiveTest) 51 { 52 std::array<ContentType, 1> contentType{ContentType::HTML}; 53 EXPECT_EQ( 54 getPreferedContentType("text/html, application/json", contentType), 55 ContentType::HTML); 56 57 std::array<ContentType, 2> htmlJson{ContentType::HTML, ContentType::JSON}; 58 EXPECT_EQ(getPreferedContentType("text/html, application/json", htmlJson), 59 ContentType::HTML); 60 61 std::array<ContentType, 2> jsonHtml{ContentType::JSON, ContentType::HTML}; 62 EXPECT_EQ(getPreferedContentType("text/html, application/json", jsonHtml), 63 ContentType::HTML); 64 65 std::array<ContentType, 2> cborJson{ContentType::CBOR, ContentType::JSON}; 66 EXPECT_EQ( 67 getPreferedContentType("application/cbor, application::json", cborJson), 68 ContentType::CBOR); 69 70 EXPECT_EQ(getPreferedContentType("application/json", cborJson), 71 ContentType::JSON); 72 } 73 74 TEST(getPreferedContentType, NegativeTest) 75 { 76 std::array<ContentType, 1> contentType{ContentType::CBOR}; 77 EXPECT_EQ( 78 getPreferedContentType("text/html, application/json", contentType), 79 ContentType::NoMatch); 80 } 81 } // namespace 82 } // namespace http_helpers 83