Home | History | Annotate | Download | only in brillo
      1 // Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include <brillo/mime_utils.h>
      6 
      7 #include <gtest/gtest.h>
      8 
      9 namespace brillo {
     10 
     11 TEST(MimeUtils, Combine) {
     12   std::string mime_string = mime::Combine(mime::types::kText, "xml");
     13   EXPECT_EQ(mime::text::kXml, mime_string);
     14   EXPECT_EQ(
     15       "application/json; charset=utf-8",
     16       mime::Combine(mime::types::kApplication, "json", {{"charset", "utf-8"}}));
     17 }
     18 
     19 TEST(MimeUtils, Split) {
     20   std::string s1, s2;
     21   EXPECT_TRUE(mime::Split(mime::image::kJpeg, &s1, &s2));
     22   EXPECT_EQ(mime::types::kImage, s1);
     23   EXPECT_EQ("jpeg", s2);
     24 
     25   mime::Parameters parameters;
     26   EXPECT_TRUE(
     27       mime::Split("application/json;charset=utf-8", &s1, &s2, &parameters));
     28   EXPECT_EQ(mime::types::kApplication, s1);
     29   EXPECT_EQ("json", s2);
     30   EXPECT_EQ(mime::application::kJson, mime::Combine(s1, s2));
     31   EXPECT_EQ(1, parameters.size());
     32   EXPECT_EQ(mime::parameters::kCharset, parameters.front().first);
     33   EXPECT_EQ("utf-8", parameters.front().second);
     34   EXPECT_EQ("application/json; charset=utf-8",
     35             mime::Combine(s1, s2, parameters));
     36 }
     37 
     38 TEST(MimeUtils, ExtractParts) {
     39   mime::Parameters parameters;
     40 
     41   EXPECT_EQ(mime::types::kText, mime::GetType(mime::text::kPlain));
     42   EXPECT_EQ("plain", mime::GetSubtype(mime::text::kPlain));
     43 
     44   parameters = mime::GetParameters("text/plain; charset=iso-8859-1;foo=bar");
     45   EXPECT_EQ(2, parameters.size());
     46   EXPECT_EQ(mime::parameters::kCharset, parameters[0].first);
     47   EXPECT_EQ("iso-8859-1", parameters[0].second);
     48   EXPECT_EQ("foo", parameters[1].first);
     49   EXPECT_EQ("bar", parameters[1].second);
     50 }
     51 
     52 TEST(MimeUtils, AppendRemoveParams) {
     53   std::string mime_string = mime::AppendParameter(
     54       mime::text::kXml, mime::parameters::kCharset, "utf-8");
     55   EXPECT_EQ("text/xml; charset=utf-8", mime_string);
     56   mime_string = mime::AppendParameter(mime_string, "foo", "bar");
     57   EXPECT_EQ("text/xml; charset=utf-8; foo=bar", mime_string);
     58   EXPECT_EQ("utf-8",
     59             mime::GetParameterValue(mime_string, mime::parameters::kCharset));
     60   EXPECT_EQ("bar", mime::GetParameterValue(mime_string, "foo"));
     61   EXPECT_EQ("", mime::GetParameterValue(mime_string, "baz"));
     62   mime_string = mime::RemoveParameters(mime_string);
     63   EXPECT_EQ(mime::text::kXml, mime_string);
     64 }
     65 
     66 }  // namespace brillo
     67