quic_in_memory_cache_test.cc revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
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 "net/tools/quic/quic_in_memory_cache.h"
6
7#include "base/files/file_path.h"
8#include "base/memory/singleton.h"
9#include "base/path_service.h"
10#include "net/tools/flip_server/balsa_headers.h"
11#include "testing/gtest/include/gtest/gtest.h"
12
13namespace net {
14namespace tools {
15namespace test {
16namespace {
17
18class QuicInMemoryCacheTest : public ::testing::Test {
19 protected:
20  QuicInMemoryCacheTest() {
21    base::FilePath path;
22    PathService::Get(base::DIR_SOURCE_ROOT, &path);
23    path = path.AppendASCII("net").AppendASCII("data")
24        .AppendASCII("quic_in_memory_cache_data");
25    // The file path is known to be an ascii string.
26    FLAGS_quic_in_memory_cache_dir = path.MaybeAsASCII();
27  }
28
29  void CreateRequest(std::string host,
30                     std::string path,
31                     net::BalsaHeaders* headers) {
32    headers->SetRequestFirstlineFromStringPieces("GET", path, "HTTP/1.1");
33    headers->ReplaceOrAppendHeader("host", host);
34  }
35};
36
37TEST_F(QuicInMemoryCacheTest, ReadsCacheDir) {
38  net::BalsaHeaders request_headers;
39  CreateRequest("quic.test.url", "/index.html", &request_headers);
40
41  const QuicInMemoryCache::Response* response =
42      QuicInMemoryCache::GetInstance()->GetResponse(request_headers);
43  ASSERT_TRUE(response);
44  std::string value;
45  response->headers().GetAllOfHeaderAsString("Connection", &value);
46  EXPECT_EQ("200", response->headers().response_code());
47  EXPECT_EQ("Keep-Alive", value);
48  EXPECT_LT(0U, response->body().length());
49}
50
51TEST_F(QuicInMemoryCacheTest, ReadsCacheDirHttp) {
52  net::BalsaHeaders request_headers;
53  CreateRequest("http://quic.test.url", "/index.html", &request_headers);
54
55  const QuicInMemoryCache::Response* response =
56      QuicInMemoryCache::GetInstance()->GetResponse(request_headers);
57  ASSERT_TRUE(response);
58  std::string value;
59  response->headers().GetAllOfHeaderAsString("Connection", &value);
60  EXPECT_EQ("200", response->headers().response_code());
61  EXPECT_EQ("Keep-Alive", value);
62  EXPECT_LT(0U, response->body().length());
63}
64
65TEST_F(QuicInMemoryCacheTest, GetResponseNoMatch) {
66  net::BalsaHeaders request_headers;
67  CreateRequest("www.google.com", "/index.html", &request_headers);
68
69  const QuicInMemoryCache::Response* response =
70      QuicInMemoryCache::GetInstance()->GetResponse(request_headers);
71  ASSERT_FALSE(response);
72}
73
74}  // namespace
75}  // namespace test
76}  // namespace tools
77}  // namespace net
78