Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes duplicate/bad confirmations retry logic #5260

Merged
merged 1 commit into from
Apr 17, 2020
Merged

Fixes duplicate/bad confirmations retry logic #5260

merged 1 commit into from
Apr 17, 2020

Conversation

tmancey
Copy link
Collaborator

@tmancey tmancey commented Apr 15, 2020

Resolves brave/brave-browser#9242

Submitter Checklist:

Test Plan:

@LaurenWags @btlechowski @kjozwiak If you could please check the below test plan, thanks

Pre-requisites:

  • Import "Issues 9242" Charles Proxy rewrite settings

Test Case 1 (Create confirmation fails with 400 BAD REQUEST):

  • Disable "Issues 9242" rewrite rule in Charles Proxy under Tools > Rewrite
  • Launch Brave Browser (Fresh install)
  • Enable Rewards
  • Wait for "Added 50 unblinded tokens, you now have 50 unblinded tokens" to appear in the console log
  • Enable "/v1/confirmation//" location in Charles Proxy under Tools > Rewrite > "Issues 9242" (disable all other locations)
  • Enable "Status 201 -> 400" action in Charles Proxy under Tools > Rewrite > "Issues 9242" (disable all other actions)
  • View an ad

EXPECTED RESULT: "Duplicate/bad confirmation" and "GET /v1/confirmation/{confirmation_id}/paymentToken" should appear in the console log

Test Case 2 (Create confirmation fails with 500 INTERNAL SERVER ERROR):

  • Disable "Issues 9242" rewrite rule in Charles Proxy under Tools > Rewrite
  • Launch Brave Browser (Fresh install)
  • Enable Rewards
  • Wait for "Added 50 unblinded tokens, you now have 50 unblinded tokens" to appear in the console log
  • Enable "/v1/confirmation//" location in Charles Proxy under Tools > Rewrite > "Issues 9242" (disable all other locations)
  • Enable "Status 201 -> 500" action in Charles Proxy under Tools > Rewrite > "Issues 9242" (disable all other actions)
  • View an ad

EXPECTED RESULT: "GET /v1/confirmation/{confirmation_id}/paymentToken" should appear in the console log

Test Case 3 (Create confirmation succeeds with 201 CREATED):

  • Disable "Issues 9242" rewrite rule in Charles Proxy under Tools > Rewrite
  • Launch Brave Browser (Fresh install)
  • Enable Rewards
  • Wait for "Added 50 unblinded tokens, you now have 50 unblinded tokens" to appear in the console log
  • View an ad

EXPECTED RESULT: "GET /v1/confirmation/{confirmation_id}/paymentToken" should appear in the console log

Test Case 4 (Fetch payment token fails with 404 NOT FOUND):

  • Disable "Issues 9242" rewrite rule in Charles Proxy under Tools > Rewrite
  • Launch Brave Browser (Fresh install)
  • Enable Rewards
  • Wait for "Added 50 unblinded tokens, you now have 50 unblinded tokens" to appear in the console log
  • Enable "/v1/confirmation/*/paymentToken" location in Charles Proxy under Tools > Rewrite > "Issues 9242" (disable all other locations)
  • Enable "Status 200 -> 404" action in Charles Proxy under Tools > Rewrite > "Issues 9242" (disable all other actions)
  • View an ad
  • Make a copy of "Default/rewards_service/confirmations.json"
  • Search for "Retry failed confirmations at" in the console log and wait for the event to be triggered

EXPECTED RESULT: Compare confirmations > failed_confirmations in Default/rewards_service/confirmations.json against the copy you made of this file to confirm a new confirmation is created and added to the retry queue

  • Disable "Issues 9242" rewrite rule in Charles Proxy under Tools > Rewrite
  • Search for "Retry failed confirmations at" in the console log and wait for the event to be triggered

EXPECTED RESULT: Failed confirmation should retry and "Successfully redeemed" should appear in the console log

Test Case 5 (Fetch payment token fails with 500 INTERNAL SERVER ERROR):

  • Disable "Issues 9242" rewrite rule in Charles Proxy under Tools > Rewrite
  • Launch Brave Browser (Fresh install)
  • Enable Rewards
  • Wait for "Added 50 unblinded tokens, you now have 50 unblinded tokens" to appear in the console log
  • Enable "/v1/confirmation/*/paymentToken" location in Charles Proxy under Tools > Rewrite > "Issues 9242" (disable all other locations)
  • Enable "Status 200 -> 500" action in Charles Proxy under Tools > Rewrite > "Issues 9242" (disable all other actions)
  • View an ad
  • Make a copy of "Default/rewards_service/confirmations.json"
  • Search for "Retry failed confirmations at" in the console log and wait for the event to be t-triggered

EXPECTED RESULT: Compare confirmations > failed_confirmations in Default/rewards_service/confirmations.json against the copy you made of this file to confirm the failed confirmation is re-added to the retry queue

Test Case 6

  • Confirm that tokens are refilled when running low (19 tokens or less)

Test Case 7 (Fetch payment token succeeds with 200 OK):

  • Disable "Issues 9242" rewrite rule in Charles Proxy under Tools > Rewrite
  • Launch Brave Browser (Fresh install)
  • Enable Rewards
  • Wait for "Added 50 unblinded tokens, you now have 50 unblinded tokens" to appear in the console log
  • View an ad

EXPECTED RESULT: "Successfully redeemed" should appear in the console log

Reviewer Checklist:

  • New files have MPL-2.0 license header.
  • Request a security/privacy review as needed.
  • Adequate test coverage exists to prevent regressions
  • Verify test plan is specified in PR before merging to source

After-merge Checklist:

  • The associated issue milestone is set to the smallest version that the
    changes has landed on.
  • All relevant documentation has been updated.

@tmancey tmancey added this to the 1.9.x - Nightly milestone Apr 15, 2020
@tmancey tmancey self-assigned this Apr 15, 2020
@tmancey tmancey changed the title Fixes duplicate confirmations should not retry when creating a confirmation Fixes duplicate/bad confirmations should not retry when creating a confirmation Apr 15, 2020
@tmancey tmancey force-pushed the issues/9242 branch 4 times, most recently from a3e91af to 960bd27 Compare April 16, 2020 00:24
@tmancey tmancey changed the title Fixes duplicate/bad confirmations should not retry when creating a confirmation Fixes duplicate/bad confirmations logic Apr 16, 2020
@tmancey tmancey changed the title Fixes duplicate/bad confirmations logic Fixes duplicate/bad confirmations retry logic Apr 16, 2020
@tmancey tmancey force-pushed the issues/9242 branch 3 times, most recently from 6a8e942 to d949299 Compare April 16, 2020 00:59
Copy link
Contributor

