Skip to content

Commit dd873b1

Browse files
committed
Fixes contribution that is split
Resolves brave/brave-browser#8828
1 parent 752af0d commit dd873b1

File tree

11 files changed

+323
-60
lines changed

11 files changed

+323
-60
lines changed

components/brave_rewards/browser/rewards_service_browsertest.cc

+146-57
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,14 @@ namespace brave_test_resp {
142142
std::string uphold_auth_resp_;
143143
std::string uphold_transactions_resp_;
144144
std::string uphold_commit_resp_;
145+
146+
std::string contribution_;
147+
std::string reconcile_;
148+
std::string current_reconcile_;
149+
std::string register_;
150+
std::string register_credential_;
151+
std::string surveyor_voting_;
152+
std::string surveyor_voting_credential_;
145153
} // namespace brave_test_resp
146154

147155
class BraveRewardsBrowserTest
@@ -391,6 +399,30 @@ class BraveRewardsBrowserTest
391399
braveledger_uphold::GetAPIUrl("/v0/me"),
392400
base::CompareCase::INSENSITIVE_ASCII)) {
393401
*response = GetUpholdUser();
402+
} else if (URLMatches(url, WALLET_PROPERTIES, PREFIX_V2,
403+
ServerTypes::LEDGER)) {
404+
GURL gurl(url);
405+
if (gurl.has_query()) {
406+
*response = brave_test_resp::reconcile_;
407+
} else {
408+
*response = brave_test_resp::current_reconcile_;
409+
}
410+
411+
} else if (URLMatches(url, RECONCILE_CONTRIBUTION, PREFIX_V2,
412+
ServerTypes::LEDGER)) {
413+
*response = brave_test_resp::contribution_;
414+
} else if (URLMatches(url, REGISTER_VIEWING, PREFIX_V2,
415+
ServerTypes::LEDGER)) {
416+
if (url.find(REGISTER_VIEWING "/") != std::string::npos)
417+
*response = brave_test_resp::register_credential_;
418+
else
419+
*response = brave_test_resp::register_;
420+
} else if (URLMatches(url, SURVEYOR_BATCH_VOTING, PREFIX_V2,
421+
ServerTypes::LEDGER)) {
422+
if (url.find(SURVEYOR_BATCH_VOTING "/") != std::string::npos)
423+
*response = brave_test_resp::surveyor_voting_credential_;
424+
else
425+
*response = brave_test_resp::surveyor_voting_;
394426
}
395427
}
396428

@@ -456,6 +488,16 @@ class BraveRewardsBrowserTest
456488
wait_for_multiple_tip_completed_loop_->Run();
457489
}
458490

