• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 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 "base/test/test_simple_task_runner.h"
6 #include "components/policy/core/common/cloud/policy_header_io_helper.h"
7 #include "net/http/http_request_headers.h"
8 #include "net/url_request/url_request_test_util.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10 
11 namespace policy {
12 
13 namespace {
14 const char kDMServerURL[] = "http://server_url";
15 const char kPolicyHeaderName[] = "Chrome-Policy-Posture";
16 const char kInitialPolicyHeader[] = "initial_header";
17 
18 class PolicyHeaderIOHelperTest : public testing::Test {
19  public:
PolicyHeaderIOHelperTest()20   PolicyHeaderIOHelperTest() {
21     task_runner_ = make_scoped_refptr(new base::TestSimpleTaskRunner());
22   }
~PolicyHeaderIOHelperTest()23   virtual ~PolicyHeaderIOHelperTest() {}
24 
SetUp()25   virtual void SetUp() OVERRIDE {
26     helper_ = make_scoped_ptr(new PolicyHeaderIOHelper(kDMServerURL,
27                                                        kInitialPolicyHeader,
28                                                        task_runner_));
29     task_runner_->RunUntilIdle();
30   }
TearDown()31   virtual void TearDown() OVERRIDE {
32     task_runner_->RunUntilIdle();
33     helper_.reset();
34   }
35 
ValidateHeader(const net::HttpRequestHeaders & headers,const std::string & expected)36   void ValidateHeader(const net::HttpRequestHeaders& headers,
37                       const std::string& expected) {
38     std::string header;
39     EXPECT_TRUE(headers.GetHeader(kPolicyHeaderName, &header));
40     EXPECT_EQ(header, expected);
41   }
42 
43   base::MessageLoop loop_;
44   scoped_ptr<PolicyHeaderIOHelper> helper_;
45   net::TestURLRequestContext context_;
46   scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
47 };
48 
49 }  // namespace
50 
TEST_F(PolicyHeaderIOHelperTest,InitialHeader)51 TEST_F(PolicyHeaderIOHelperTest, InitialHeader) {
52   net::TestURLRequest request(
53       GURL(kDMServerURL), net::DEFAULT_PRIORITY, NULL, &context_);
54   helper_->AddPolicyHeaders(request.url(), &request);
55   ValidateHeader(request.extra_request_headers(), kInitialPolicyHeader);
56 }
57 
TEST_F(PolicyHeaderIOHelperTest,NoHeaderOnNonMatchingURL)58 TEST_F(PolicyHeaderIOHelperTest, NoHeaderOnNonMatchingURL) {
59   net::TestURLRequest request(
60       GURL("http://non-matching.com"), net::DEFAULT_PRIORITY, NULL, &context_);
61   helper_->AddPolicyHeaders(request.url(), &request);
62   EXPECT_TRUE(request.extra_request_headers().IsEmpty());
63 }
64 
TEST_F(PolicyHeaderIOHelperTest,HeaderChange)65 TEST_F(PolicyHeaderIOHelperTest, HeaderChange) {
66   std::string new_header = "new_header";
67   helper_->UpdateHeader(new_header);
68   task_runner_->RunUntilIdle();
69   net::TestURLRequest request(
70       GURL(kDMServerURL), net::DEFAULT_PRIORITY, NULL, &context_);
71   helper_->AddPolicyHeaders(request.url(), &request);
72   ValidateHeader(request.extra_request_headers(), new_header);
73 }
74 
TEST_F(PolicyHeaderIOHelperTest,ChangeToNoHeader)75 TEST_F(PolicyHeaderIOHelperTest, ChangeToNoHeader) {
76   helper_->UpdateHeader("");
77   task_runner_->RunUntilIdle();
78   net::TestURLRequest request(
79       GURL(kDMServerURL), net::DEFAULT_PRIORITY, NULL, &context_);
80   helper_->AddPolicyHeaders(request.url(), &request);
81   EXPECT_TRUE(request.extra_request_headers().IsEmpty());
82 }
83 
84 }  // namespace policy
85