@emerick emerick left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, just had one comment

@tmancey tmancey force-pushed the issues/9242 branch 2 times, most recently from 3817e52 to 406227a Compare April 16, 2020 14:08
@kjozwiak
Copy link
Member

kjozwiak commented Apr 17, 2020

Restarting Linux due to the following failures. Looks like there was some issues with the Linux spot instance:

15:05:02  Cannot contact linux-spot-1: hudson.remoting.ChannelClosedException: Channel "hudson.remoting.Channel@30f72769:linux-spot-1": Remote call on linux-spot-1 failed. The channel is closing down or has closed down
15:27:33  Cannot contact linux-spot-1: hudson.remoting.ChannelClosedException: Channel "hudson.remoting.Channel@6008a387:linux-spot-1": Remote call on linux-spot-1 failed. The channel is closing down or has closed down

macOS failed on test-browser as per https://ci.brave.com/job/brave-browser-build-pr/job/issues%252F9242/11/execution/node/582/log/ but I believe this is an intermittent issue that's been occurring on several other PRs from time to time. I don't think we need to restart macOS.

15:04:33  [  FAILED  ] BraveRewardsBrowserTest.NotVerifiedWallet, where TypeParam =  and GetParam() =  (6087 ms)
15:04:33  [540/540] BraveRewardsBrowserTest.NotVerifiedWallet (6335 ms)
15:04:33  1 test failed:
15:04:33      BraveRewardsBrowserTest.NotVerifiedWallet (../../brave/components/brave_rewards/browser/rewards_service_browsertest.cc:2326)

Restarting Win due to init failing as per https://ci.brave.com/job/brave-browser-build-pr/job/issues%252F9242/11/execution/node/247/log/.

@kjozwiak kjozwiak added CI/skip-android Do not run CI builds for Android CI/skip-ios Do not run CI builds for iOS CI/skip-macos-x64 Do not run CI builds for macOS x64 labels Apr 17, 2020
@tmancey tmancey merged commit 34e158c into master Apr 17, 2020
@tmancey tmancey deleted the issues/9242 branch April 17, 2020 08:41
@btlechowski
Copy link

LGTM

Verification passed on

