Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: test/FilterEngine.cpp

Issue 29508569: Issue 5450 - don't expose std::shared_ptr<JsEngine> (Closed) Base URL: https://github.com/adblockplus/libadblockplus.git
Patch Set: Created Aug. 7, 2017, 8:39 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « test/FileSystemJsObject.cpp ('k') | test/GlobalJsObject.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * This file is part of Adblock Plus <https://adblockplus.org/>, 2 * This file is part of Adblock Plus <https://adblockplus.org/>,
3 * Copyright (C) 2006-2017 eyeo GmbH 3 * Copyright (C) 2006-2017 eyeo GmbH
4 * 4 *
5 * Adblock Plus is free software: you can redistribute it and/or modify 5 * Adblock Plus is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 3 as 6 * it under the terms of the GNU General Public License version 3 as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
8 * 8 *
9 * Adblock Plus is distributed in the hope that it will be useful, 9 * Adblock Plus is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
(...skipping 30 matching lines...) Expand all
41 void Stat(const std::string& path, const StatCallback& callback) const overr ide 41 void Stat(const std::string& path, const StatCallback& callback) const overr ide
42 { 42 {
43 scheduler([callback] 43 scheduler([callback]
44 { 44 {
45 callback(StatResult(), ""); 45 callback(StatResult(), "");
46 }); 46 });
47 } 47 }
48 }; 48 };
49 49
50 template<class LazyFileSystemT, class LogSystem> 50 template<class LazyFileSystemT, class LogSystem>
51 class FilterEngineTestGeneric : public ::testing::Test 51 class FilterEngineTestGeneric : public BaseJsTest
52 { 52 {
53 protected: 53 protected:
54 std::unique_ptr<Platform> platform;
55 FilterEnginePtr filterEngine; 54 FilterEnginePtr filterEngine;
56 55
57 void SetUp() override 56 void SetUp() override
58 { 57 {
59 LazyFileSystemT* fileSystem; 58 LazyFileSystemT* fileSystem;
60 ThrowingPlatformCreationParameters platformParams; 59 ThrowingPlatformCreationParameters platformParams;
61 platformParams.logSystem.reset(new LogSystem()); 60 platformParams.logSystem.reset(new LogSystem());
62 platformParams.timer.reset(new NoopTimer()); 61 platformParams.timer.reset(new NoopTimer());
63 platformParams.fileSystem.reset(fileSystem = new LazyFileSystemT()); 62 platformParams.fileSystem.reset(fileSystem = new LazyFileSystemT());
64 platformParams.webRequest.reset(new NoopWebRequest()); 63 platformParams.webRequest.reset(new NoopWebRequest());
65 platform.reset(new Platform(std::move(platformParams))); 64 platform.reset(new Platform(std::move(platformParams)));
66 filterEngine = CreateFilterEngine(*fileSystem, *platform); 65 filterEngine = CreateFilterEngine(*fileSystem, *platform);
67 } 66 }
68 }; 67 };
69 68
70 typedef FilterEngineTestGeneric<LazyFileSystem, AdblockPlus::DefaultLogSystem> FilterEngineTest; 69 typedef FilterEngineTestGeneric<LazyFileSystem, AdblockPlus::DefaultLogSystem> FilterEngineTest;
71 typedef FilterEngineTestGeneric<NoFilesFileSystem, LazyLogSystem> FilterEngine TestNoData; 70 typedef FilterEngineTestGeneric<NoFilesFileSystem, LazyLogSystem> FilterEngine TestNoData;
72 71
73 class FilterEngineWithFreshFolder : public ::testing::Test 72 class FilterEngineWithFreshFolder : public BaseJsTest
74 { 73 {
75 protected: 74 protected:
76 std::unique_ptr<Platform> platform;
77 FileSystemPtr fileSystem; 75 FileSystemPtr fileSystem;
78 std::list<SchedulerTask> fileSystemTasks; 76 std::list<SchedulerTask> fileSystemTasks;
79 77
80 void SetUp() override 78 void SetUp() override
81 { 79 {
82 fileSystem = CreateDefaultFileSystem([this](const SchedulerTask& task) 80 fileSystem = CreateDefaultFileSystem([this](const SchedulerTask& task)
83 { 81 {
84 fileSystemTasks.emplace_back(task); 82 fileSystemTasks.emplace_back(task);
85 }); 83 });
86 // Since there is neither in memory FS nor functionality to work with 84 // Since there is neither in memory FS nor functionality to work with
(...skipping 25 matching lines...) Expand all
112 fileSystemTasks.pop_front(); 110 fileSystemTasks.pop_front();
113 } 111 }
114 return retValue; 112 return retValue;
115 } 113 }
116 114
117 void TearDown() override 115 void TearDown() override
118 { 116 {
119 removeFileIfExists("patterns.ini"); 117 removeFileIfExists("patterns.ini");
120 removeFileIfExists("prefs.json"); 118 removeFileIfExists("prefs.json");
121 fileSystem.reset(); 119 fileSystem.reset();
120 BaseJsTest::TearDown();
122 } 121 }
123 void removeFileIfExists(const std::string& path) 122 void removeFileIfExists(const std::string& path)
124 { 123 {
125 bool hasStatRun = false; 124 bool hasStatRun = false;
126 bool doesFileExists; 125 bool doesFileExists;
127 fileSystem->Stat(path, [&hasStatRun, &doesFileExists](const IFileSystem::S tatResult& stats, const std::string& error) 126 fileSystem->Stat(path, [&hasStatRun, &doesFileExists](const IFileSystem::S tatResult& stats, const std::string& error)
128 { 127 {
129 EXPECT_TRUE(error.empty()) << error; 128 EXPECT_TRUE(error.empty()) << error;
130 doesFileExists = stats.exists; 129 doesFileExists = stats.exists;
131 hasStatRun = true; 130 hasStatRun = true;
(...skipping 14 matching lines...) Expand all
146 hasRemoveRun = true; 145 hasRemoveRun = true;
147 }); 146 });
148 while (!hasStatRun && !fileSystemTasks.empty()) 147 while (!hasStatRun && !fileSystemTasks.empty())
149 { 148 {
150 (*fileSystemTasks.begin())(); 149 (*fileSystemTasks.begin())();
151 fileSystemTasks.pop_front(); 150 fileSystemTasks.pop_front();
152 } 151 }
153 } 152 }
154 }; 153 };
155 154
156 class FilterEngineIsSubscriptionDownloadAllowedTest : public ::testing::Test 155 class FilterEngineIsSubscriptionDownloadAllowedTest : public BaseJsTest
157 { 156 {
158 protected: 157 protected:
159 typedef std::vector<std::pair<bool, std::string>> ConnectionTypes; 158 typedef std::vector<std::pair<bool, std::string>> ConnectionTypes;
160 DelayedWebRequest::SharedTasks webRequestTasks; 159 DelayedWebRequest::SharedTasks webRequestTasks;
161 DelayedTimer::SharedTasks timerTasks; 160 DelayedTimer::SharedTasks timerTasks;
162 FilterEngine::CreationParameters createParams; 161 FilterEngine::CreationParameters createParams;
163 ConnectionTypes capturedConnectionTypes; 162 ConnectionTypes capturedConnectionTypes;
164 bool isConnectionAllowed; 163 bool isConnectionAllowed;
165 std::vector<std::function<void(bool)>> isSubscriptionDownloadAllowedCallback s; 164 std::vector<std::function<void(bool)>> isSubscriptionDownloadAllowedCallback s;
166 std::unique_ptr<Platform> platform;
167 FilterEnginePtr filterEngine; 165 FilterEnginePtr filterEngine;
168 LazyFileSystem* fileSystem; 166 LazyFileSystem* fileSystem;
169 167
170 void SetUp() 168 void SetUp()
171 { 169 {
172 isConnectionAllowed = true; 170 isConnectionAllowed = true;
173 171
174 ThrowingPlatformCreationParameters platformParams; 172 ThrowingPlatformCreationParameters platformParams;
175 platformParams.logSystem.reset(new LazyLogSystem()); 173 platformParams.logSystem.reset(new LazyLogSystem());
176 platformParams.timer = DelayedTimer::New(timerTasks); 174 platformParams.timer = DelayedTimer::New(timerTasks);
177 platformParams.fileSystem.reset(fileSystem = new LazyFileSystem()); 175 platformParams.fileSystem.reset(fileSystem = new LazyFileSystem());
178 platformParams.webRequest = DelayedWebRequest::New(webRequestTasks); 176 platformParams.webRequest = DelayedWebRequest::New(webRequestTasks);
179 platform.reset(new Platform(std::move(platformParams))); 177 platform.reset(new Platform(std::move(platformParams)));
180 178
181 createParams.preconfiguredPrefs.emplace("first_run_subscription_auto_selec t", platform->GetJsEngine()->NewValue(false)); 179 createParams.preconfiguredPrefs.emplace("first_run_subscription_auto_selec t", GetJsEngine().NewValue(false));
182 180
183 createParams.isSubscriptionDownloadAllowedCallback = [this](const std::str ing* allowedConnectionType, 181 createParams.isSubscriptionDownloadAllowedCallback = [this](const std::str ing* allowedConnectionType,
184 const std::function<void(bool)>& isSubscriptionDownloadAllowedCallback){ 182 const std::function<void(bool)>& isSubscriptionDownloadAllowedCallback){
185 capturedConnectionTypes.emplace_back(!!allowedConnectionType, allowedCon nectionType ? *allowedConnectionType : std::string()); 183 capturedConnectionTypes.emplace_back(!!allowedConnectionType, allowedCon nectionType ? *allowedConnectionType : std::string());
186 isSubscriptionDownloadAllowedCallbacks.emplace_back(isSubscriptionDownlo adAllowedCallback); 184 isSubscriptionDownloadAllowedCallbacks.emplace_back(isSubscriptionDownlo adAllowedCallback);
187 }; 185 };
188 } 186 }
189 187
190 Subscription EnsureExampleSubscriptionAndForceUpdate(const std::string& appp endToUrl = std::string()) 188 Subscription EnsureExampleSubscriptionAndForceUpdate(const std::string& appp endToUrl = std::string())
191 { 189 {
(...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after
702 ASSERT_NE(nullptr, aaSubscription); 700 ASSERT_NE(nullptr, aaSubscription);
703 ASSERT_NE(nullptr, langSubscription); 701 ASSERT_NE(nullptr, langSubscription);
704 EXPECT_EQ(langSubscriptionUrl, langSubscription->GetProperty("url").AsString() ); 702 EXPECT_EQ(langSubscriptionUrl, langSubscription->GetProperty("url").AsString() );
705 EXPECT_TRUE(filterEngine->IsAAEnabled()); 703 EXPECT_TRUE(filterEngine->IsAAEnabled());
706 } 704 }
707 705
708 TEST_F(FilterEngineWithFreshFolder, DisableSubscriptionsAutoSelectOnFirstRun) 706 TEST_F(FilterEngineWithFreshFolder, DisableSubscriptionsAutoSelectOnFirstRun)
709 { 707 {
710 InitPlatformAndAppInfo(); 708 InitPlatformAndAppInfo();
711 FilterEngine::CreationParameters createParams; 709 FilterEngine::CreationParameters createParams;
712 createParams.preconfiguredPrefs.emplace("first_run_subscription_auto_select", platform->GetJsEngine()->NewValue(false)); 710 createParams.preconfiguredPrefs.emplace("first_run_subscription_auto_select", GetJsEngine().NewValue(false));
713 auto filterEngine = CreateFilterEngine(createParams); 711 auto filterEngine = CreateFilterEngine(createParams);
714 const auto subscriptions = filterEngine->GetListedSubscriptions(); 712 const auto subscriptions = filterEngine->GetListedSubscriptions();
715 EXPECT_EQ(0u, subscriptions.size()); 713 EXPECT_EQ(0u, subscriptions.size());
716 EXPECT_FALSE(filterEngine->IsAAEnabled()); 714 EXPECT_FALSE(filterEngine->IsAAEnabled());
717 } 715 }
718 716
719 namespace AA_ApiTest 717 namespace AA_ApiTest
720 { 718 {
721 const std::string kOtherSubscriptionUrl = "https://non-existing-subscription.t xt"; 719 const std::string kOtherSubscriptionUrl = "https://non-existing-subscription.t xt";
722 enum class AAStatus 720 enum class AAStatus
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
991 auto subscription = EnsureExampleSubscriptionAndForceUpdate(); 989 auto subscription = EnsureExampleSubscriptionAndForceUpdate();
992 EXPECT_EQ("synchronize_connection_error", subscription.GetProperty("downloadSt atus").AsString()); 990 EXPECT_EQ("synchronize_connection_error", subscription.GetProperty("downloadSt atus").AsString());
993 EXPECT_EQ(0u, subscription.GetProperty("filters").AsList().size()); 991 EXPECT_EQ(0u, subscription.GetProperty("filters").AsList().size());
994 EXPECT_EQ(1u, capturedConnectionTypes.size()); 992 EXPECT_EQ(1u, capturedConnectionTypes.size());
995 } 993 }
996 994
997 TEST_F(FilterEngineIsSubscriptionDownloadAllowedTest, PredefinedAllowedConnectio nTypeIsPassedToCallback) 995 TEST_F(FilterEngineIsSubscriptionDownloadAllowedTest, PredefinedAllowedConnectio nTypeIsPassedToCallback)
998 { 996 {
999 std::string predefinedAllowedConnectionType = "non-metered"; 997 std::string predefinedAllowedConnectionType = "non-metered";
1000 createParams.preconfiguredPrefs.insert(std::make_pair("allowed_connection_type ", 998 createParams.preconfiguredPrefs.insert(std::make_pair("allowed_connection_type ",
1001 platform->GetJsEngine()->NewValue(predefinedAllowedConnectionType))); 999 GetJsEngine().NewValue(predefinedAllowedConnectionType)));
1002 auto subscription = EnsureExampleSubscriptionAndForceUpdate(); 1000 auto subscription = EnsureExampleSubscriptionAndForceUpdate();
1003 EXPECT_EQ("synchronize_ok", subscription.GetProperty("downloadStatus").AsStrin g()); 1001 EXPECT_EQ("synchronize_ok", subscription.GetProperty("downloadStatus").AsStrin g());
1004 EXPECT_EQ(1u, subscription.GetProperty("filters").AsList().size()); 1002 EXPECT_EQ(1u, subscription.GetProperty("filters").AsList().size());
1005 ASSERT_EQ(1u, capturedConnectionTypes.size()); 1003 ASSERT_EQ(1u, capturedConnectionTypes.size());
1006 EXPECT_TRUE(capturedConnectionTypes[0].first); 1004 EXPECT_TRUE(capturedConnectionTypes[0].first);
1007 EXPECT_EQ(predefinedAllowedConnectionType, capturedConnectionTypes[0].second); 1005 EXPECT_EQ(predefinedAllowedConnectionType, capturedConnectionTypes[0].second);
1008 } 1006 }
1009 1007
1010 TEST_F(FilterEngineIsSubscriptionDownloadAllowedTest, ConfiguredConnectionTypeIs PassedToCallback) 1008 TEST_F(FilterEngineIsSubscriptionDownloadAllowedTest, ConfiguredConnectionTypeIs PassedToCallback)
1011 { 1009 {
1012 // FilterEngine->RemoveSubscription is not usable here because subscriptions 1010 // FilterEngine->RemoveSubscription is not usable here because subscriptions
1013 // are cached internally by URL. So, different URLs are used in diffirent 1011 // are cached internally by URL. So, different URLs are used in diffirent
1014 // checks. 1012 // checks.
1015 { 1013 {
1016 std::string predefinedAllowedConnectionType = "non-metered"; 1014 std::string predefinedAllowedConnectionType = "non-metered";
1017 createParams.preconfiguredPrefs.insert(std::make_pair( 1015 createParams.preconfiguredPrefs.insert(std::make_pair(
1018 "allowed_connection_type", platform->GetJsEngine()->NewValue(predefinedAll owedConnectionType))); 1016 "allowed_connection_type", GetJsEngine().NewValue(predefinedAllowedConnect ionType)));
1019 auto subscription = EnsureExampleSubscriptionAndForceUpdate(); 1017 auto subscription = EnsureExampleSubscriptionAndForceUpdate();
1020 EXPECT_EQ("synchronize_ok", subscription.GetProperty("downloadStatus").AsStr ing()); 1018 EXPECT_EQ("synchronize_ok", subscription.GetProperty("downloadStatus").AsStr ing());
1021 EXPECT_EQ(1u, subscription.GetProperty("filters").AsList().size()); 1019 EXPECT_EQ(1u, subscription.GetProperty("filters").AsList().size());
1022 ASSERT_EQ(1u, capturedConnectionTypes.size()); 1020 ASSERT_EQ(1u, capturedConnectionTypes.size());
1023 EXPECT_TRUE(capturedConnectionTypes[0].first); 1021 EXPECT_TRUE(capturedConnectionTypes[0].first);
1024 EXPECT_EQ(predefinedAllowedConnectionType, capturedConnectionTypes[0].second ); 1022 EXPECT_EQ(predefinedAllowedConnectionType, capturedConnectionTypes[0].second );
1025 } 1023 }
1026 capturedConnectionTypes.clear(); 1024 capturedConnectionTypes.clear();
1027 { 1025 {
1028 // set no value 1026 // set no value
(...skipping 11 matching lines...) Expand all
1040 std::string testConnection = "test connection"; 1038 std::string testConnection = "test connection";
1041 filterEngine->SetAllowedConnectionType(&testConnection); 1039 filterEngine->SetAllowedConnectionType(&testConnection);
1042 auto subscription = EnsureExampleSubscriptionAndForceUpdate("subB"); 1040 auto subscription = EnsureExampleSubscriptionAndForceUpdate("subB");
1043 EXPECT_EQ("synchronize_ok", subscription.GetProperty("downloadStatus").AsStr ing()); 1041 EXPECT_EQ("synchronize_ok", subscription.GetProperty("downloadStatus").AsStr ing());
1044 EXPECT_EQ(1u, subscription.GetProperty("filters").AsList().size()); 1042 EXPECT_EQ(1u, subscription.GetProperty("filters").AsList().size());
1045 ASSERT_EQ(1u, capturedConnectionTypes.size()); 1043 ASSERT_EQ(1u, capturedConnectionTypes.size());
1046 EXPECT_TRUE(capturedConnectionTypes[0].first); 1044 EXPECT_TRUE(capturedConnectionTypes[0].first);
1047 EXPECT_EQ(testConnection, capturedConnectionTypes[0].second); 1045 EXPECT_EQ(testConnection, capturedConnectionTypes[0].second);
1048 } 1046 }
1049 } 1047 }
OLDNEW
« no previous file with comments | « test/FileSystemJsObject.cpp ('k') | test/GlobalJsObject.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld