1// Copyright 2014 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 "chrome/installer/util/legacy_firewall_manager_win.h" 6 7#include "base/path_service.h" 8#include "base/process/process_handle.h" 9#include "testing/gtest/include/gtest/gtest.h" 10 11namespace installer { 12 13class LegacyFirewallManagerTest : public ::testing::Test { 14 public: 15 LegacyFirewallManagerTest() : skip_test_(true) {} 16 17 protected: 18 // Sets up the test fixture. 19 virtual void SetUp() OVERRIDE { 20 base::IntegrityLevel level = base::INTEGRITY_UNKNOWN; 21 if (GetProcessIntegrityLevel(base::GetCurrentProcessHandle(), &level) && 22 level != base::HIGH_INTEGRITY) { 23 LOG(WARNING) << "Not elevated. Skipping the test."; 24 return; 25 }; 26 skip_test_ = false; 27 base::FilePath exe_path; 28 PathService::Get(base::FILE_EXE, &exe_path); 29 EXPECT_TRUE(manager_.Init(L"LegacyFirewallManagerTest", exe_path)); 30 manager_.DeleteRule(); 31 } 32 33 // Tears down the test fixture. 34 virtual void TearDown() OVERRIDE { 35 if (!skip_test_) 36 manager_.DeleteRule(); 37 } 38 39 bool skip_test_; 40 LegacyFirewallManager manager_; 41 42 private: 43 DISALLOW_COPY_AND_ASSIGN(LegacyFirewallManagerTest); 44}; 45 46TEST_F(LegacyFirewallManagerTest, NoRule) { 47 if (skip_test_) 48 return; 49 EXPECT_FALSE(manager_.GetAllowIncomingConnection(NULL)); 50} 51 52TEST_F(LegacyFirewallManagerTest, AllowRule) { 53 if (skip_test_) 54 return; 55 EXPECT_TRUE(manager_.SetAllowIncomingConnection(true)); 56 bool allowed = false; 57 EXPECT_TRUE(manager_.GetAllowIncomingConnection(&allowed)); 58 EXPECT_TRUE(allowed); 59 manager_.DeleteRule(); 60 EXPECT_FALSE(manager_.GetAllowIncomingConnection(NULL)); 61} 62 63TEST_F(LegacyFirewallManagerTest, BlockRule) { 64 if (skip_test_) 65 return; 66 EXPECT_TRUE(manager_.SetAllowIncomingConnection(false)); 67 bool allowed = true; 68 EXPECT_TRUE(manager_.GetAllowIncomingConnection(&allowed)); 69 EXPECT_FALSE(allowed); 70 manager_.DeleteRule(); 71 EXPECT_FALSE(manager_.GetAllowIncomingConnection(NULL)); 72} 73 74} // namespace installer 75