1 // Copyright (c) 2012 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 "xwalk/application/common/installer/package.h"
7 #include "base/file_util.h"
8 #include "base/files/scoped_temp_dir.h"
9 #include "base/path_service.h"
10 #include "testing/gtest/include/gtest/gtest.h"
13 namespace application {
15 // As of now only XPK unit tests are present
16 class PackageTest : public testing::Test {
18 void SetupPackage(const std::string& xpk_name) {
19 base::FilePath xpk_path;
20 ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &xpk_path));
21 xpk_path = xpk_path.AppendASCII("xwalk")
22 .AppendASCII("application")
24 .AppendASCII("unpacker")
25 .AppendASCII(xpk_name);
26 ASSERT_TRUE(base::PathExists(xpk_path)) << xpk_path.value();
28 package_ = Package::Create(xpk_path);
32 scoped_ptr<Package> package_;
33 base::ScopedTempDir temp_dir_;
36 TEST_F(PackageTest, Good) {
37 SetupPackage("good.xpk");
38 EXPECT_FALSE(package_->Id().empty());
40 EXPECT_TRUE(package_->Extract(&path));
41 EXPECT_TRUE(base::DirectoryExists(path));
42 EXPECT_TRUE(temp_dir_.Set(path));
45 TEST_F(PackageTest, BadMagicString) {
46 SetupPackage("bad_magic.xpk");
48 EXPECT_FALSE(package_->Extract(&path));
51 TEST_F(PackageTest, BadSignature) {
52 SetupPackage("bad_signature.xpk");
54 EXPECT_FALSE(package_->Extract(&path));
57 TEST_F(PackageTest, NoMagicHeader) {
58 SetupPackage("no_magic_header.xpk");
60 EXPECT_FALSE(package_->Extract(&path));
63 TEST_F(PackageTest, BadXPKPackageExtension) {
64 SetupPackage("error.ext");
66 EXPECT_TRUE(package_ == NULL);
69 TEST_F(PackageTest, BadUnzipFile) {
70 SetupPackage("bad_zip.xpk");
72 EXPECT_FALSE(package_->Extract(&path));
75 } // namespace application