summaryrefslogtreecommitdiffstats
path: root/rlz/lib/rlz_lib_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'rlz/lib/rlz_lib_test.cc')
-rw-r--r--rlz/lib/rlz_lib_test.cc67
1 files changed, 57 insertions, 10 deletions
diff --git a/rlz/lib/rlz_lib_test.cc b/rlz/lib/rlz_lib_test.cc
index f21c540..10cf3de 100644
--- a/rlz/lib/rlz_lib_test.cc
+++ b/rlz/lib/rlz_lib_test.cc
@@ -19,6 +19,7 @@
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
+#include "rlz/lib/financial_ping.h"
#include "rlz/lib/rlz_lib.h"
#include "rlz/lib/rlz_value_store.h"
#include "rlz/test/rlz_test_helpers.h"
@@ -416,6 +417,16 @@ TEST_F(RlzLibTest, ParsePingResponseWithStatefulEvents) {
EXPECT_STREQ("events=W1I", value);
}
+class URLRequestRAII {
+ public:
+ URLRequestRAII(net::URLRequestContextGetter* context) {
+ rlz_lib::SetURLRequestContext(context);
+ }
+ ~URLRequestRAII() {
+ rlz_lib::SetURLRequestContext(NULL);
+ }
+};
+
TEST_F(RlzLibTest, SendFinancialPing) {
// We don't really check a value or result in this test. All this does is
// attempt to ping the financial server, which you can verify in Fiddler.
@@ -437,16 +448,6 @@ TEST_F(RlzLibTest, SendFinancialPing) {
io_thread.message_loop()->message_loop_proxy());
rlz_lib::SetURLRequestContext(context.get());
- class URLRequestRAII {
- public:
- URLRequestRAII(net::URLRequestContextGetter* context) {
- rlz_lib::SetURLRequestContext(context);
- }
- ~URLRequestRAII() {
- rlz_lib::SetURLRequestContext(NULL);
- }
- };
-
URLRequestRAII set_context(context.get());
#endif
@@ -474,6 +475,52 @@ TEST_F(RlzLibTest, SendFinancialPing) {
/*skip_time_check=*/true);
}
+#if defined(RLZ_NETWORK_IMPLEMENTATION_CHROME_NET)
+
+void ResetContext() {
+ rlz_lib::SetURLRequestContext(NULL);
+}
+
+TEST_F(RlzLibTest, SendFinancialPingDuringShutdown) {
+ // rlz_lib::SendFinancialPing fails when this is set.
+ if (!rlz_lib::SupplementaryBranding::GetBrand().empty())
+ return;
+
+#if defined(OS_MACOSX)
+ base::mac::ScopedNSAutoreleasePool pool;
+#endif
+
+ base::Thread::Options options;
+ options.message_loop_type = base::MessageLoop::TYPE_IO;
+
+ base::Thread io_thread("rlz_unittest_io_thread");
+ ASSERT_TRUE(io_thread.StartWithOptions(options));
+
+ scoped_refptr<net::TestURLRequestContextGetter> context =
+ new net::TestURLRequestContextGetter(
+ io_thread.message_loop()->message_loop_proxy());
+ rlz_lib::SetURLRequestContext(context.get());
+
+ URLRequestRAII set_context(context.get());
+
+ rlz_lib::AccessPoint points[] =
+ {rlz_lib::IETB_SEARCH_BOX, rlz_lib::NO_ACCESS_POINT,
+ rlz_lib::NO_ACCESS_POINT};
+ rlz_lib::test::ResetSendFinancialPingInterrupted();
+ EXPECT_FALSE(rlz_lib::test::WasSendFinancialPingInterrupted());
+
+ base::MessageLoop loop;
+ loop.PostTask(FROM_HERE, base::Bind(&ResetContext));
+ std::string request;
+ EXPECT_FALSE(rlz_lib::SendFinancialPing(rlz_lib::TOOLBAR_NOTIFIER, points,
+ "swg", "GGLA", "SwgProductId1234", "en-UK", false,
+ /*skip_time_check=*/true));
+
+ EXPECT_TRUE(rlz_lib::test::WasSendFinancialPingInterrupted());
+ rlz_lib::test::ResetSendFinancialPingInterrupted();
+}
+#endif
+
TEST_F(RlzLibTest, ClearProductState) {
MachineDealCodeHelper::Clear();