- add sources.
[platform/framework/web/crosswalk.git] / src / sandbox / win / src / app_container_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 "base/win/windows_version.h"
6 #include "sandbox/win/src/app_container.h"
7 #include "testing/gtest/include/gtest/gtest.h"
8
9 namespace sandbox {
10
11 // Tests the low level AppContainer interface.
12 TEST(AppContainerTest, CreateAppContainer) {
13   if (base::win::OSInfo::GetInstance()->version() < base::win::VERSION_WIN8)
14     return;
15
16   const wchar_t kName[] = L"Test";
17   const wchar_t kValidSid[] = L"S-1-15-2-12345-234-567-890-123-456-789";
18
19   EXPECT_TRUE(LookupAppContainer(kValidSid).empty());
20   EXPECT_EQ(SBOX_ERROR_GENERIC, DeleteAppContainer(kValidSid));
21
22   EXPECT_EQ(SBOX_ALL_OK, CreateAppContainer(kValidSid, kName));
23   EXPECT_EQ(SBOX_ERROR_GENERIC, CreateAppContainer(kValidSid, kName));
24   EXPECT_EQ(kName, LookupAppContainer(kValidSid));
25   EXPECT_EQ(SBOX_ALL_OK, DeleteAppContainer(kValidSid));
26
27   EXPECT_TRUE(LookupAppContainer(kValidSid).empty());
28   EXPECT_EQ(SBOX_ERROR_GENERIC, DeleteAppContainer(kValidSid));
29
30   EXPECT_EQ(SBOX_ERROR_INVALID_APP_CONTAINER,
31             CreateAppContainer(L"Foo", kName));
32 }
33
34 // Tests handling of security capabilities on the attribute list.
35 TEST(AppContainerTest, SecurityCapabilities) {
36   if (base::win::OSInfo::GetInstance()->version() < base::win::VERSION_WIN8)
37     return;
38
39   scoped_ptr<AppContainerAttributes> attributes(new AppContainerAttributes);
40   std::vector<string16> capabilities;
41   EXPECT_EQ(SBOX_ERROR_INVALID_APP_CONTAINER,
42             attributes->SetAppContainer(L"S-1-foo", capabilities));
43
44   EXPECT_EQ(SBOX_ALL_OK,
45             attributes->SetAppContainer(L"S-1-15-2-12345-234", capabilities));
46   EXPECT_TRUE(attributes->HasAppContainer());
47
48   attributes.reset(new AppContainerAttributes);
49   capabilities.push_back(L"S-1-15-3-12345678-87654321");
50   capabilities.push_back(L"S-1-15-3-1");
51   capabilities.push_back(L"S-1-15-3-2");
52   capabilities.push_back(L"S-1-15-3-3");
53   EXPECT_EQ(SBOX_ALL_OK,
54             attributes->SetAppContainer(L"S-1-15-2-1-2", capabilities));
55   EXPECT_TRUE(attributes->HasAppContainer());
56 }
57
58 }  // namespace sandbox