Home | History | Annotate | Download | only in cloud
      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
     87