michael@0: // Copyright (c) 2012 The Chromium Authors. All rights reserved. michael@0: // Use of this source code is governed by a BSD-style license that can be michael@0: // found in the LICENSE file. michael@0: michael@0: #include "base/win/windows_version.h" michael@0: #include "sandbox/win/src/app_container.h" michael@0: #include "testing/gtest/include/gtest/gtest.h" michael@0: michael@0: namespace sandbox { michael@0: michael@0: // Tests the low level AppContainer interface. michael@0: TEST(AppContainerTest, CreateAppContainer) { michael@0: if (base::win::OSInfo::GetInstance()->version() < base::win::VERSION_WIN8) michael@0: return; michael@0: michael@0: const wchar_t kName[] = L"Test"; michael@0: const wchar_t kValidSid[] = L"S-1-15-2-12345-234-567-890-123-456-789"; michael@0: michael@0: EXPECT_TRUE(LookupAppContainer(kValidSid).empty()); michael@0: EXPECT_EQ(SBOX_ERROR_GENERIC, DeleteAppContainer(kValidSid)); michael@0: michael@0: EXPECT_EQ(SBOX_ALL_OK, CreateAppContainer(kValidSid, kName)); michael@0: EXPECT_EQ(SBOX_ERROR_GENERIC, CreateAppContainer(kValidSid, kName)); michael@0: EXPECT_EQ(kName, LookupAppContainer(kValidSid)); michael@0: EXPECT_EQ(SBOX_ALL_OK, DeleteAppContainer(kValidSid)); michael@0: michael@0: EXPECT_TRUE(LookupAppContainer(kValidSid).empty()); michael@0: EXPECT_EQ(SBOX_ERROR_GENERIC, DeleteAppContainer(kValidSid)); michael@0: michael@0: EXPECT_EQ(SBOX_ERROR_INVALID_APP_CONTAINER, michael@0: CreateAppContainer(L"Foo", kName)); michael@0: } michael@0: michael@0: // Tests handling of security capabilities on the attribute list. michael@0: TEST(AppContainerTest, SecurityCapabilities) { michael@0: if (base::win::OSInfo::GetInstance()->version() < base::win::VERSION_WIN8) michael@0: return; michael@0: michael@0: scoped_ptr attributes(new AppContainerAttributes); michael@0: std::vector capabilities; michael@0: EXPECT_EQ(SBOX_ERROR_INVALID_APP_CONTAINER, michael@0: attributes->SetAppContainer(L"S-1-foo", capabilities)); michael@0: michael@0: EXPECT_EQ(SBOX_ALL_OK, michael@0: attributes->SetAppContainer(L"S-1-15-2-12345-234", capabilities)); michael@0: EXPECT_TRUE(attributes->HasAppContainer()); michael@0: michael@0: attributes.reset(new AppContainerAttributes); michael@0: capabilities.push_back(L"S-1-15-3-12345678-87654321"); michael@0: capabilities.push_back(L"S-1-15-3-1"); michael@0: capabilities.push_back(L"S-1-15-3-2"); michael@0: capabilities.push_back(L"S-1-15-3-3"); michael@0: EXPECT_EQ(SBOX_ALL_OK, michael@0: attributes->SetAppContainer(L"S-1-15-2-1-2", capabilities)); michael@0: EXPECT_TRUE(attributes->HasAppContainer()); michael@0: } michael@0: michael@0: } // namespace sandbox