491+
void WaitForMultipleACReconcileCompleted(int32_t needed) {
492+
multiple_ac_reconcile_needed_ = needed;
493+
if (multiple_ac_reconcile_completed_) {
494+
return;
495+
}
496+
497+
wait_for_multiple_ac_completed_loop_.reset(new base::RunLoop);
498+
wait_for_multiple_ac_completed_loop_->Run();
499+
}
500+
459501
void WaitForInsufficientFundsNotification() {
460502
if (insufficient_notification_would_have_already_shown_) {
461503
return;
@@ -711,6 +753,26 @@ class BraveRewardsBrowserTest
711753
ASSERT_TRUE(base::ReadFileToString(
712754
path.AppendASCII("uphold_commit_resp.json"),
713755
&brave_test_resp::uphold_commit_resp_));
756+
757+
ASSERT_TRUE(
758+
base::ReadFileToString(path.AppendASCII("contribution_resp.json"),
759+
&brave_test_resp::contribution_));
760+
ASSERT_TRUE(base::ReadFileToString(path.AppendASCII("reconcile_resp.json"),
761+
&brave_test_resp::reconcile_));
762+
ASSERT_TRUE(
763+
base::ReadFileToString(path.AppendASCII("current_reconcile_resp.json"),
764+
&brave_test_resp::current_reconcile_));
765+
ASSERT_TRUE(base::ReadFileToString(path.AppendASCII("register_resp.json"),
766+
&brave_test_resp::register_));
767+
ASSERT_TRUE(base::ReadFileToString(
768+
path.AppendASCII("register_credential_resp.json"),
769+
&brave_test_resp::register_credential_));
770+
ASSERT_TRUE(
771+
base::ReadFileToString(path.AppendASCII("surveyor_voting_resp.json"),
772+
&brave_test_resp::surveyor_voting_));
773+
ASSERT_TRUE(base::ReadFileToString(
774+
path.AppendASCII("surveyor_voting_credential_resp.json"),
775+
&brave_test_resp::surveyor_voting_credential_));
714776
}
715777

716778
void UpdateContributionBalance(double amount, bool verified = false) {
@@ -1349,6 +1411,17 @@ class BraveRewardsBrowserTest
13491411
if (wait_for_ac_completed_loop_) {
13501412
wait_for_ac_completed_loop_->Quit();
13511413
}
1414+
1415+
// Multiple ac
1416+
multiple_ac_reconcile_count_++;
1417+
multiple_ac_reconcile_status_.push_back(converted_result);
1418+
1419+
if (multiple_ac_reconcile_count_ == multiple_ac_reconcile_needed_) {
1420+
multiple_ac_reconcile_completed_ = true;
1421+
if (wait_for_multiple_ac_completed_loop_) {
1422+
wait_for_multiple_ac_completed_loop_->Quit();
1423+
}
1424+
}
13521425
}
13531426

13541427
if (converted_type == ledger::RewardsType::ONE_TIME_TIP ||
@@ -1484,6 +1557,22 @@ class BraveRewardsBrowserTest
14841557
UpdateContributionBalance(amount, should_contribute);
14851558
}
14861559

1560+
void SetUpUpholdWallet(
1561+
const double balance,
1562+
const ledger::WalletStatus status = ledger::WalletStatus::VERIFIED) {
1563+
verified_wallet_ = true;
1564+
external_balance_ = balance;
1565+
1566+
auto wallet = ledger::ExternalWallet::New();
1567+
wallet->token = "token";
1568+
wallet->address = external_wallet_address_;
1569+
wallet->status = status;
1570+
wallet->one_time_string = "";
1571+
wallet->user_name = "Brave Test";
1572+
wallet->transferred = true;
1573+
rewards_service()->SaveExternalWallet("uphold", std::move(wallet));
1574+
}
1575+
14871576
MOCK_METHOD1(OnGetEnvironment, void(ledger::Environment));
14881577
MOCK_METHOD1(OnGetDebug, void(bool));
14891578
MOCK_METHOD1(OnGetReconcileTime, void(int32_t));
@@ -1511,8 +1600,16 @@ class BraveRewardsBrowserTest
15111600
bool ac_reconcile_completed_ = false;
15121601
ledger::Result ac_reconcile_status_ = ledger::Result::LEDGER_ERROR;
15131602
std::unique_ptr<base::RunLoop> wait_for_tip_completed_loop_;
1603+
1604+
std::unique_ptr<base::RunLoop> wait_for_multiple_ac_completed_loop_;
1605+
bool multiple_ac_reconcile_completed_ = false;
1606+
int32_t multiple_ac_reconcile_count_ = 0;
1607+
int32_t multiple_ac_reconcile_needed_ = 0;
1608+
std::vector<ledger::Result> multiple_ac_reconcile_status_;
1609+
15141610
bool tip_reconcile_completed_ = false;
15151611
ledger::Result tip_reconcile_status_ = ledger::Result::LEDGER_ERROR;
1612+
15161613
std::unique_ptr<base::RunLoop> wait_for_multiple_tip_completed_loop_;
15171614
bool multiple_tip_reconcile_completed_ = false;
15181615
int32_t multiple_tip_reconcile_count_ = 0;
@@ -1541,7 +1638,6 @@ class BraveRewardsBrowserTest
15411638
double verified_wallet_ = false;
15421639
const std::string external_wallet_address_ =
15431640
"abe5f454-fedd-4ea9-9203-470ae7315bb3";
1544-
bool first_url_ac_called_ = false;
15451641
};
15461642

