123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- // Copyright 2021 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "google_apis/calendar/calendar_api_requests.h"
- #include "base/run_loop.h"
- #include "base/strings/stringprintf.h"
- #include "base/test/task_environment.h"
- #include "base/time/time.h"
- #include "google_apis/calendar/calendar_api_response_types.h"
- #include "google_apis/common/dummy_auth_service.h"
- #include "google_apis/common/request_sender.h"
- #include "google_apis/common/test_util.h"
- #include "net/test/embedded_test_server/embedded_test_server.h"
- #include "net/test/embedded_test_server/http_request.h"
- #include "net/test/embedded_test_server/http_response.h"
- #include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
- #include "services/network/test/test_shared_url_loader_factory.h"
- #include "testing/gtest/include/gtest/gtest.h"
- namespace google_apis {
- namespace calendar {
- namespace {
- const char kTestUserAgent[] = "test-user-agent";
- }
- class CalendarApiRequestsTest : public testing::Test {
- public:
- CalendarApiRequestsTest()
- : test_shared_loader_factory_(
- base::MakeRefCounted<network::TestSharedURLLoaderFactory>(
- nullptr /* network_service */,
- true /* is_trusted */)) {}
- void SetUp() override {
- request_sender_ = std::make_unique<RequestSender>(
- std::make_unique<DummyAuthService>(), test_shared_loader_factory_,
- task_environment_.GetMainThreadTaskRunner(), kTestUserAgent,
- TRAFFIC_ANNOTATION_FOR_TESTS);
- test_server_.RegisterRequestHandler(
- base::BindRepeating(&CalendarApiRequestsTest::HandleDataFileRequest,
- base::Unretained(this)));
- ASSERT_TRUE(test_server_.Start());
- url_generator_ = std::make_unique<CalendarApiUrlGenerator>();
- url_generator_->SetBaseUrlForTesting(test_server_.base_url().spec());
- }
- void TearDown() override {
- // Deleting the sender here will delete all request objects.
- request_sender_.reset();
- // Wait for any DeleteSoon tasks to run.
- task_environment_.RunUntilIdle();
- }
- base::test::TaskEnvironment task_environment_{
- base::test::TaskEnvironment::MainThreadType::IO};
- net::EmbeddedTestServer test_server_;
- std::unique_ptr<RequestSender> request_sender_;
- std::unique_ptr<CalendarApiUrlGenerator> url_generator_;
- scoped_refptr<network::TestSharedURLLoaderFactory>
- test_shared_loader_factory_;
- net::test_server::HttpRequest http_request_;
- // Returns the mock calendar event list.
- std::unique_ptr<net::test_server::HttpResponse> HandleDataFileRequest(
- const net::test_server::HttpRequest& request) {
- http_request_ = request;
- // Return the response from the event json file.
- return test_util::CreateHttpResponseFromFile(
- test_util::GetTestFilePath("calendar/events.json"));
- }
- };
- // Tests the CalendarApiRequestsTest can generate the correct url and get the
- // correct response.
- TEST_F(CalendarApiRequestsTest, GetEventListRequest) {
- ApiErrorCode error = OTHER_ERROR;
- std::unique_ptr<EventList> events;
- base::Time start;
- base::Time end;
- EXPECT_TRUE(base::Time::FromString("13 Jun 2021 10:00 GMT", &start));
- EXPECT_TRUE(base::Time::FromString("16 Jun 2021 10:00 GMT", &end));
- {
- base::RunLoop run_loop;
- auto request = std::make_unique<CalendarApiEventsRequest>(
- request_sender_.get(), *url_generator_,
- test_util::CreateQuitCallback(
- &run_loop, test_util::CreateCopyResultCallback(&error, &events)),
- start, end);
- request_sender_->StartRequestWithAuthRetry(std::move(request));
- run_loop.Run();
- }
- EXPECT_EQ(HTTP_SUCCESS, error);
- EXPECT_EQ(net::test_server::METHOD_GET, http_request_.method);
- EXPECT_EQ(
- "/calendar/v3/calendars/primary/events"
- "?timeMin=2021-06-13T10%3A00%3A00.000Z"
- "&timeMax=2021-06-16T10%3A00%3A00.000Z"
- "&singleEvents=true"
- "&maxAttendees=1"
- "&fields=timeZone%2Cetag%2Ckind%2Citems(id%2Ckind%"
- "2Csummary%2CcolorId%2Cstatus%"
- "2Cstart(date)%2Cend(date)%"
- "2Cstart(dateTime)%2Cend(dateTime)%"
- "2ChtmlLink%2Cattendees(responseStatus%2Cself)%2CattendeesOmitted%"
- "2Ccreator(self))",
- http_request_.relative_url);
- ASSERT_TRUE(events.get());
- EXPECT_EQ(events->time_zone(), "America/Los_Angeles");
- base::Time::Exploded exploded;
- events->items()[0]->start_time().date_time().LocalExplode(&exploded);
- EXPECT_EQ(exploded.month, 11);
- }
- } // namespace calendar
- } // namespace google_apis
|