// Copyright (c) 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include <string> #include "base/base64.h" #include "base/file_util.h" #include "base/files/file_path.h" #include "base/files/scoped_temp_dir.h" #include "chrome/test/chromedriver/chrome/status.h" #include "chrome/test/chromedriver/util.h" #include "testing/gtest/include/gtest/gtest.h" TEST(UnzipSoleFile, Entry) { base::ScopedTempDir temp_dir; ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); std::string data; // A zip entry sent from a Java WebDriver client (v2.20) that contains a // file with the contents "COW\n". const char* kBase64ZipEntry = "UEsDBBQACAAIAJpyXEAAAAAAAAAAAAAAAAAEAAAAdGVzdHP2D+" "cCAFBLBwi/wAzGBgAAAAQAAAA="; ASSERT_TRUE(base::Base64Decode(kBase64ZipEntry, &data)); base::FilePath file; Status status = UnzipSoleFile(temp_dir.path(), data, &file); ASSERT_EQ(kOk, status.code()) << status.message(); std::string contents; ASSERT_TRUE(base::ReadFileToString(file, &contents)); ASSERT_STREQ("COW\n", contents.c_str()); } TEST(UnzipSoleFile, Archive) { base::ScopedTempDir temp_dir; ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); std::string data; // A zip archive sent from a Python WebDriver client that contains a // file with the contents "COW\n". const char* kBase64ZipArchive = "UEsDBBQAAAAAAMROi0K/wAzGBAAAAAQAAAADAAAAbW9vQ09XClBLAQIUAxQAAAAAAMROi0K/" "wAzGBAAAAAQAAAADAAAAAAAAAAAAAACggQAAAABtb29QSwUGAAAAAAEAAQAxAAAAJQAAAAA" "A"; ASSERT_TRUE(base::Base64Decode(kBase64ZipArchive, &data)); base::FilePath file; Status status = UnzipSoleFile(temp_dir.path(), data, &file); ASSERT_EQ(kOk, status.code()) << status.message(); std::string contents; ASSERT_TRUE(base::ReadFileToString(file, &contents)); ASSERT_STREQ("COW\n", contents.c_str()); }