Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1062)

Unified Diff: components/update_client/request_sender_unittest.cc

Issue 1685323002: Implement CUP signing in UpdateClient. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase and remove duplicated code comment. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/update_client/request_sender.cc ('k') | components/update_client/test_configurator.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/update_client/request_sender_unittest.cc
diff --git a/components/update_client/request_sender_unittest.cc b/components/update_client/request_sender_unittest.cc
index 527eb261a11147c2ecb2803bc938e73982a54766..5132fd9e92b28fd3c55c832dbbe97050c39f2fa6 100644
--- a/components/update_client/request_sender_unittest.cc
+++ b/components/update_client/request_sender_unittest.cc
@@ -6,6 +6,7 @@
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
#include "base/run_loop.h"
+#include "base/strings/string_util.h"
#include "base/thread_task_runner_handle.h"
#include "components/update_client/request_sender.h"
#include "components/update_client/test_configurator.h"
@@ -22,6 +23,17 @@ const char kUrl2[] = "https://localhost2/path2";
const char kUrlPath1[] = "path1";
const char kUrlPath2[] = "path2";
+// TODO(sorin): refactor as a utility function for unit tests.
+base::FilePath test_file(const char* file) {
+ base::FilePath path;
+ PathService::Get(base::DIR_SOURCE_ROOT, &path);
+ return path.AppendASCII("components")
+ .AppendASCII("test")
+ .AppendASCII("data")
+ .AppendASCII("update_client")
+ .AppendASCII(file);
+}
+
} // namespace
class RequestSenderTest : public testing::Test {
@@ -33,7 +45,7 @@ class RequestSenderTest : public testing::Test {
void SetUp() override;
void TearDown() override;
- void RequestSenderComplete(const net::URLFetcher* source);
+ void RequestSenderComplete(int error, const std::string& response);
protected:
void Quit();
@@ -47,7 +59,8 @@ class RequestSenderTest : public testing::Test {
URLRequestPostInterceptor* post_interceptor_1_; // Owned by the factory.
URLRequestPostInterceptor* post_interceptor_2_; // Owned by the factory.
- const net::URLFetcher* url_fetcher_source_;
+ int error_;
+ std::string response_;
private:
base::MessageLoopForIO loop_;
@@ -57,13 +70,9 @@ class RequestSenderTest : public testing::Test {
};
RequestSenderTest::RequestSenderTest()
- : post_interceptor_1_(nullptr),
- post_interceptor_2_(nullptr),
- url_fetcher_source_(nullptr) {
-}
+ : post_interceptor_1_(nullptr), post_interceptor_2_(nullptr), error_(0) {}
-RequestSenderTest::~RequestSenderTest() {
-}
+RequestSenderTest::~RequestSenderTest() {}
void RequestSenderTest::SetUp() {
config_ = new TestConfigurator(base::ThreadTaskRunnerHandle::Get(),
@@ -114,21 +123,25 @@ void RequestSenderTest::Quit() {
quit_closure_.Run();
}
-void RequestSenderTest::RequestSenderComplete(const net::URLFetcher* source) {
- url_fetcher_source_ = source;
+void RequestSenderTest::RequestSenderComplete(int error,
+ const std::string& response) {
+ error_ = error;
+ response_ = response;
+
Quit();
}
// Tests that when a request to the first url succeeds, the subsequent urls are
// not tried.
TEST_F(RequestSenderTest, RequestSendSuccess) {
- EXPECT_TRUE(post_interceptor_1_->ExpectRequest(new PartialMatch("test")));
+ EXPECT_TRUE(post_interceptor_1_->ExpectRequest(
+ new PartialMatch("test"), test_file("updatecheck_reply_1.xml")));
std::vector<GURL> urls;
urls.push_back(GURL(kUrl1));
urls.push_back(GURL(kUrl2));
request_sender_.reset(new RequestSender(config_));
- request_sender_->Send("test", urls,
+ request_sender_->Send(false, "test", urls,
base::Bind(&RequestSenderTest::RequestSenderComplete,
base::Unretained(this)));
RunThreads();
@@ -138,9 +151,15 @@ TEST_F(RequestSenderTest, RequestSendSuccess) {
EXPECT_EQ(1, post_interceptor_1_->GetCount())
<< post_interceptor_1_->GetRequestsAsString();
+ // Sanity check the request.
EXPECT_STREQ("test", post_interceptor_1_->GetRequests()[0].c_str());
- EXPECT_EQ(GURL(kUrl1), url_fetcher_source_->GetOriginalURL());
- EXPECT_EQ(200, url_fetcher_source_->GetResponseCode());
+
+ // Check the response post conditions.
+ EXPECT_EQ(0, error_);
+ EXPECT_TRUE(base::StartsWith(response_,
+ "<?xml version='1.0' encoding='UTF-8'?>",
+ base::CompareCase::SENSITIVE));
+ EXPECT_EQ(443ul, response_.size());
}
// Tests that the request succeeds using the second url after the first url
@@ -154,7 +173,7 @@ TEST_F(RequestSenderTest, RequestSendSuccessWithFallback) {
urls.push_back(GURL(kUrl1));
urls.push_back(GURL(kUrl2));
request_sender_.reset(new RequestSender(config_));
- request_sender_->Send("test", urls,
+ request_sender_->Send(false, "test", urls,
base::Bind(&RequestSenderTest::RequestSenderComplete,
base::Unretained(this)));
RunThreads();
@@ -170,8 +189,7 @@ TEST_F(RequestSenderTest, RequestSendSuccessWithFallback) {
EXPECT_STREQ("test", post_interceptor_1_->GetRequests()[0].c_str());
EXPECT_STREQ("test", post_interceptor_2_->GetRequests()[0].c_str());
- EXPECT_EQ(GURL(kUrl2), url_fetcher_source_->GetOriginalURL());
- EXPECT_EQ(200, url_fetcher_source_->GetResponseCode());
+ EXPECT_EQ(0, error_);
}
// Tests that the request fails when both urls have failed.
@@ -185,7 +203,7 @@ TEST_F(RequestSenderTest, RequestSendFailed) {
urls.push_back(GURL(kUrl1));
urls.push_back(GURL(kUrl2));
request_sender_.reset(new RequestSender(config_));
- request_sender_->Send("test", urls,
+ request_sender_->Send(false, "test", urls,
base::Bind(&RequestSenderTest::RequestSenderComplete,
base::Unretained(this)));
RunThreads();
@@ -201,20 +219,42 @@ TEST_F(RequestSenderTest, RequestSendFailed) {
EXPECT_STREQ("test", post_interceptor_1_->GetRequests()[0].c_str());
EXPECT_STREQ("test", post_interceptor_2_->GetRequests()[0].c_str());
- EXPECT_EQ(GURL(kUrl2), url_fetcher_source_->GetOriginalURL());
- EXPECT_EQ(403, url_fetcher_source_->GetResponseCode());
+ EXPECT_EQ(403, error_);
}
// Tests that the request fails when no urls are provided.
TEST_F(RequestSenderTest, RequestSendFailedNoUrls) {
std::vector<GURL> urls;
request_sender_.reset(new RequestSender(config_));
- request_sender_->Send("test", urls,
+ request_sender_->Send(false, "test", urls,
+ base::Bind(&RequestSenderTest::RequestSenderComplete,
+ base::Unretained(this)));
+ RunThreads();
+
+ EXPECT_EQ(-1, error_);
+}
+
+// Tests that a CUP request fails if the response is not signed.
+TEST_F(RequestSenderTest, RequestSendCupError) {
+ EXPECT_TRUE(post_interceptor_1_->ExpectRequest(
+ new PartialMatch("test"), test_file("updatecheck_reply_1.xml")));
+
+ std::vector<GURL> urls;
+ urls.push_back(GURL(kUrl1));
+ request_sender_.reset(new RequestSender(config_));
+ request_sender_->Send(true, "test", urls,
base::Bind(&RequestSenderTest::RequestSenderComplete,
base::Unretained(this)));
RunThreads();
- EXPECT_EQ(nullptr, url_fetcher_source_);
+ EXPECT_EQ(1, post_interceptor_1_->GetHitCount())
+ << post_interceptor_1_->GetRequestsAsString();
+ EXPECT_EQ(1, post_interceptor_1_->GetCount())
+ << post_interceptor_1_->GetRequestsAsString();
+
+ EXPECT_STREQ("test", post_interceptor_1_->GetRequests()[0].c_str());
+ EXPECT_EQ(RequestSender::kErrorResponseNotTrusted, error_);
+ EXPECT_TRUE(response_.empty());
}
} // namespace update_client
« no previous file with comments | « components/update_client/request_sender.cc ('k') | components/update_client/test_configurator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698