10529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 20529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Use of this source code is governed by a BSD-style license that can be 30529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// found in the LICENSE file. 40529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 50529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "chrome/installer/util/legacy_firewall_manager_win.h" 60529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 70529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "base/path_service.h" 80529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "base/process/process_handle.h" 90529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "testing/gtest/include/gtest/gtest.h" 100529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 110529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochnamespace installer { 120529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 130529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass LegacyFirewallManagerTest : public ::testing::Test { 140529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch public: 150529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch LegacyFirewallManagerTest() : skip_test_(true) {} 160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 170529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch protected: 180529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // Sets up the test fixture. 190529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch virtual void SetUp() OVERRIDE { 200529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch base::IntegrityLevel level = base::INTEGRITY_UNKNOWN; 210529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch if (GetProcessIntegrityLevel(base::GetCurrentProcessHandle(), &level) && 220529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch level != base::HIGH_INTEGRITY) { 230529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch LOG(WARNING) << "Not elevated. Skipping the test."; 240529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch return; 250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch }; 260529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch skip_test_ = false; 270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch base::FilePath exe_path; 280529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch PathService::Get(base::FILE_EXE, &exe_path); 290529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_TRUE(manager_.Init(L"LegacyFirewallManagerTest", exe_path)); 300529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch manager_.DeleteRule(); 310529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch } 320529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 330529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // Tears down the test fixture. 340529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch virtual void TearDown() OVERRIDE { 350529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch if (!skip_test_) 360529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch manager_.DeleteRule(); 370529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch } 380529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 390529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch bool skip_test_; 400529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch LegacyFirewallManager manager_; 410529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 420529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch private: 430529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch DISALLOW_COPY_AND_ASSIGN(LegacyFirewallManagerTest); 440529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}; 450529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 460529e5d033099cbfc42635f6f6183833b09dff6eBen MurdochTEST_F(LegacyFirewallManagerTest, NoRule) { 470529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch if (skip_test_) 480529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch return; 490529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_FALSE(manager_.GetAllowIncomingConnection(NULL)); 500529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch} 510529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 520529e5d033099cbfc42635f6f6183833b09dff6eBen MurdochTEST_F(LegacyFirewallManagerTest, AllowRule) { 530529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch if (skip_test_) 540529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch return; 550529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_TRUE(manager_.SetAllowIncomingConnection(true)); 560529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch bool allowed = false; 570529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_TRUE(manager_.GetAllowIncomingConnection(&allowed)); 580529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_TRUE(allowed); 590529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch manager_.DeleteRule(); 600529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_FALSE(manager_.GetAllowIncomingConnection(NULL)); 610529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch} 620529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 630529e5d033099cbfc42635f6f6183833b09dff6eBen MurdochTEST_F(LegacyFirewallManagerTest, BlockRule) { 640529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch if (skip_test_) 650529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch return; 660529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_TRUE(manager_.SetAllowIncomingConnection(false)); 670529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch bool allowed = true; 680529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_TRUE(manager_.GetAllowIncomingConnection(&allowed)); 690529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_FALSE(allowed); 700529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch manager_.DeleteRule(); 710529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_FALSE(manager_.GetAllowIncomingConnection(NULL)); 720529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch} 730529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 740529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch} // namespace installer 75