Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / components / policy / core / common / cloud / policy_header_io_helper_unittest.cc
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/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"
12
13 namespace policy {
14
15 namespace {
16 const char kDMServerURL[] = "http://server_url";
17 const char kPolicyHeaderName[] = "Chrome-Policy-Posture";
18 const char kInitialPolicyHeader[] = "initial_header";
19
20 class PolicyHeaderIOHelperTest : public testing::Test {
21  public:
22   PolicyHeaderIOHelperTest() {
23     task_runner_ = make_scoped_refptr(new base::TestSimpleTaskRunner());
24   }
25   virtual ~PolicyHeaderIOHelperTest() {}
26
27   virtual void SetUp() OVERRIDE {
28     helper_ = make_scoped_ptr(new PolicyHeaderIOHelper(kDMServerURL,
29                                                        kInitialPolicyHeader,
30                                                        task_runner_));
31     task_runner_->RunUntilIdle();
32   }
33   virtual void TearDown() OVERRIDE {
34     task_runner_->RunUntilIdle();
35     helper_.reset();
36   }
37
38   void ValidateHeader(const net::HttpRequestHeaders& headers,
39                       const std::string& expected) {
40     std::string header;
41     EXPECT_TRUE(headers.GetHeader(kPolicyHeaderName, &header));
42     EXPECT_EQ(header, expected);
43   }
44
45   base::MessageLoop loop_;
46   scoped_ptr<PolicyHeaderIOHelper> helper_;
47   net::TestURLRequestContext context_;
48   scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
49 };
50
51 }  // namespace
52
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);
58 }
59
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());
65 }
66
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);
75 }
76
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());
84 }
85
86 }  // namespace policy