Brave 1.9.30 Chromium: 81.0.4044.113 (Official Build) nightly (64-bit)
Revision cf9d66371ea608e227eed56ccba3abc2701bd23d-refs/branch-heads/4044@{#936}
OS Ubuntu 18.04 LTS

Verified Test Case 1 (Create confirmation fails with 400 BAD REQUEST):

[32020:32020:0417/162224.464895:INFO:redeem_token.cc(149)] OnCreateConfirmation
[32020:32020:0417/162224.464929:INFO:redeem_token.cc(153)]   Response Status Code: 400
[32020:32020:0417/162224.464934:INFO:redeem_token.cc(154)]   Response: {"id":"406a2f16-ffa8-43af-a271-eeaa1f9e2d78","payload":{},"createdAt":"2020-04-17T14:22:31.932Z","type":"view","modifiedAt":"2020-04-17T14:22:31.932Z","creativeInstanceId":"36c84fcb-6388-45d8-81ed-5a5d986cd7ef"}
[32020:32020:0417/162224.464940:INFO:redeem_token.cc(155)]   Headers:
[32020:32020:0417/162224.464946:INFO:redeem_token.cc(157)]     accept-ranges: bytes
[32020:32020:0417/162224.464951:INFO:redeem_token.cc(157)]     access-control-allow-origin: *
[32020:32020:0417/162224.464956:INFO:redeem_token.cc(157)]     cache-control: no-cache
[32020:32020:0417/162224.464960:INFO:redeem_token.cc(157)]     content-length: 211
[32020:32020:0417/162224.464965:INFO:redeem_token.cc(157)]     content-type: application/json; charset=utf-8
[32020:32020:0417/162224.464971:INFO:redeem_token.cc(157)]     date: Fri, 17 Apr 2020 14:22:32 GMT
[32020:32020:0417/162224.464975:INFO:redeem_token.cc(157)]     expires: 0
[32020:32020:0417/162224.464980:INFO:redeem_token.cc(157)]     status: 400
[32020:32020:0417/162224.464985:INFO:redeem_token.cc(157)]     via: 1.1 varnish
[32020:32020:0417/162224.464990:INFO:redeem_token.cc(157)]     x-cache: MISS
[32020:32020:0417/162224.464994:INFO:redeem_token.cc(157)]     x-cache-hits: 0
[32020:32020:0417/162224.464999:INFO:redeem_token.cc(157)]     x-powered-by: Express
[32020:32020:0417/162224.465004:INFO:redeem_token.cc(157)]     x-served-by: cache-ams21054-AMS
[32020:32020:0417/162224.465009:WARNING:redeem_token.cc(164)] Duplicate/bad confirmation
[32020:32020:0417/162224.465016:INFO:redeem_token.cc(177)] FetchPaymentToken
[32020:32020:0417/162224.465021:INFO:redeem_token.cc(179)] GET /v1/confirmation/{confirmation_id}/paymentToken

Test Case 2 (Create confirmation fails with 500 INTERNAL SERVER ERROR):

[2440:2440:0417/184134.842778:INFO:redeem_token.cc(149)] OnCreateConfirmation
[2440:2440:0417/184134.842803:INFO:redeem_token.cc(151)] URL Request Response:
[2440:2440:0417/184134.842809:INFO:redeem_token.cc(152)]   URL: https://ads-serve.bravesoftware.com/v1/confirmation/f992e108-4e1c-42fb-8f83-2c7188590917/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwiQm1FajNTMnNEMThSTmtHWGp5NlREMTlackNwZFFzeHpNaW9JNy9ibXFHVT1cIixcImNyZWF0aXZlSW5zdGFuY2VJZFwiOlwiMGQ4N2RkNzEtZWNhNS00NjkxLTlkYmMtZmE3ZWViOTU4MGRiXCIsXCJwYXlsb2FkXCI6e30sXCJ0eXBlXCI6XCJ2aWV3XCJ9Iiwic2lnbmF0dXJlIjoiaHFXRHh4ekJUQm9GSEc2RTUyaml4ZmlhTnlGaVpNaVpCSVB6eEVtclJhM3JsazFiZWN0QksrKzBmV2NHNmJUSTlVa1hSTTRrQVQ0Z29xY09XYzZaV1E9PSIsInQiOiJUTFZGUldieGYrN2xnL1Y5N0pudFdOKzBNdTJBNDVMclpUbHpJU0Vod0s2cTdld1lTMHpXMUpUWUxlOUFONjhkQ0J4Y2NNNzB1RkJwelBlZXdnN0Zpdz09In0=
[2440:2440:0417/184134.842817:INFO:redeem_token.cc(153)]   Response Status Code: 500
[2440:2440:0417/184134.842822:INFO:redeem_token.cc(154)]   Response: {"id":"f992e108-4e1c-42fb-8f83-2c7188590917","payload":{},"createdAt":"2020-04-17T16:41:45.292Z","type":"view","modifiedAt":"2020-04-17T16:41:45.292Z","creativeInstanceId":"0d87dd71-eca5-4691-9dbc-fa7eeb9580db"}
[2440:2440:0417/184134.842828:INFO:redeem_token.cc(155)]   Headers:
[2440:2440:0417/184134.842833:INFO:redeem_token.cc(157)]     accept-ranges: bytes
[2440:2440:0417/184134.842839:INFO:redeem_token.cc(157)]     access-control-allow-origin: *
[2440:2440:0417/184134.842844:INFO:redeem_token.cc(157)]     cache-control: no-cache
[2440:2440:0417/184134.842848:INFO:redeem_token.cc(157)]     content-length: 211
[2440:2440:0417/184134.842853:INFO:redeem_token.cc(157)]     content-type: application/json; charset=utf-8
[2440:2440:0417/184134.842859:INFO:redeem_token.cc(157)]     date: Fri, 17 Apr 2020 16:41:45 GMT
[2440:2440:0417/184134.842864:INFO:redeem_token.cc(157)]     expires: 0
[2440:2440:0417/184134.842868:INFO:redeem_token.cc(157)]     status: 500
[2440:2440:0417/184134.842873:INFO:redeem_token.cc(157)]     via: 1.1 varnish
[2440:2440:0417/184134.842878:INFO:redeem_token.cc(157)]     x-cache: MISS
[2440:2440:0417/184134.842883:INFO:redeem_token.cc(157)]     x-cache-hits: 0
[2440:2440:0417/184134.842888:INFO:redeem_token.cc(157)]     x-powered-by: Express
[2440:2440:0417/184134.842893:INFO:redeem_token.cc(157)]     x-served-by: cache-ams21049-AMS
[2440:2440:0417/184134.842899:INFO:redeem_token.cc(177)] FetchPaymentToken
[2440:2440:0417/184134.842904:INFO:redeem_token.cc(179)] GET /v1/confirmation/{confirmation_id}/paymentToken

Test Case 3 (Create confirmation succeeds with 201 CREATED):

[3269:3269:0417/191331.944023:INFO:redeem_token.cc(149)] OnCreateConfirmation
[3269:3269:0417/191331.944060:INFO:redeem_token.cc(151)] URL Request Response:
[3269:3269:0417/191331.944070:INFO:redeem_token.cc(152)]   URL: https://ads-serve.bravesoftware.com/v1/confirmation/3031c939-5496-4f38-adcf-eccadb283b54/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwiY2lSbVNtWXpNcFY1ZTR2YzBXQVVHb3Y3S29ZYWpjaUs5ZGFqNC9FWm1rZz1cIixcImNyZWF0aXZlSW5zdGFuY2VJZFwiOlwiMGQ4N2RkNzEtZWNhNS00NjkxLTlkYmMtZmE3ZWViOTU4MGRiXCIsXCJwYXlsb2FkXCI6e30sXCJ0eXBlXCI6XCJ2aWV3XCJ9Iiwic2lnbmF0dXJlIjoia0RuYUNUZDdVRERzUW1JSXBjeElyQ09mTWEzY1BHM0R6bzZXSDdrcFpHbi9OOC9ReVdFTk1wQkxxR0oxVk42U2srcEd3SU1QTGNLRDFyM2I1NVoxV2c9PSIsInQiOiJoOVAvdUt4Ulg1YTNrallLWGRLTHYxekZma0tPNW5CNC9QNmdDcGh2ZVNndloxc1ZzNElyZjVrYXR4MFdxQkdmQ2lqdDRhVkRYL2lkU2N3L1VORWNndz09In0=
[3269:3269:0417/191331.944082:INFO:redeem_token.cc(153)]   Response Status Code: 201
[3269:3269:0417/191331.944090:INFO:redeem_token.cc(154)]   Response: {"id":"3031c939-5496-4f38-adcf-eccadb283b54","payload":{},"createdAt":"2020-04-17T17:13:42.048Z","type":"view","modifiedAt":"2020-04-17T17:13:42.048Z","creativeInstanceId":"0d87dd71-eca5-4691-9dbc-fa7eeb9580db"}
[3269:3269:0417/191331.944101:INFO:redeem_token.cc(155)]   Headers:
[3269:3269:0417/191331.944109:INFO:redeem_token.cc(157)]     accept-ranges: bytes
[3269:3269:0417/191331.944117:INFO:redeem_token.cc(157)]     access-control-allow-origin: *
[3269:3269:0417/191331.944125:INFO:redeem_token.cc(157)]     cache-control: no-cache
[3269:3269:0417/191331.944133:INFO:redeem_token.cc(157)]     content-length: 211
[3269:3269:0417/191331.944141:INFO:redeem_token.cc(157)]     content-type: application/json; charset=utf-8
[3269:3269:0417/191331.944150:INFO:redeem_token.cc(157)]     date: Fri, 17 Apr 2020 17:13:42 GMT
[3269:3269:0417/191331.944160:INFO:redeem_token.cc(157)]     expires: 0
[3269:3269:0417/191331.944168:INFO:redeem_token.cc(157)]     status: 201
[3269:3269:0417/191331.944176:INFO:redeem_token.cc(157)]     via: 1.1 varnish
[3269:3269:0417/191331.944184:INFO:redeem_token.cc(157)]     x-cache: MISS
[3269:3269:0417/191331.944192:INFO:redeem_token.cc(157)]     x-cache-hits: 0
[3269:3269:0417/191331.944201:INFO:redeem_token.cc(157)]     x-powered-by: Express
[3269:3269:0417/191331.944221:INFO:redeem_token.cc(157)]     x-served-by: cache-ams21060-AMS
[3269:3269:0417/191331.944234:INFO:redeem_token.cc(177)] FetchPaymentToken
[3269:3269:0417/191331.944243:INFO:redeem_token.cc(179)] GET /v1/confirmation/{confirmation_id}/paymentToken

Test Case 4 (Fetch payment token fails with 404 NOT FOUND):

[3927:3927:0417/195350.302158:INFO:redeem_token.cc(201)] OnFetchPaymentToken
[3927:3927:0417/195350.302184:INFO:redeem_token.cc(203)] URL Request Response:
[3927:3927:0417/195350.302190:INFO:redeem_token.cc(204)]   URL: https://ads-serve.bravesoftware.com/v1/confirmation/00920b44-75f9-440e-ba15-61dea4297ed3/paymentToken
[3927:3927:0417/195350.302196:INFO:redeem_token.cc(205)]   Response Status Code: 404
[3927:3927:0417/195350.302202:INFO:redeem_token.cc(206)]   Response: {"id":"00920b44-75f9-440e-ba15-61dea4297ed3","createdAt":"2020-04-17T17:54:00.814Z","type":"dismiss","modifiedAt":"2020-04-17T17:54:00.854Z","creativeInstanceId":"0d87dd71-eca5-4691-9dbc-fa7eeb9580db","paymentToken":{"publicKey":"lLO5tErGoTK0askrALab6pKGAnBHqELSyw/evqZRwH8=","batchProof":"B/IJCiE7P9AKYnyRtqjtSJ1USvy1BkDxHmmQU8JOPQ0undYukaB+YVYW3u0je+Oj3OXTCzlIsT207QQWwziVDQ==","signedTokens":["Pg01o7A3/qgD//J43+C8Sx85DO5FtsS/XIeGPn0gjkg="]}}
[3927:3927:0417/195350.302209:INFO:redeem_token.cc(207)]   Headers:
[3927:3927:0417/195350.302214:INFO:redeem_token.cc(209)]     accept-ranges: bytes
[3927:3927:0417/195350.302220:INFO:redeem_token.cc(209)]     access-control-allow-origin: *
[3927:3927:0417/195350.302225:INFO:redeem_token.cc(209)]     cache-control: no-cache
[3927:3927:0417/195350.302229:INFO:redeem_token.cc(209)]     content-length: 445
[3927:3927:0417/195350.302234:INFO:redeem_token.cc(209)]     content-type: application/json; charset=utf-8
[3927:3927:0417/195350.302239:INFO:redeem_token.cc(209)]     date: Fri, 17 Apr 2020 17:54:01 GMT
[3927:3927:0417/195350.302244:INFO:redeem_token.cc(209)]     expires: 0
[3927:3927:0417/195350.302250:INFO:redeem_token.cc(209)]     status: 404
[3927:3927:0417/195350.302254:INFO:redeem_token.cc(209)]     via: 1.1 varnish
[3927:3927:0417/195350.302259:INFO:redeem_token.cc(209)]     x-cache: MISS
[3927:3927:0417/195350.302264:INFO:redeem_token.cc(209)]     x-cache-hits: 0
[3927:3927:0417/195350.302269:INFO:redeem_token.cc(209)]     x-powered-by: Express
[3927:3927:0417/195350.302566:INFO:redeem_token.cc(209)]     x-served-by: cache-hhn4028-HHN
[3927:3927:0417/195350.302575:WARNING:redeem_token.cc(213)] Confirmation not found
[3927:3927:0417/195350.302628:WARNING:redeem_token.cc(400)] Failed to redeem 00920b44-75f9-440e-ba15-61dea4297ed3 confirmation id with 0d87dd71-eca5-4691-9dbc-fa7eeb9580db creative instance id for dismiss
[3927:3927:0417/195350.302644:INFO:confirmations_impl.cc(736)] Saving confirmations state
[3927:3927:0417/195350.303435:INFO:confirmations_impl.cc(736)] Saving confirmations state
[3927:3927:0417/195350.303811:INFO:confirmations_impl.cc(898)] Added 3119bfa4-5f96-49ec-a3ae-dccbee4627f6 confirmation id with 0d87dd71-eca5-4691-9dbc-fa7eeb9580db creative instance id for dismiss to the confirmations queue

confirmations.json with failed confirmations

	"confirmations": {
		"failed_confirmations": [{
				"blinded_payment_token": "cBOm6eam9/hiYyg6N6i4k5DMv0Hs+g1HYf/ANqH4Uwg=",
				"created": false,
				"creative_instance_id": "0d87dd71-eca5-4691-9dbc-fa7eeb9580db",
				"credential": "eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwiY0JPbTZlYW05L2hpWXlnNk42aTRrNURNdjBIcytnMUhZZi9BTnFINFV3Zz1cIixcImNyZWF0aXZlSW5zdGFuY2VJZFwiOlwiMGQ4N2RkNzEtZWNhNS00NjkxLTlkYmMtZmE3ZWViOTU4MGRiXCIsXCJwYXlsb2FkXCI6e30sXCJ0eXBlXCI6XCJ2aWV3XCJ9Iiwic2lnbmF0dXJlIjoiODhPKzNJNFZYQmppNWZVZVQzNTJyZDdKU3Y2dFdCRE5kSFVOUWZ3WU85ZjF4d2ZITEIrcXQwLzR6T2xCNy9BeXgvSmJsQmVJMEc4YklnbDBjdERsTGc9PSIsInQiOiIxTmxjNWJLWjdrTnhFRWloNU5zTDc1NlFzM1cyVmRpVEdscE9YNFJYdXNSdlZvajUxTk5qQWNhWlo0S3c5QklkWldobjZ1TWpxdEFuNnRCckVmalNGZz09In0=",
				"id": "209a069f-006f-410f-a17a-50d92bca2289",
				"payment_token": "0BFJL635hYUPWpmHI0Em38Aouo4Zk7Zjl9/r+iqF6ySG0+ofs+n40Ax4a7njOyPdJMDpV9sh1/rv9zu5Thn2P5s86dN4Qhgt9Tv4suzQz6a3ekc7nESFOxaNMHfBip4J",
				"timestamp_in_seconds": "1587146009",
				"token_info": {
					"public_key": "crDVI1R6xHQZ4D9cQu4muVM5MaaM1QcOT4It8Y/CYlw=",
					"unblinded_token": "1Nlc5bKZ7kNxEEih5NsL756Qs3W2VdiTGlpOX4RXusRvVoj51NNjAcaZZ4Kw9BIdZWhn6uMjqtAn6tBrEfjSFlRTOg+TE/RulcOM12IHjJPUclwIxcqC6FrNeIuahoo+"
				},
				"type": "view"
			}, {
				"blinded_payment_token": "FFMInul+XrcBlByIIWUL2Mi6XNiHJrgs27WEIPyCcWM=",
				"created": false,
				"creative_instance_id": "0d87dd71-eca5-4691-9dbc-fa7eeb9580db",
				"credential": "eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwiRkZNSW51bCtYcmNCbEJ5SUlXVUwyTWk2WE5pSEpyZ3MyN1dFSVB5Q2NXTT1cIixcImNyZWF0aXZlSW5zdGFuY2VJZFwiOlwiMGQ4N2RkNzEtZWNhNS00NjkxLTlkYmMtZmE3ZWViOTU4MGRiXCIsXCJwYXlsb2FkXCI6e30sXCJ0eXBlXCI6XCJkaXNtaXNzXCJ9Iiwic2lnbmF0dXJlIjoia0ZKbXVZNEtvUUJRa0EvNkx2anlEZVRtR0J3NWw4RldtRkFjLzVnZWpKKy8vVjZabDVJN29vNHM3UThkc3V2SFFURDVHZkdXVkl4d241MW5EMjFsVGc9PSIsInQiOiJDY3BOMkZEUXlFM3ZYendqZk1YWTc3Y2g0UWdxZVVtaGVkQUNQcHZLWWRlWXNKYzgwcnUyWG9mNkdYUWM2TWxqQ3FzTGE3cEZnamJ3ZnBDOEhMNE4wdz09In0=",
				"id": "3119bfa4-5f96-49ec-a3ae-dccbee4627f6",
				"payment_token": "uh0k//+YVyrtXlbNtkcbKzxgXAJtMOVkbG3N1BrZt3S+9D/ipZlr9jahZGvSaRO6ysTp3R8v0TfzLZlx1jzCKgZfGYKcQePLBI8X3iKxbL3fR3xko4l3+OnMqELmoq0E",
				"timestamp_in_seconds": "1587146030",
				"token_info": {
					"public_key": "crDVI1R6xHQZ4D9cQu4muVM5MaaM1QcOT4It8Y/CYlw=",
					"unblinded_token": "CcpN2FDQyE3vXzwjfMXY77ch4QgqeUmhedACPpvKYdeYsJc80ru2Xof6GXQc6MljCqsLa7pFgjbwfpC8HL4N01ptldadaZcQa0XSgGFaC/NhJQWM+jo42t7pNbWWnxho"
				},
				"type": "dismiss"
			}
		]
	}

After disabling Charles overwrite. Confirmation was successfully redeemed

[4534:4534:0417/201550.607697:INFO:confirmations_impl.cc(1182)] Retry failed confirmations at 2020-04-17 18:17:14.607 UTC
[4534:4534:0417/201550.624656:INFO:confirmations_impl.cc(752)] Successfully saved confirmations state
[4534:4534:0417/201551.413189:INFO:redeem_token.cc(149)] OnCreateConfirmation
[4534:4534:0417/201551.413220:INFO:redeem_token.cc(151)] URL Request Response:
[4534:4534:0417/201551.413227:INFO:redeem_token.cc(152)]   URL: https://ads-serve.bravesoftware.com/v1/confirmation/f318589a-7c59-427f-9942-d675ef64bf1a/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwiTHFPSDcyVXFlUVNhT1JUY3lHc1oweE5FWmFMNTZIK2hBZFFsK2dySWprOD1cIixcImNyZWF0aXZlSW5zdGFuY2VJZFwiOlwiMGQ4N2RkNzEtZWNhNS00NjkxLTlkYmMtZmE3ZWViOTU4MGRiXCIsXCJwYXlsb2FkXCI6e30sXCJ0eXBlXCI6XCJ2aWV3XCJ9Iiwic2lnbmF0dXJlIjoiemZkc1gyUG9UNmVDeWFZOGlqaEoybXdlVXFyZzJtUUFrT3ZGQzNjNmVXdjBWZVVjUnpSSFh2cTNiL2FISlEvdXNWYktqZEtRSWwxaTVjWW5vK05lV1E9PSIsInQiOiJYY2M1NzZOYXdQamk5T1RBT2xBblVBL0hlcVMxZlB2RzRyanN1c0tPQzBYL0loZ2gvd3pWNHpjRDd4NG00R0tNQnZUbmcrRDJ2N0dvdkFSQWZnRExEQT09In0=
[4534:4534:0417/201551.413235:INFO:redeem_token.cc(153)]   Response Status Code: 201
[4534:4534:0417/201551.413240:INFO:redeem_token.cc(154)]   Response: {"id":"f318589a-7c59-427f-9942-d675ef64bf1a","payload":{},"createdAt":"2020-04-17T18:16:02.916Z","type":"view","modifiedAt":"2020-04-17T18:16:02.916Z","creativeInstanceId":"0d87dd71-eca5-4691-9dbc-fa7eeb9580db"}
[4534:4534:0417/201551.413247:INFO:redeem_token.cc(155)]   Headers:
[4534:4534:0417/201551.413252:INFO:redeem_token.cc(157)]     accept-ranges: bytes
[4534:4534:0417/201551.413257:INFO:redeem_token.cc(157)]     access-control-allow-origin: *
[4534:4534:0417/201551.413262:INFO:redeem_token.cc(157)]     cache-control: no-cache
[4534:4534:0417/201551.413268:INFO:redeem_token.cc(157)]     content-length: 211
[4534:4534:0417/201551.413273:INFO:redeem_token.cc(157)]     content-type: application/json; charset=utf-8
[4534:4534:0417/201551.413278:INFO:redeem_token.cc(157)]     date: Fri, 17 Apr 2020 18:16:03 GMT
[4534:4534:0417/201551.413283:INFO:redeem_token.cc(157)]     expires: 0
[4534:4534:0417/201551.413288:INFO:redeem_token.cc(157)]     status: 201
[4534:4534:0417/201551.413293:INFO:redeem_token.cc(157)]     via: 1.1 varnish
[4534:4534:0417/201551.413298:INFO:redeem_token.cc(157)]     x-cache: MISS
[4534:4534:0417/201551.413303:INFO:redeem_token.cc(157)]     x-cache-hits: 0
[4534:4534:0417/201551.413308:INFO:redeem_token.cc(157)]     x-powered-by: Express
[4534:4534:0417/201551.413313:INFO:redeem_token.cc(157)]     x-served-by: cache-hhn4074-HHN
[4534:4534:0417/201551.413320:INFO:redeem_token.cc(177)] FetchPaymentToken
[4534:4534:0417/201551.413325:INFO:redeem_token.cc(179)] GET /v1/confirmation/{confirmation_id}/paymentToken
[4534:4534:0417/201551.413330:INFO:redeem_token.cc(182)] URL Request:
[4534:4534:0417/201551.413337:INFO:redeem_token.cc(185)]   URL: https://ads-serve.bravesoftware.com/v1/confirmation/f318589a-7c59-427f-9942-d675ef64bf1a/paymentToken
[4534:4534:0417/201551.731491:INFO:redeem_token.cc(201)] OnFetchPaymentToken
[4534:4534:0417/201551.731518:INFO:redeem_token.cc(203)] URL Request Response:
[4534:4534:0417/201551.731526:INFO:redeem_token.cc(204)]   URL: https://ads-serve.bravesoftware.com/v1/confirmation/f318589a-7c59-427f-9942-d675ef64bf1a/paymentToken
[4534:4534:0417/201551.731537:INFO:redeem_token.cc(205)]   Response Status Code: 200
[4534:4534:0417/201551.731546:INFO:redeem_token.cc(206)]   Response: {"id":"f318589a-7c59-427f-9942-d675ef64bf1a","createdAt":"2020-04-17T18:16:02.916Z","type":"view","modifiedAt":"2020-04-17T18:16:02.934Z","creativeInstanceId":"0d87dd71-eca5-4691-9dbc-fa7eeb9580db","paymentToken":{"publicKey":"bPE1QE65mkIgytffeu7STOfly+x10BXCGuk5pVlOHQU=","batchProof":"GAq6OVFoG+413L8P5tuGMVA1nfxowks88Vd6a6rkdgMlutyOcAvoTJZBxb1Ufnn1+suMFxeZAUQ8zrahRaD1CA==","signedTokens":["ApgtZ/9v9MI1l5pf/wBLIu3hljZXeC+ExKqx12WtNFk="]}}
[4534:4534:0417/201551.731559:INFO:redeem_token.cc(207)]   Headers:
[4534:4534:0417/201551.731569:INFO:redeem_token.cc(209)]     accept-ranges: bytes
[4534:4534:0417/201551.731575:INFO:redeem_token.cc(209)]     access-control-allow-origin: *
[4534:4534:0417/201551.731580:INFO:redeem_token.cc(209)]     cache-control: no-cache
[4534:4534:0417/201551.731585:INFO:redeem_token.cc(209)]     content-length: 442
[4534:4534:0417/201551.731590:INFO:redeem_token.cc(209)]     content-type: application/json; charset=utf-8
[4534:4534:0417/201551.731595:INFO:redeem_token.cc(209)]     date: Fri, 17 Apr 2020 18:16:03 GMT
[4534:4534:0417/201551.731600:INFO:redeem_token.cc(209)]     expires: 0
[4534:4534:0417/201551.731608:INFO:redeem_token.cc(209)]     status: 200
[4534:4534:0417/201551.731618:INFO:redeem_token.cc(209)]     via: 1.1 varnish
[4534:4534:0417/201551.731627:INFO:redeem_token.cc(209)]     x-cache: MISS
[4534:4534:0417/201551.731636:INFO:redeem_token.cc(209)]     x-cache-hits: 0
[4534:4534:0417/201551.731644:INFO:redeem_token.cc(209)]     x-powered-by: Express
[4534:4534:0417/201551.731652:INFO:redeem_token.cc(209)]     x-served-by: cache-hhn4074-HHN
[4534:4534:0417/201551.734201:INFO:confirmations_impl.cc(736)] Saving confirmations state
[4534:4534:0417/201551.734672:INFO:redeem_token.cc(384)] Added 1 unblinded payment token with an estimated redemption value of 0.05 BAT, you now have 2 unblinded payment tokens
[4534:4534:0417/201551.734697:INFO:confirmations_impl.cc(736)] Saving confirmations state
[4534:4534:0417/201551.735199:INFO:redeem_token.cc(412)] Successfully redeemed f318589a-7c59-427f-9942-d675ef64bf1a confirmation id with 0d87dd71-eca5-4691-9dbc-fa7eeb9580db creative instance id for view

confirmations.json after successful confirmation

	"confirmations": {
		"failed_confirmations": []
	},
	"next_token_redemption_date_in_seconds": "1587232305",
	"transaction_history": {
		"transactions": [{
				"confirmation_type": "dismiss",
				"estimated_redemption_value": 0.0,
				"timestamp_in_seconds": "1587147254"
			}, {
				"confirmation_type": "view",
				"estimated_redemption_value": 0.05,
				"timestamp_in_seconds": "1587147351"
			}
		]
	},

Test Case 5 (Fetch payment token fails with 500 INTERNAL SERVER ERROR):

[5138:5138:0417/205420.226249:INFO:redeem_token.cc(149)] OnCreateConfirmation
[5138:5138:0417/205420.226278:INFO:redeem_token.cc(151)] URL Request Response:
[5138:5138:0417/205420.226284:INFO:redeem_token.cc(152)]   URL: https://ads-serve.bravesoftware.com/v1/confirmation/d46d6fd3-6716-452d-b1bd-b1a18685782b/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwiOHNJNExhU05qeUVqcGJNNG9jckI3STJ0WHN1OTVxOGlTTDgzSnhadHFTOD1cIixcImNyZWF0aXZlSW5zdGFuY2VJZFwiOlwiMzZjODRmY2ItNjM4OC00NWQ4LTgxZWQtNWE1ZDk4NmNkN2VmXCIsXCJwYXlsb2FkXCI6e30sXCJ0eXBlXCI6XCJ2aWV3XCJ9Iiwic2lnbmF0dXJlIjoiM29ubkV2TGh3ZEhGOEdtdWxHVGtydjdFS1Q2WjA4Y1JEVTJBNmhqRGtiek5aelpoSXVHNlV5b0c5ZG5KaHhJZ0FnczBNa09zZGN0Rk1mS1RFZGpxeGc9PSIsInQiOiJHU2hnbGNydmh4elNsRlg1cEwxTTBzSHU2YURxdFk1VW1vMHRPb3R1aS95dmZlS0lxS0JlQXlmQ1BhczJEaEhLY2R3NVQ0aGVtWHUzL2g0bE1LRDFsQT09In0=
[5138:5138:0417/205420.226292:INFO:redeem_token.cc(153)]   Response Status Code: 201
[5138:5138:0417/205420.226298:INFO:redeem_token.cc(154)]   Response: {"id":"d46d6fd3-6716-452d-b1bd-b1a18685782b","payload":{},"createdAt":"2020-04-17T18:54:32.297Z","type":"view","modifiedAt":"2020-04-17T18:54:32.297Z","creativeInstanceId":"36c84fcb-6388-45d8-81ed-5a5d986cd7ef"}
[5138:5138:0417/205420.226304:INFO:redeem_token.cc(155)]   Headers:
[5138:5138:0417/205420.226309:INFO:redeem_token.cc(157)]     accept-ranges: bytes
[5138:5138:0417/205420.226314:INFO:redeem_token.cc(157)]     access-control-allow-origin: *
[5138:5138:0417/205420.226319:INFO:redeem_token.cc(157)]     cache-control: no-cache
[5138:5138:0417/205420.226323:INFO:redeem_token.cc(157)]     content-length: 211
[5138:5138:0417/205420.226328:INFO:redeem_token.cc(157)]     content-type: application/json; charset=utf-8
[5138:5138:0417/205420.226334:INFO:redeem_token.cc(157)]     date: Fri, 17 Apr 2020 18:54:32 GMT
[5138:5138:0417/205420.226338:INFO:redeem_token.cc(157)]     expires: 0
[5138:5138:0417/205420.226343:INFO:redeem_token.cc(157)]     status: 201
[5138:5138:0417/205420.226348:INFO:redeem_token.cc(157)]     via: 1.1 varnish
[5138:5138:0417/205420.226353:INFO:redeem_token.cc(157)]     x-cache: MISS
[5138:5138:0417/205420.226357:INFO:redeem_token.cc(157)]     x-cache-hits: 0
[5138:5138:0417/205420.226362:INFO:redeem_token.cc(157)]     x-powered-by: Express
[5138:5138:0417/205420.226367:INFO:redeem_token.cc(157)]     x-served-by: cache-ams21077-AMS
[5138:5138:0417/205420.226374:INFO:redeem_token.cc(177)] FetchPaymentToken
[5138:5138:0417/205420.226379:INFO:redeem_token.cc(179)] GET /v1/confirmation/{confirmation_id}/paymentToken
[5138:5138:0417/205420.226384:INFO:redeem_token.cc(182)] URL Request:
[5138:5138:0417/205420.226393:INFO:redeem_token.cc(185)]   URL: https://ads-serve.bravesoftware.com/v1/confirmation/d46d6fd3-6716-452d-b1bd-b1a18685782b/paymentToken
[5138:5138:0417/205420.577382:INFO:redeem_token.cc(201)] OnFetchPaymentToken
[5138:5138:0417/205420.577412:INFO:redeem_token.cc(203)] URL Request Response:
[5138:5138:0417/205420.577445:INFO:redeem_token.cc(204)]   URL: https://ads-serve.bravesoftware.com/v1/confirmation/d46d6fd3-6716-452d-b1bd-b1a18685782b/paymentToken
[5138:5138:0417/205420.577454:INFO:redeem_token.cc(205)]   Response Status Code: 500
[5138:5138:0417/205420.577459:INFO:redeem_token.cc(206)]   Response: {"id":"d46d6fd3-6716-452d-b1bd-b1a18685782b","createdAt":"2020-04-17T18:54:32.297Z","type":"view","modifiedAt":"2020-04-17T18:54:32.332Z","creativeInstanceId":"36c84fcb-6388-45d8-81ed-5a5d986cd7ef","paymentToken":{"publicKey":"bPE1QE65mkIgytffeu7STOfly+x10BXCGuk5pVlOHQU=","batchProof":"cHszjtWoKdlkK+atBOs5ABIGy/0H8qd2278eKf77SwXLzhwuc1a/ZKBVYLSgUPUlYk5Uv8M8S8CJR05OuEf0Bw==","signedTokens":["Dt6AUhUdFWU6OcuTe34M8778GaScUqJNTRiBbGKlLWI="]}}
[5138:5138:0417/205420.577467:INFO:redeem_token.cc(207)]   Headers:
[5138:5138:0417/205420.577472:INFO:redeem_token.cc(209)]     accept-ranges: bytes
[5138:5138:0417/205420.577478:INFO:redeem_token.cc(209)]     access-control-allow-origin: *
[5138:5138:0417/205420.577482:INFO:redeem_token.cc(209)]     cache-control: no-cache
[5138:5138:0417/205420.577487:INFO:redeem_token.cc(209)]     content-length: 442
[5138:5138:0417/205420.577492:INFO:redeem_token.cc(209)]     content-type: application/json; charset=utf-8
[5138:5138:0417/205420.577497:INFO:redeem_token.cc(209)]     date: Fri, 17 Apr 2020 18:54:32 GMT
[5138:5138:0417/205420.577502:INFO:redeem_token.cc(209)]     expires: 0
[5138:5138:0417/205420.577507:INFO:redeem_token.cc(209)]     status: 500
[5138:5138:0417/205420.577511:INFO:redeem_token.cc(209)]     via: 1.1 varnish
[5138:5138:0417/205420.577516:INFO:redeem_token.cc(209)]     x-cache: MISS
[5138:5138:0417/205420.577521:INFO:redeem_token.cc(209)]     x-cache-hits: 0
[5138:5138:0417/205420.577526:INFO:redeem_token.cc(209)]     x-powered-by: Express
[5138:5138:0417/205420.577530:INFO:redeem_token.cc(209)]     x-served-by: cache-ams21077-AMS
[5138:5138:0417/205420.577535:ERROR:redeem_token.cc(229)] Failed to fetch payment token
[5138:5138:0417/205420.577540:WARNING:redeem_token.cc(400)] Failed to redeem d46d6fd3-6716-452d-b1bd-b1a18685782b confirmation id with 36c84fcb-6388-45d8-81ed-5a5d986cd7ef creative instance id for view
[5138:5138:0417/205420.577551:INFO:confirmations_impl.cc(736)] Saving confirmations state
[5138:5138:0417/205420.578388:INFO:confirmations_impl.cc(898)] Added d46d6fd3-6716-452d-b1bd-b1a18685782b confirmation id with 36c84fcb-6388-45d8-81ed-5a5d986cd7ef creative instance id for view to the confirmations queue
[5138:5138:0417/205420.578421:INFO:confirmations_impl.cc(1182)] Retry failed confirmations at 2020-04-17 19:02:28.578 UTC
	"confirmations": {
		"failed_confirmations": [{
				"blinded_payment_token": "8sI4LaSNjyEjpbM4ocrB7I2tXsu95q8iSL83JxZtqS8=",
				"created": true,
				"creative_instance_id": "36c84fcb-6388-45d8-81ed-5a5d986cd7ef",
				"credential": "eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwiOHNJNExhU05qeUVqcGJNNG9jckI3STJ0WHN1OTVxOGlTTDgzSnhadHFTOD1cIixcImNyZWF0aXZlSW5zdGFuY2VJZFwiOlwiMzZjODRmY2ItNjM4OC00NWQ4LTgxZWQtNWE1ZDk4NmNkN2VmXCIsXCJwYXlsb2FkXCI6e30sXCJ0eXBlXCI6XCJ2aWV3XCJ9Iiwic2lnbmF0dXJlIjoiM29ubkV2TGh3ZEhGOEdtdWxHVGtydjdFS1Q2WjA4Y1JEVTJBNmhqRGtiek5aelpoSXVHNlV5b0c5ZG5KaHhJZ0FnczBNa09zZGN0Rk1mS1RFZGpxeGc9PSIsInQiOiJHU2hnbGNydmh4elNsRlg1cEwxTTBzSHU2YURxdFk1VW1vMHRPb3R1aS95dmZlS0lxS0JlQXlmQ1BhczJEaEhLY2R3NVQ0aGVtWHUzL2g0bE1LRDFsQT09In0=",
				"id": "d46d6fd3-6716-452d-b1bd-b1a18685782b",
				"payment_token": "V7VT2l+QSrQGG39N0+7oJrlgkYPS5H9EphKfJJe92kNNGi9wAq5fNBbvQDxvTgTltBw3vsrUJxqg/AbLYgK6n/FpuualaL5NSkVFNs/IUiwjbR42jOZNOV45HshCBUAO",
				"timestamp_in_seconds": "1587149659",
				"token_info": {
					"public_key": "crDVI1R6xHQZ4D9cQu4muVM5MaaM1QcOT4It8Y/CYlw=",
					"unblinded_token": "GShglcrvhxzSlFX5pL1M0sHu6aDqtY5Umo0tOotui/yvfeKIqKBeAyfCPas2DhHKcdw5T4hemXu3/h4lMKD1lDLO6vHvXyw3MP7MXOZZ4t+a78gZo91TLOJ+oVU2VPdJ"
				},
				"type": "view"
			}, {
				"blinded_payment_token": "Jq/LW3qPKxOZqL1KfPT+s09k8+FYWzpmHhrVe7t3Jlk=",
				"created": true,
				"creative_instance_id": "36c84fcb-6388-45d8-81ed-5a5d986cd7ef",
				"credential": "eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwiSnEvTFczcVBLeE9acUwxS2ZQVCtzMDlrOCtGWVd6cG1IaHJWZTd0M0psaz1cIixcImNyZWF0aXZlSW5zdGFuY2VJZFwiOlwiMzZjODRmY2ItNjM4OC00NWQ4LTgxZWQtNWE1ZDk4NmNkN2VmXCIsXCJwYXlsb2FkXCI6e30sXCJ0eXBlXCI6XCJkaXNtaXNzXCJ9Iiwic2lnbmF0dXJlIjoiTU9FVmlCR0pEemZUMWhrc1BnUitwelR3UWpOcmZ3YzJISUdiRTdqRHRpRjhsZXM1bzJkSWJKQjE1OUpBT2ZkbnZLNG1XY2tPaE00VUZuZXpEM2ZDZVE9PSIsInQiOiJtMkhFbGpjWXRxaDVjUi94YWI2V2tqekdNOXErMVNjQk5kc1NlN0ZqaVRTVUZwNlI0YmtNekZJMi9wZ3RKZ004RTZqRk5VaXZXU2hVWlluYnZOaWN0dz09In0=",
				"id": "89aacf71-356f-4cc6-ac62-5485afb6c1c8",
				"payment_token": "mf5s1tMHCIVI2FcT354RDSsROONPIWMIvVeLSRKJb19SRJOoWb9mST0yXN+CESe0kDn7odktQsKo4ovb2rSMX7hAUDkUcOtR30b29hIG8x8EL30uRt/MYx2GBH4uBloH",
				"timestamp_in_seconds": "1587149777",
				"token_info": {
					"public_key": "crDVI1R6xHQZ4D9cQu4muVM5MaaM1QcOT4It8Y/CYlw=",
					"unblinded_token": "m2HEljcYtqh5cR/xab6WkjzGM9q+1ScBNdsSe7FjiTSUFp6R4bkMzFI2/pgtJgM8E6jFNUivWShUZYnbvNict2AGtBW1UyHgfHzfp8i/HJWDlO2NFrRD/fiqhHELgIkg"
				},
				"type": "dismiss"
			}
		]
	},

confirmations.json after successful confirmation

	"transaction_history": {
		"transactions": [{
				"confirmation_type": "dismiss",
				"estimated_redemption_value": 0.0,
				"timestamp_in_seconds": "1587155658"
			}, {
				"confirmation_type": "view",
				"estimated_redemption_value": 0.05,
				"timestamp_in_seconds": "1587156077"
			}
		]
	},

Test Case 6

[7396:7396:0417/225008.157336:INFO:refill_tokens.cc(294)] Added 43 unblinded tokens, you now have 50 unblinded tokens

Test Case 7 (Fetch payment token succeeds with 200 OK):

[7877:7877:0417/225411.870162:INFO:refill_tokens.cc(294)] Added 50 unblinded tokens, you now have 50 unblinded tokens
[7877:7877:0417/225519.849769:INFO:redeem_token.cc(412)] Successfully redeemed e8ad44e5-51dc-4fa2-94b1-40012224f484 confirmation id with 36c84fcb-6388-45d8-81ed-5a5d986cd7ef creative instance id for view

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug CI/skip-android Do not run CI builds for Android CI/skip-ios Do not run CI builds for iOS CI/skip-macos-x64 Do not run CI builds for macOS x64 feature/ads
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Duplicate/bad confirmations retry logic
5 participants