d9d758d7e5d79c29af88995e23c219eb8779261c
[platform/framework/web/crosswalk.git] / src / xwalk / application / common / installer / package_unittest.cc
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.
4
5 #include "xwalk/application/common/installer/package.h"
6
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"
11
12 namespace xwalk {
13 namespace application {
14
15 // As of now only XPK unit tests are present
16 class PackageTest : public testing::Test {
17  public:
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")
23         .AppendASCII("test")
24         .AppendASCII("unpacker")
25         .AppendASCII(xpk_name);
26     ASSERT_TRUE(base::PathExists(xpk_path)) << xpk_path.value();
27
28     package_ = Package::Create(xpk_path);
29   }
30
31  protected:
32   scoped_ptr<Package> package_;
33   base::ScopedTempDir temp_dir_;
34 };
35
36 TEST_F(PackageTest, Good) {
37   SetupPackage("good.xpk");
38   EXPECT_FALSE(package_->Id().empty());
39   base::FilePath path;
40   EXPECT_TRUE(package_->Extract(&path));
41   EXPECT_TRUE(base::DirectoryExists(path));
42   EXPECT_TRUE(temp_dir_.Set(path));
43 }
44
45 TEST_F(PackageTest, BadMagicString) {
46   SetupPackage("bad_magic.xpk");
47   base::FilePath path;
48   EXPECT_FALSE(package_->Extract(&path));
49 }
50
51 TEST_F(PackageTest, BadSignature) {
52   SetupPackage("bad_signature.xpk");
53   base::FilePath path;
54   EXPECT_FALSE(package_->Extract(&path));
55 }
56
57 TEST_F(PackageTest, NoMagicHeader) {
58   SetupPackage("no_magic_header.xpk");
59   base::FilePath path;
60   EXPECT_FALSE(package_->Extract(&path));
61 }
62
63 TEST_F(PackageTest, BadXPKPackageExtension) {
64   SetupPackage("error.ext");
65   base::FilePath path;
66   EXPECT_TRUE(package_ == NULL);
67 }
68
69 TEST_F(PackageTest, BadUnzipFile) {
70   SetupPackage("bad_zip.xpk");
71   base::FilePath path;
72   EXPECT_FALSE(package_->Extract(&path));
73 }
74
75 }  // namespace application
76 }  // namespace xwalk