|
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 |