// Copyright 2006-2008 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/win/wmi.h" #include #include "base/win/scoped_com_initializer.h" #include "testing/gtest/include/gtest/gtest.h" using Microsoft::WRL::ComPtr; namespace base { namespace win { class WMITest : public ::testing::Test { private: ScopedCOMInitializer com_initializer; }; TEST_F(WMITest, TestLocalConnectionSecurityBlanket) { ComPtr wmi_services = nullptr; EXPECT_TRUE(CreateLocalWmiConnection(true, &wmi_services)); ASSERT_NE(wmi_services.Get(), nullptr); ULONG refs = wmi_services.Reset(); EXPECT_EQ(0u, refs); } TEST_F(WMITest, TestLocalConnectionNoSecurityBlanket) { ComPtr wmi_services = nullptr; EXPECT_TRUE(CreateLocalWmiConnection(false, &wmi_services)); ASSERT_NE(wmi_services.Get(), nullptr); ULONG refs = wmi_services.Reset(); EXPECT_EQ(0u, refs); } TEST_F(WMITest, TestCreateClassMethod) { ComPtr wmi_services = nullptr; EXPECT_TRUE(CreateLocalWmiConnection(true, &wmi_services)); ASSERT_NE(wmi_services.Get(), nullptr); ComPtr class_method = nullptr; EXPECT_TRUE(CreateWmiClassMethodObject( wmi_services.Get(), L"Win32_ShortcutFile", L"Rename", &class_method)); ASSERT_NE(class_method.Get(), nullptr); ULONG refs = class_method.Reset(); EXPECT_EQ(0u, refs); refs = wmi_services.Reset(); EXPECT_EQ(0u, refs); } // Creates an instance of cmd which executes 'echo' and exits immediately. TEST_F(WMITest, TestLaunchProcess) { int pid = 0; bool result = WmiLaunchProcess(L"cmd.exe /c echo excelent!", &pid); EXPECT_TRUE(result); EXPECT_GT(pid, 0); } TEST_F(WMITest, TestComputerSystemInfo) { WmiComputerSystemInfo info = WmiComputerSystemInfo::Get(); EXPECT_FALSE(info.serial_number().empty()); } } // namespace win } // namespace base