1 // Copyright 2013 The Chromium 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.
5 #include "components/drive/drive_api_util.h"
7 #include "base/files/scoped_temp_dir.h"
9 #include "google_apis/drive/drive_api_parser.h"
10 #include "google_apis/drive/test_util.h"
11 #include "testing/gtest/include/gtest/gtest.h"
17 TEST(DriveApiUtilTest
, EscapeQueryStringValue
) {
18 EXPECT_EQ("abcde", EscapeQueryStringValue("abcde"));
19 EXPECT_EQ("\\'", EscapeQueryStringValue("'"));
20 EXPECT_EQ("\\'abcde\\'", EscapeQueryStringValue("'abcde'"));
21 EXPECT_EQ("\\\\", EscapeQueryStringValue("\\"));
22 EXPECT_EQ("\\\\\\'", EscapeQueryStringValue("\\'"));
25 TEST(DriveApiUtilTest
, TranslateQuery
) {
26 EXPECT_EQ("", TranslateQuery(""));
27 EXPECT_EQ("fullText contains 'dog'", TranslateQuery("dog"));
28 EXPECT_EQ("fullText contains 'dog' and fullText contains 'cat'",
29 TranslateQuery("dog cat"));
30 EXPECT_EQ("not fullText contains 'cat'", TranslateQuery("-cat"));
31 EXPECT_EQ("fullText contains 'dog cat'", TranslateQuery("\"dog cat\""));
33 // Should handles full-width white space correctly.
34 // Note: \xE3\x80\x80 (\u3000) is Ideographic Space (a.k.a. Japanese
35 // full-width whitespace).
36 EXPECT_EQ("fullText contains 'dog' and fullText contains 'cat'",
37 TranslateQuery("dog" "\xE3\x80\x80" "cat"));
39 // If the quoted token is not closed (i.e. the last '"' is missing),
40 // we handle the remaining string is one token, as a fallback.
41 EXPECT_EQ("fullText contains 'dog cat'", TranslateQuery("\"dog cat"));
43 // For quoted text with leading '-'.
44 EXPECT_EQ("not fullText contains 'dog cat'", TranslateQuery("-\"dog cat\""));
46 // Empty tokens should be simply ignored.
47 EXPECT_EQ("", TranslateQuery("-"));
48 EXPECT_EQ("", TranslateQuery("\"\""));
49 EXPECT_EQ("", TranslateQuery("-\"\""));
50 EXPECT_EQ("", TranslateQuery("\"\"\"\""));
51 EXPECT_EQ("", TranslateQuery("\"\" \"\""));
52 EXPECT_EQ("fullText contains 'dog'", TranslateQuery("\"\" dog \"\""));
55 TEST(DriveAPIUtilTest
, CanonicalizeResourceId
) {
56 std::string
resource_id("1YsCnrMxxgp7LDdtlFDt-WdtEIth89vA9inrILtvK-Ug");
58 // New style ID is unchanged.
59 EXPECT_EQ(resource_id
, CanonicalizeResourceId(resource_id
));
61 // Drop prefixes from old style IDs.
62 EXPECT_EQ(resource_id
, CanonicalizeResourceId("document:" + resource_id
));
63 EXPECT_EQ(resource_id
, CanonicalizeResourceId("spreadsheet:" + resource_id
));
64 EXPECT_EQ(resource_id
, CanonicalizeResourceId("presentation:" + resource_id
));
65 EXPECT_EQ(resource_id
, CanonicalizeResourceId("drawing:" + resource_id
));
66 EXPECT_EQ(resource_id
, CanonicalizeResourceId("table:" + resource_id
));
67 EXPECT_EQ(resource_id
, CanonicalizeResourceId("externalapp:" + resource_id
));
70 TEST(DriveAPIUtilTest
, GetMd5Digest
) {
71 base::ScopedTempDir temp_dir
;
72 ASSERT_TRUE(temp_dir
.CreateUniqueTempDir());
74 base::FilePath path
= temp_dir
.path().AppendASCII("test.txt");
75 const char kTestData
[] = "abcdefghijklmnopqrstuvwxyz0123456789";
76 ASSERT_TRUE(google_apis::test_util::WriteStringToFile(path
, kTestData
));
78 EXPECT_EQ(base::MD5String(kTestData
), GetMd5Digest(path
, nullptr));
81 TEST(DriveAPIUtilTest
, HasHostedDocumentExtension
) {
83 HasHostedDocumentExtension(base::FilePath::FromUTF8Unsafe("xx.gdoc")));
85 HasHostedDocumentExtension(base::FilePath::FromUTF8Unsafe("xx.gsheet")));
87 HasHostedDocumentExtension(base::FilePath::FromUTF8Unsafe("xx.gslides")));
89 HasHostedDocumentExtension(base::FilePath::FromUTF8Unsafe("xx.gdraw")));
91 HasHostedDocumentExtension(base::FilePath::FromUTF8Unsafe("xx.gtable")));
93 HasHostedDocumentExtension(base::FilePath::FromUTF8Unsafe("xx.gform")));
95 HasHostedDocumentExtension(base::FilePath::FromUTF8Unsafe("xx.gmaps")));
97 HasHostedDocumentExtension(base::FilePath::FromUTF8Unsafe("xx.glink")));
100 HasHostedDocumentExtension(base::FilePath::FromUTF8Unsafe("xx.gdocs")));
102 HasHostedDocumentExtension(base::FilePath::FromUTF8Unsafe("xx.docx")));
104 HasHostedDocumentExtension(base::FilePath::FromUTF8Unsafe("xx.jpg")));
106 HasHostedDocumentExtension(base::FilePath::FromUTF8Unsafe("xx.gmap")));