| // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // This file contains unit tests for the sid class. |
| |
| #define _ATL_NO_EXCEPTIONS |
| #include <atlbase.h> |
| #include <atlsecurity.h> |
| |
| #include "sandbox/win/src/sid.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace sandbox { |
| |
| // Calls ::EqualSid. This function exists only to simplify the calls to |
| // ::EqualSid by removing the need to cast the input params. |
| BOOL EqualSid(const SID *sid1, const SID *sid2) { |
| return ::EqualSid(const_cast<SID*>(sid1), const_cast<SID*>(sid2)); |
| } |
| |
| // Tests the creation if a Sid |
| TEST(SidTest, Constructors) { |
| ATL::CSid sid_world = ATL::Sids::World(); |
| SID *sid_world_pointer = const_cast<SID*>(sid_world.GetPSID()); |
| |
| // Check the SID* constructor |
| Sid sid_sid_star(sid_world_pointer); |
| ASSERT_TRUE(EqualSid(sid_world_pointer, sid_sid_star.GetPSID())); |
| |
| // Check the copy constructor |
| Sid sid_copy(sid_sid_star); |
| ASSERT_TRUE(EqualSid(sid_world_pointer, sid_copy.GetPSID())); |
| |
| // Note that the WELL_KNOWN_SID_TYPE constructor is tested in the GetPSID |
| // test. |
| } |
| |
| // Tests the method GetPSID |
| TEST(SidTest, GetPSID) { |
| // Check for non-null result; |
| ASSERT_NE(static_cast<SID*>(NULL), Sid(::WinLocalSid).GetPSID()); |
| ASSERT_NE(static_cast<SID*>(NULL), Sid(::WinCreatorOwnerSid).GetPSID()); |
| ASSERT_NE(static_cast<SID*>(NULL), Sid(::WinBatchSid).GetPSID()); |
| |
| ASSERT_TRUE(EqualSid(Sid(::WinNullSid).GetPSID(), |
| ATL::Sids::Null().GetPSID())); |
| |
| ASSERT_TRUE(EqualSid(Sid(::WinWorldSid).GetPSID(), |
| ATL::Sids::World().GetPSID())); |
| |
| ASSERT_TRUE(EqualSid(Sid(::WinDialupSid).GetPSID(), |
| ATL::Sids::Dialup().GetPSID())); |
| |
| ASSERT_TRUE(EqualSid(Sid(::WinNetworkSid).GetPSID(), |
| ATL::Sids::Network().GetPSID())); |
| |
| ASSERT_TRUE(EqualSid(Sid(::WinBuiltinAdministratorsSid).GetPSID(), |
| ATL::Sids::Admins().GetPSID())); |
| |
| ASSERT_TRUE(EqualSid(Sid(::WinBuiltinUsersSid).GetPSID(), |
| ATL::Sids::Users().GetPSID())); |
| |
| ASSERT_TRUE(EqualSid(Sid(::WinBuiltinGuestsSid).GetPSID(), |
| ATL::Sids::Guests().GetPSID())); |
| |
| ASSERT_TRUE(EqualSid(Sid(::WinProxySid).GetPSID(), |
| ATL::Sids::Proxy().GetPSID())); |
| } |
| |
| } // namespace sandbox |