@@ -388,7 +388,7 @@ TEST_F(TestPsiCash, DecodeAuthorization) {
388388 ASSERT_TRUE (auth_res_fail.error ().Critical ());
389389}
390390
391- TEST_F (TestPsiCash, ActiveAuthorizations ) {
391+ TEST_F (TestPsiCash, GetAuthorizations ) {
392392 PsiCashTester pc;
393393 auto err = pc.Init (user_agent_, GetTempDir ().c_str (), nullptr , true );
394394 ASSERT_FALSE (err);
@@ -399,7 +399,10 @@ TEST_F(TestPsiCash, ActiveAuthorizations) {
399399 purchases = pc.ActivePurchases ();
400400 ASSERT_EQ (purchases.size (), 0 );
401401
402- auto v = pc.ActiveAuthorizations ();
402+ auto v = pc.GetAuthorizations (false );
403+ ASSERT_EQ (v.size (), 0 );
404+
405+ v = pc.GetAuthorizations (true );
403406 ASSERT_EQ (v.size (), 0 );
404407
405408 auto before_now = datetime::DateTime::Now ().Sub (datetime::Duration (54321 ));
@@ -421,9 +424,51 @@ TEST_F(TestPsiCash, ActiveAuthorizations) {
421424 ASSERT_FALSE (err);
422425 ASSERT_EQ (pc.GetPurchases ().size (), purchases.size ());
423426
424- v = pc.ActiveAuthorizations ();
427+ v = pc.GetAuthorizations (false );
428+ ASSERT_EQ (v.size (), 2 );
429+ ASSERT_THAT (v, AnyOf (Contains (*auth_res1), Contains (*auth_res2)));
430+
431+ v = pc.GetAuthorizations (true );
425432 ASSERT_EQ (v.size (), 1 );
426- ASSERT_EQ (v[0 ].encoded , encoded2);
433+ ASSERT_THAT (v, Contains (*auth_res2));
434+ }
435+
436+ TEST_F (TestPsiCash, GetPurchasesByAuthorizationID) {
437+ PsiCashTester pc;
438+ auto err = pc.Init (user_agent_, GetTempDir ().c_str (), nullptr , true );
439+ ASSERT_FALSE (err);
440+
441+ auto purchases = pc.GetPurchases ();
442+ ASSERT_EQ (purchases.size (), 0 );
443+
444+ // Empty set of auth IDs
445+ purchases = pc.GetPurchasesByAuthorizationID ({});
446+ ASSERT_EQ (purchases.size (), 0 );
447+
448+ auto before_now = datetime::DateTime::Now ().Sub (datetime::Duration (54321 ));
449+ auto after_now = datetime::DateTime::Now ().Add (datetime::Duration (54321 ));
450+
451+ const auto encoded1 = " eyJBdXRob3JpemF0aW9uIjp7IklEIjoiMFYzRXhUdmlBdFNxTGZOd2FpQXlHNHpaRUJJOGpIYnp5bFdNeU5FZ1JEZz0iLCJBY2Nlc3NUeXBlIjoic3BlZWQtYm9vc3QtdGVzdCIsIkV4cGlyZXMiOiIyMDE5LTAxLTE0VDE3OjIyOjIzLjE2ODc2NDEyOVoifSwiU2lnbmluZ0tleUlEIjoiUUNZTzV2clIvZGhjRDZ6M2FMQlVNeWRuZlJyZFNRL1RWYW1IUFhYeTd0TT0iLCJTaWduYXR1cmUiOiJQL2NrenloVUJoSk5RQ24zMnluM1VTdGpLencxU04xNW9MclVhTU9XaW9scXBOTTBzNVFSNURHVEVDT1FzQk13ODdQdTc1TGE1OGtJTHRIcW1BVzhDQT09In0=" ;
452+ const auto encoded2 = " eyJBdXRob3JpemF0aW9uIjp7IklEIjoibFRSWnBXK1d3TFJqYkpzOGxBUFVaQS8zWnhmcGdwNDFQY0dkdlI5a0RVST0iLCJBY2Nlc3NUeXBlIjoic3BlZWQtYm9vc3QtdGVzdCIsIkV4cGlyZXMiOiIyMDE5LTAxLTE0VDIxOjQ2OjMwLjcxNzI2NTkyNFoifSwiU2lnbmluZ0tleUlEIjoiUUNZTzV2clIvZGhjRDZ6M2FMQlVNeWRuZlJyZFNRL1RWYW1IUFhYeTd0TT0iLCJTaWduYXR1cmUiOiJtV1Z5Tm9ZU0pFRDNXU3I3bG1OeEtReEZza1M5ZWlXWG1lcDVvVWZBSHkwVmYrSjZaQW9WajZrN3ZVTDNrakIreHZQSTZyaVhQc3FzWENRNkx0eFdBQT09In0=" ;
453+
454+ auto auth_res1 = psicash::DecodeAuthorization (encoded1);
455+ auto auth_res2 = psicash::DecodeAuthorization (encoded2);
456+ ASSERT_TRUE (auth_res1);
457+ ASSERT_TRUE (auth_res2);
458+
459+ purchases = {{" future_no_auth" , " tc1" , " d1" , after_now, nonstd::nullopt , nonstd::nullopt },
460+ {" past_auth" , " tc2" , " d2" , before_now, nonstd::nullopt , *auth_res1},
461+ {" future_auth" , " tc3" , " d3" , after_now, nonstd::nullopt , *auth_res2}};
462+
463+ err = pc.user_data ().SetPurchases (purchases);
464+ ASSERT_FALSE (err);
465+ ASSERT_EQ (pc.GetPurchases ().size (), purchases.size ());
466+
467+ // One that matches and some that don't
468+ vector<string> authIDs = {" badid" , auth_res2->id , " anotherbadid" };
469+ purchases = pc.GetPurchasesByAuthorizationID (authIDs);
470+ ASSERT_THAT (purchases, SizeIs (1 ));
471+ ASSERT_EQ (purchases[0 ].authorization ->id , auth_res2->id );
427472}
428473
429474TEST_F (TestPsiCash, NextExpiringPurchase) {
0 commit comments