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.
5 #include "base/memory/scoped_ptr.h"
6 #include "base/test/test_simple_task_runner.h"
7 #include "components/policy/core/common/cloud/policy_header_io_helper.h"
8 #include "net/http/http_request_headers.h"
9 #include "net/url_request/url_request.h"
10 #include "net/url_request/url_request_test_util.h"
11 #include "testing/gtest/include/gtest/gtest.h"
16 const char kDMServerURL[] = "http://server_url";
17 const char kPolicyHeaderName[] = "Chrome-Policy-Posture";
18 const char kInitialPolicyHeader[] = "initial_header";
20 class PolicyHeaderIOHelperTest : public testing::Test {
22 PolicyHeaderIOHelperTest() {
23 task_runner_ = make_scoped_refptr(new base::TestSimpleTaskRunner());
25 virtual ~PolicyHeaderIOHelperTest() {}
27 virtual void SetUp() OVERRIDE {
28 helper_ = make_scoped_ptr(new PolicyHeaderIOHelper(kDMServerURL,
31 task_runner_->RunUntilIdle();
33 virtual void TearDown() OVERRIDE {
34 task_runner_->RunUntilIdle();
38 void ValidateHeader(const net::HttpRequestHeaders& headers,
39 const std::string& expected) {
41 EXPECT_TRUE(headers.GetHeader(kPolicyHeaderName, &header));
42 EXPECT_EQ(header, expected);
45 base::MessageLoop loop_;
46 scoped_ptr<PolicyHeaderIOHelper> helper_;
47 net::TestURLRequestContext context_;
48 scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
53 TEST_F(PolicyHeaderIOHelperTest, InitialHeader) {
54 scoped_ptr<net::URLRequest> request(context_.CreateRequest(
55 GURL(kDMServerURL), net::DEFAULT_PRIORITY, NULL, NULL));
56 helper_->AddPolicyHeaders(request->url(), request.get());
57 ValidateHeader(request->extra_request_headers(), kInitialPolicyHeader);
60 TEST_F(PolicyHeaderIOHelperTest, NoHeaderOnNonMatchingURL) {
61 scoped_ptr<net::URLRequest> request(context_.CreateRequest(
62 GURL("http://non-matching.com"), net::DEFAULT_PRIORITY, NULL, NULL));
63 helper_->AddPolicyHeaders(request->url(), request.get());
64 EXPECT_TRUE(request->extra_request_headers().IsEmpty());
67 TEST_F(PolicyHeaderIOHelperTest, HeaderChange) {
68 std::string new_header = "new_header";
69 helper_->UpdateHeader(new_header);
70 task_runner_->RunUntilIdle();
71 scoped_ptr<net::URLRequest> request(context_.CreateRequest(
72 GURL(kDMServerURL), net::DEFAULT_PRIORITY, NULL, NULL));
73 helper_->AddPolicyHeaders(request->url(), request.get());
74 ValidateHeader(request->extra_request_headers(), new_header);
77 TEST_F(PolicyHeaderIOHelperTest, ChangeToNoHeader) {
78 helper_->UpdateHeader("");
79 task_runner_->RunUntilIdle();
80 scoped_ptr<net::URLRequest> request(context_.CreateRequest(
81 GURL(kDMServerURL), net::DEFAULT_PRIORITY, NULL, NULL));
82 helper_->AddPolicyHeaders(request->url(), request.get());
83 EXPECT_TRUE(request->extra_request_headers().IsEmpty());