15471643
IN_PROC_BROWSER_TEST_F(BraveRewardsBrowserTest, RenderWelcome) {
@@ -2050,7 +2146,6 @@ IN_PROC_BROWSER_TEST_F(BraveRewardsBrowserTest, AutoContributeWhenACOff) {
20502146

20512147
// Trigger contribution process
20522148
rewards_service()->StartMonthlyContributionForTest();
2053-
ASSERT_FALSE(first_url_ac_called_);
20542149
}
20552150

20562151
// #6 - Tip verified publisher
@@ -2659,17 +2754,7 @@ IN_PROC_BROWSER_TEST_F(BraveRewardsBrowserTest,
26592754

26602755
IN_PROC_BROWSER_TEST_F(BraveRewardsBrowserTest,
26612756
TipWithVerifiedWallet) {
2662-
verified_wallet_ = true;
2663-
external_balance_ = 50.0;
2664-
2665-
auto wallet = ledger::ExternalWallet::New();
2666-
wallet->token = "token";
2667-
wallet->address = external_wallet_address_;
2668-
wallet->status = ledger::WalletStatus::VERIFIED;
2669-
wallet->one_time_string = "";
2670-
wallet->user_name = "Brave Test";
2671-
wallet->transferred = true;
2672-
rewards_service()->SaveExternalWallet("uphold", std::move(wallet));
2757+
SetUpUpholdWallet(50.0);
26732758

26742759
// Enable Rewards
26752760
EnableRewards();
@@ -2689,17 +2774,7 @@ IN_PROC_BROWSER_TEST_F(BraveRewardsBrowserTest,
26892774

26902775
IN_PROC_BROWSER_TEST_F(BraveRewardsBrowserTest,
26912776
MultipleTipsProduceMultipleFeesWithVerifiedWallet) {
2692-
verified_wallet_ = true;
2693-
external_balance_ = 50.0;
2694-
2695-
auto wallet = ledger::ExternalWallet::New();
2696-
wallet->token = "token";
2697-
wallet->address = external_wallet_address_;
2698-
wallet->status = ledger::WalletStatus::VERIFIED;
2699-
wallet->one_time_string = "";
2700-
wallet->user_name = "Brave Test";
2701-
wallet->transferred = true;
2702-
rewards_service()->SaveExternalWallet("uphold", std::move(wallet));
2777+
SetUpUpholdWallet(50.0);
27032778

27042779
// Enable Rewards
27052780
EnableRewards();
@@ -2760,17 +2835,7 @@ IN_PROC_BROWSER_TEST_F(BraveRewardsBrowserTest, TipConnectedPublisherAnon) {
27602835
IN_PROC_BROWSER_TEST_F(
27612836
BraveRewardsBrowserTest,
27622837
TipConnectedPublisherAnonAndConnected) {
2763-
verified_wallet_ = true;
2764-
external_balance_ = 50.0;
2765-
2766-
auto wallet = ledger::ExternalWallet::New();
2767-
wallet->token = "token";
2768-
wallet->address = external_wallet_address_;
2769-
wallet->status = ledger::WalletStatus::CONNECTED;
2770-
wallet->one_time_string = "";
2771-
wallet->user_name = "Brave Test";
2772-
wallet->transferred = true;
2773-
rewards_service()->SaveExternalWallet("uphold", std::move(wallet));
2838+
SetUpUpholdWallet(50.0);
27742839

27752840
// Enable Rewards
27762841
EnableRewards();
@@ -2793,17 +2858,7 @@ IN_PROC_BROWSER_TEST_F(
27932858
IN_PROC_BROWSER_TEST_F(
27942859
BraveRewardsBrowserTest,
27952860
TipConnectedPublisherConnected) {
2796-
verified_wallet_ = true;
2797-
external_balance_ = 50.0;
2798-
2799-
auto wallet = ledger::ExternalWallet::New();
2800-
wallet->token = "token";
2801-
wallet->address = external_wallet_address_;
2802-
wallet->status = ledger::WalletStatus::CONNECTED;
2803-
wallet->one_time_string = "";
2804-
wallet->user_name = "Brave Test";
2805-
wallet->transferred = true;
2806-
rewards_service()->SaveExternalWallet("uphold", std::move(wallet));
2861+
SetUpUpholdWallet(50.0, ledger::WalletStatus::CONNECTED);
28072862

28082863
// Enable Rewards
28092864
EnableRewards();
@@ -2827,17 +2882,7 @@ IN_PROC_BROWSER_TEST_F(
28272882
IN_PROC_BROWSER_TEST_F(
28282883
BraveRewardsBrowserTest,
28292884
TipConnectedPublisherVerified) {
2830-
verified_wallet_ = true;
2831-
external_balance_ = 50.0;
2832-
2833-
auto wallet = ledger::ExternalWallet::New();
2834-
wallet->token = "token";
2835-
wallet->address = external_wallet_address_;
2836-
wallet->status = ledger::WalletStatus::VERIFIED;
2837-
wallet->one_time_string = "";
2838-
wallet->user_name = "Brave Test";
2839-
wallet->transferred = true;
2840-
rewards_service()->SaveExternalWallet("uphold", std::move(wallet));
2885+
SetUpUpholdWallet(50.0);
28412886

28422887
// Enable Rewards
28432888
EnableRewards();
@@ -3033,3 +3078,47 @@ IN_PROC_BROWSER_TEST_F(BraveRewardsBrowserTest, ShowMonthlyIfACOff) {
30333078

30343079
WaitForSelector(popup_contents, "#panel-donate-monthly");
30353080
}
3081+
3082+
IN_PROC_BROWSER_TEST_F(
3083+
BraveRewardsBrowserTest,
3084+
SplitProcessorAutoContribution) {
3085+
SetUpUpholdWallet(50.0);
3086+
3087+
EnableRewards();
3088+
3089+
// Claim promotion using panel (30BAT)
3090+
const bool use_panel = true;
3091+
ClaimPromotion(use_panel);
3092+
3093+
VisitPublisher("3zsistemi.si", true);
3094+
3095+
// 30 form unblinded and 20 from uphold
3096+
rewards_service()->SetContributionAmount(50.0);
3097+
3098+
// Trigger contribution process
3099+
rewards_service()->StartMonthlyContributionForTest();
3100+
3101+
// Wait for reconciliation to complete successfully
3102+
WaitForMultipleACReconcileCompleted(2);
3103+
ASSERT_EQ(multiple_ac_reconcile_status_[0], ledger::Result::LEDGER_OK);
3104+
ASSERT_EQ(multiple_ac_reconcile_status_[1], ledger::Result::LEDGER_OK);
3105+
3106+
// Check monthly report
3107+
ASSERT_TRUE(ExecJs(contents(),
3108+
"document.querySelector(\"[data-test-id='showMonthlyReport']\").click();",
3109+
content::EXECUTE_SCRIPT_DEFAULT_OPTIONS,
3110+
content::ISOLATED_WORLD_ID_CONTENT_END));
3111+
3112+
3113+
WaitForSelector(contents(), "#transactionTable");
3114+
3115+
ASSERT_NE(ElementInnerText("#transactionTable").find("-30.0BAT"),
3116+
std::string::npos);
3117+
3118+
ASSERT_NE(ElementInnerText("#transactionTable").find("-20.0BAT"),
3119+
std::string::npos);
3120+
3121+
// Check that summary table shows the appropriate contribution
3122+
ASSERT_NE(ElementInnerText("[color=contribute]").find("-50.0BAT"),
3123+
std::string::npos);
3124+
}

components/brave_rewards/resources/ui/components/modalActivity/index.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ export default class ModalActivity extends React.PureComponent<Props, State> {
185185

186186
return (
187187
<TableTransactions
188+
id={'transactionTable'}
188189
rows={transactionRows}
189190
>
190191
{getLocale('noActivity')}

components/brave_rewards/resources/ui/components/walletSummary/index.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ export default class WalletSummary extends React.PureComponent<Props, {}> {
193193
</div>
194194
{
195195
onActivity
196-
? <StyledActivity onClick={onActivity}>
196+
? <StyledActivity onClick={onActivity} data-test-id={'showMonthlyReport'}>
197197
<StyledActivityIcon>
198198
<WalletInfoIcon />
199199
</StyledActivityIcon>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"signature":"28a00fb8a4b663b9a6e38e8e712a3df, iay57CDbWSG9Y2z39QVgx0nSSexW4OAWwjQdBuq+EN 4BaXMtejRWXjKZ17aAfWLkj08t8ClSQCXFUo0QPkQvL 1 CdbDycAPfzVRsfT3p3jH8pdyFjuW1cySuu68jcovI0n 3p+RP29bqtPgACqJn98xWhUepfoV1ZQ2o4LfTOyHY9H\n",
3+
"payload":{
4+
"adFree":{
5+
"fee":{
6+
"USD":5
7+
},
8+
"votes":100,
9+
"altcurrency":"BAT",
10+
"probi":"25000000000000000000"
11+
}
12+
},
13+
"surveyorId":"FuznYc8NaAXt+At2S+DdaM/rsEyHWd3vFpLpbCLm/z7",
14+
"surveyVK":"==========ANONLOGIN_VK_BEG==========\n6SWJBmkQXkPm1/0Sge4ezHWVXRCtdbGFwcb5XZnjEH2 O4cvn69IzJiH5znUsFK45e4KNoccd4vHmtaozGQgEj 1\n2MHE1Qepdw64bc69nN58JDslzeI36AHr5VfRQfmB/VC 6xtkMq6YI56oVETjouerencG2CJ4pP1Y0PPEPWAyi84 1\n6belVbSubm7yHJFFD5JIz8BwCUBGzHawZH/ILqiSZGh 6r6Rpi8hGcQWa+regtXCtzx5uJI+BG3dzln6/DuKVGe 1\n9XqLkmga7sBZRBeESqNIs2HlUr71C7VQ13mG1Ias2W mg+JzzbVuJKLYABVE975tWtKT0o7dxJOBk16zUdNhc 1\n8yNeactDzb+RTNHNIrQSsvT00wEDP0cRdMkrD0vQW5A 4tga6SJf+aU3ewRmEa2+azykll3d77VTsfvTCVFbNWb y3h8BC+KIIU54hv02sISKzRpSMN3kam1sFfY6Dp2Xq 31AENnYtE0dGLqMhr0t+pDKx/dPJ1rO4hncDfqfaj2Z 1 0\n===========ANONLOGIN_VK_END==========",
15+
"registrarVK":"==========ANONLOGIN_VK_BEG==========\nx3EmZXFb2jD7OocZz6l7o638S45k2kKrX5BrWp1Ox+ ANJXSauJVPNHKl/mmakFwxbkwJkJzfXe+c9+jxFtuX6 1\n5xMuqWE8J7HIHbW/UEJwFELYjTWRF10x7LMd7s46MVT 4DC6LqGM8zLz1pCsHA3qab48gkpeiQpNZAdb9owFvU6 1\n1tADCD6LdrEDQQDhRy1ijjAfhV9uKwlKKuhD6xXyPAZ BLOzUy+ZZh48riPnAHnUGal+ceCclccZXmoXXx92WHW 1\n7VRDst4U4iaT/9QNCwajEaqgRNtKPV1Dp5QuMjP019h HucbxBMGGAZBNLXGzfKsTlF+wAdmOFAvBRAo8i2Azd 1\n5SLk8SphICEkF+CNhN5g7IX2ih+Tb6w14LLlwupKw7y 96ANsdHzg0pwo2DDWOyAh1YPnION196pIT9xwISFZTA 3ef5G5d2c8cctdK4LuaxlSeEf1OZ100Sy5un5EjuHJB 77yFnY61GM7PHd6q3TLs2QS6c9PfrXD2idxaFq2DMd 1 0\n===========ANONLOGIN_VK_END=========="
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"paymentStamp":1551325017004,
3+
"probi":"1000000000000000000",
4+
"altcurrency":"BAT"
5+
}

0 commit comments

Comments
 (0)