diff --git a/app/src/androidTest/assets/inAppPaymentsTests/configuration.json b/app/src/androidTest/assets/inAppPaymentsTests/configuration.json new file mode 100644 index 0000000000..e2a755fd1c --- /dev/null +++ b/app/src/androidTest/assets/inAppPaymentsTests/configuration.json @@ -0,0 +1 @@ +{"currencies":{"mwk":{"minimum":2500,"oneTime":{"100":[4000],"1":[4000,10000,20000,30000,50000,100000]},"subscription":{"500":4000,"1000":10000,"2000":20000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"mga":{"minimum":10000,"oneTime":{"100":[15000],"1":[15000,40000,80000,100000,200000,400000]},"subscription":{"500":15000,"1000":40000,"2000":80000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"bzd":{"minimum":5,"oneTime":{"100":[8],"1":[8,20,40,50,100,200]},"subscription":{"500":8,"1000":20,"2000":40},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"bam":{"minimum":5,"oneTime":{"100":[8],"1":[8,15,30,50,75,150]},"subscription":{"500":8,"1000":15,"2000":30},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"egp":{"minimum":50,"oneTime":{"100":[75],"1":[75,150,300,500,750,1500]},"subscription":{"500":75,"1000":150,"2000":300},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"mop":{"minimum":25,"oneTime":{"100":[40],"1":[40,80,160,200,400,800]},"subscription":{"500":40,"1000":80,"2000":160},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"nad":{"minimum":40,"oneTime":{"100":[75],"1":[75,150,300,500,750,1500]},"subscription":{"500":75,"1000":150,"2000":300},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"nio":{"minimum":80,"oneTime":{"100":[150],"1":[150,350,700,1000,1700,3500]},"subscription":{"500":150,"1000":350,"2000":700},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"pen":{"minimum":10,"oneTime":{"100":[15],"1":[15,40,80,100,200,400]},"subscription":{"500":15,"1000":40,"2000":80},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"nzd":{"minimum":5,"oneTime":{"100":[10],"1":[10,20,30,50,100,200]},"subscription":{"500":10,"1000":20,"2000":30},"backupSubscription":{},"supportedPaymentMethods":["CARD","PAYPAL"]},"wst":{"minimum":5,"oneTime":{"100":[10],"1":[10,25,50,75,125,250]},"subscription":{"500":10,"1000":25,"2000":50},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"brl":{"minimum":10,"oneTime":{"100":[20],"1":[20,50,100,125,250,500]},"subscription":{"500":20,"1000":50,"2000":100},"backupSubscription":{},"supportedPaymentMethods":["CARD","PAYPAL"]},"fjd":{"minimum":5,"oneTime":{"100":[10],"1":[10,20,40,60,100,200]},"subscription":{"500":10,"1000":20,"2000":40},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"mxn":{"minimum":50,"oneTime":{"100":[80],"1":[80,200,400,600,1000,2000]},"subscription":{"500":80,"1000":200,"2000":400},"backupSubscription":{},"supportedPaymentMethods":["CARD","PAYPAL"]},"std":{"minimum":50,"oneTime":{"100":[100],"1":[100,200,400,500,1000,2000]},"subscription":{"500":100,"1000":200,"2000":400},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"scr":{"minimum":40,"oneTime":{"100":[60],"1":[60,125,250,400,600,1200]},"subscription":{"500":60,"1000":125,"2000":250},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"cdf":{"minimum":5000,"oneTime":{"100":[8000],"1":[8000,20000,40000,50000,100000,200000]},"subscription":{"500":8000,"1000":20000,"2000":40000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"bbd":{"minimum":6,"oneTime":{"100":[10],"1":[10,20,40,60,100,200]},"subscription":{"500":10,"1000":20,"2000":40},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"gtq":{"minimum":20,"oneTime":{"100":[30],"1":[30,75,150,200,400,800]},"subscription":{"500":30,"1000":75,"2000":150},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"clp":{"minimum":2500,"oneTime":{"100":[4000],"1":[4000,8000,15000,25000,40000,80000]},"subscription":{"500":4000,"1000":8000,"2000":15000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"hnl":{"minimum":50,"oneTime":{"100":[100],"1":[100,250,500,700,1200,2400]},"subscription":{"500":100,"1000":250,"2000":500},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"ugx":{"minimum":8000,"oneTime":{"100":[15000],"1":[15000,35000,70000,100000,150000,300000]},"subscription":{"500":15000,"1000":35000,"2000":70000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"zar":{"minimum":50,"oneTime":{"100":[75],"1":[75,150,300,500,750,1500]},"subscription":{"500":75,"1000":150,"2000":300},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"bsd":{"minimum":3,"oneTime":{"100":[5],"1":[5,10,20,30,50,100]},"subscription":{"500":5,"1000":10,"2000":20},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"gmd":{"minimum":125,"oneTime":{"100":[200],"1":[200,500,1000,1500,2500,5000]},"subscription":{"500":200,"1000":500,"2000":1000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"twd":{"minimum":100,"oneTime":{"100":[150],"1":[150,300,600,1000,2000,3000]},"subscription":{"500":150,"1000":300,"2000":600},"backupSubscription":{},"supportedPaymentMethods":["CARD","PAYPAL"]},"rsd":{"minimum":300,"oneTime":{"100":[500],"1":[500,1000,2000,3000,5000,10000]},"subscription":{"500":500,"1000":1000,"2000":2000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"dop":{"minimum":150,"oneTime":{"100":[250],"1":[250,500,1000,1500,2500,5000]},"subscription":{"500":250,"1000":500,"2000":1000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"kmf":{"minimum":1000,"oneTime":{"100":[2000],"1":[2000,4000,8000,10000,20000,40000]},"subscription":{"500":2000,"1000":4000,"2000":8000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"myr":{"minimum":10,"oneTime":{"100":[20],"1":[20,40,80,100,200,400]},"subscription":{"500":20,"1000":40,"2000":80},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"fkp":{"minimum":3,"oneTime":{"100":[5],"1":[5,10,20,30,50,100]},"subscription":{"500":5,"1000":10,"2000":20},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"xof":{"minimum":1500,"oneTime":{"100":[2500],"1":[2500,5000,10000,15000,25000,50000]},"subscription":{"500":2500,"1000":5000,"2000":10000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"gel":{"minimum":7,"oneTime":{"100":[10],"1":[10,30,60,100,150,300]},"subscription":{"500":10,"1000":30,"2000":60},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"uyu":{"minimum":100,"oneTime":{"100":[200],"1":[200,400,800,1000,2000,4000]},"subscription":{"500":200,"1000":400,"2000":800},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"mad":{"minimum":25,"oneTime":{"100":[40],"1":[40,100,200,300,500,1000]},"subscription":{"500":40,"1000":100,"2000":200},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"cve":{"minimum":300,"oneTime":{"100":[400],"1":[400,1000,2000,3000,5000,10000]},"subscription":{"500":400,"1000":1000,"2000":2000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"azn":{"minimum":4,"oneTime":{"100":[7],"1":[7,15,30,50,75,150]},"subscription":{"500":7,"1000":15,"2000":30},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"top":{"minimum":5,"oneTime":{"100":[10],"1":[10,20,40,50,100,200]},"subscription":{"500":10,"1000":20,"2000":40},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"pgk":{"minimum":10,"oneTime":{"100":[15],"1":[15,35,70,100,150,300]},"subscription":{"500":15,"1000":35,"2000":70},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"kes":{"minimum":300,"oneTime":{"100":[500],"1":[500,1000,2000,3000,5000,10000]},"subscription":{"500":500,"1000":1000,"2000":2000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"sek":{"minimum":30,"oneTime":{"100":[50],"1":[50,100,200,300,500,1000]},"subscription":{"500":50,"1000":100,"2000":200},"backupSubscription":{},"supportedPaymentMethods":["CARD","PAYPAL"]},"uah":{"minimum":75,"oneTime":{"100":[120],"1":[120,300,600,1000,1500,3000]},"subscription":{"500":120,"1000":300,"2000":600},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"gnf":{"minimum":20000,"oneTime":{"100":[30000],"1":[30000,100000,200000,300000,500000,1000000]},"subscription":{"500":30000,"1000":100000,"2000":200000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"mzn":{"minimum":150,"oneTime":{"100":[250],"1":[250,600,1200,1500,3000,6000]},"subscription":{"500":250,"1000":600,"2000":1200},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"ars":{"minimum":400,"oneTime":{"100":[600],"1":[600,1000,2000,3000,5000,10000]},"subscription":{"500":600,"1000":1000,"2000":2000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"qar":{"minimum":10,"oneTime":{"100":[20],"1":[20,40,80,100,200,400]},"subscription":{"500":20,"1000":40,"2000":80},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"cny":{"minimum":20,"oneTime":{"100":[30],"1":[30,60,125,200,300,600]},"subscription":{"500":30,"1000":60,"2000":125},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"thb":{"minimum":100,"oneTime":{"100":[150],"1":[150,300,700,1000,1500,3000]},"subscription":{"500":150,"1000":300,"2000":700},"backupSubscription":{},"supportedPaymentMethods":["CARD","PAYPAL"]},"uzs":{"minimum":25000,"oneTime":{"100":[40000],"1":[40000,100000,200000,300000,500000,1000000]},"subscription":{"500":40000,"1000":100000,"2000":200000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"xpf":{"minimum":300,"oneTime":{"100":[500],"1":[500,1000,2000,3000,5000,10000]},"subscription":{"500":500,"1000":1000,"2000":2000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"bdt":{"minimum":250,"oneTime":{"100":[400],"1":[400,1000,2000,3000,5000,10000]},"subscription":{"500":400,"1000":1000,"2000":2000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"bmd":{"minimum":3,"oneTime":{"100":[5],"1":[5,10,20,30,50,100]},"subscription":{"500":5,"1000":10,"2000":20},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"php":{"minimum":150,"oneTime":{"100":[250],"1":[250,500,1000,1250,2500,5000]},"subscription":{"500":250,"1000":500,"2000":1000},"backupSubscription":{},"supportedPaymentMethods":["CARD","PAYPAL"]},"rub":{"minimum":150,"oneTime":{"100":[300],"1":[300,600,1200,2000,3000,6000]},"subscription":{"500":300,"1000":600,"2000":1200},"backupSubscription":{},"supportedPaymentMethods":["CARD","PAYPAL"]},"pyg":{"minimum":20000,"oneTime":{"100":[30000],"1":[30000,60000,125000,200000,350000,700000]},"subscription":{"500":30000,"1000":60000,"2000":125000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"isk":{"minimum":500,"oneTime":{"100":[750],"1":[750,1500,3000,5000,7500,15000]},"subscription":{"500":750,"1000":1500,"2000":3000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"jmd":{"minimum":300,"oneTime":{"100":[600],"1":[600,1500,3000,5000,7500,15000]},"subscription":{"500":600,"1000":1500,"2000":3000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"cop":{"minimum":10000,"oneTime":{"100":[20000],"1":[20000,40000,80000,100000,200000,400000]},"subscription":{"500":20000,"1000":40000,"2000":80000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"mkd":{"minimum":150,"oneTime":{"100":[250],"1":[250,500,1000,1500,2500,5000]},"subscription":{"500":250,"1000":500,"2000":1000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"usd":{"minimum":3,"oneTime":{"100":[5],"1":[5,10,20,30,50,100]},"subscription":{"500":5,"1000":10,"2000":20},"backupSubscription":{},"supportedPaymentMethods":["CARD","PAYPAL"]},"dzd":{"minimum":300,"oneTime":{"100":[500],"1":[500,1250,2500,4000,6000,12000]},"subscription":{"500":500,"1000":1250,"2000":2500},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"pab":{"minimum":3,"oneTime":{"100":[5],"1":[5,10,20,30,50,100]},"subscription":{"500":5,"1000":10,"2000":20},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"sgd":{"minimum":4,"oneTime":{"100":[7],"1":[7,15,30,50,75,150]},"subscription":{"500":7,"1000":15,"2000":30},"backupSubscription":{},"supportedPaymentMethods":["CARD","PAYPAL"]},"etb":{"minimum":125,"oneTime":{"100":[200],"1":[200,400,800,1000,2000,4000]},"subscription":{"500":200,"1000":400,"2000":800},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"kgs":{"minimum":200,"oneTime":{"100":[300],"1":[300,800,1600,2000,4000,8000]},"subscription":{"500":300,"1000":800,"2000":1600},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"sos":{"minimum":1500,"oneTime":{"100":[2000],"1":[2000,5000,10000,15000,25000,50000]},"subscription":{"500":2000,"1000":5000,"2000":10000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"vuv":{"minimum":300,"oneTime":{"100":[500],"1":[500,1000,2000,3000,5000,10000]},"subscription":{"500":500,"1000":1000,"2000":2000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"lak":{"minimum":40000,"oneTime":{"100":[50000],"1":[50000,100000,200000,300000,500000,1000000]},"subscription":{"500":50000,"1000":100000,"2000":200000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"bnd":{"minimum":4,"oneTime":{"100":[7],"1":[7,15,30,40,75,150]},"subscription":{"500":7,"1000":15,"2000":30},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"xaf":{"minimum":1500,"oneTime":{"100":[2500],"1":[2500,5000,10000,15000,25000,50000]},"subscription":{"500":2500,"1000":5000,"2000":10000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"lrd":{"minimum":400,"oneTime":{"100":[600],"1":[600,1500,3000,5000,8000,16000]},"subscription":{"500":600,"1000":1500,"2000":3000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"all":{"minimum":300,"oneTime":{"100":[500],"1":[500,1000,2000,3000,5000,10000]},"subscription":{"500":500,"1000":1000,"2000":2000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"chf":{"minimum":3,"oneTime":{"100":[5],"1":[5,10,20,30,50,100]},"subscription":{"500":5,"1000":10,"2000":20},"backupSubscription":{},"supportedPaymentMethods":["CARD","PAYPAL"]},"djf":{"minimum":500,"oneTime":{"100":[700],"1":[700,1500,3000,5000,8000,17000]},"subscription":{"500":700,"1000":1500,"2000":3000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"zmw":{"minimum":40,"oneTime":{"100":[60],"1":[60,150,300,500,750,1500]},"subscription":{"500":60,"1000":150,"2000":300},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"tzs":{"minimum":5000,"oneTime":{"100":[8000],"1":[8000,20000,40000,50000,100000,200000]},"subscription":{"500":8000,"1000":20000,"2000":40000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"vnd":{"minimum":50000,"oneTime":{"100":[100000],"1":[100000,200000,400000,500000,1000000,2000000]},"subscription":{"500":100000,"1000":200000,"2000":400000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"aud":{"minimum":5,"oneTime":{"100":[8],"1":[8,15,30,50,75,150]},"subscription":{"500":8,"1000":15,"2000":30},"backupSubscription":{},"supportedPaymentMethods":["CARD","PAYPAL"]},"ils":{"minimum":10,"oneTime":{"100":[20],"1":[20,40,80,100,200,400]},"subscription":{"500":20,"1000":40,"2000":80},"backupSubscription":{},"supportedPaymentMethods":["CARD","PAYPAL"]},"gyd":{"minimum":500,"oneTime":{"100":[800],"1":[800,2000,4000,5000,10000,20000]},"subscription":{"500":800,"1000":2000,"2000":4000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"bob":{"minimum":20,"oneTime":{"100":[30],"1":[30,60,125,200,350,700]},"subscription":{"500":30,"1000":60,"2000":125},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"khr":{"minimum":10000,"oneTime":{"100":[15000],"1":[15000,40000,80000,100000,200000,400000]},"subscription":{"500":15000,"1000":40000,"2000":80000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"mdl":{"minimum":50,"oneTime":{"100":[80],"1":[80,200,400,500,1000,2000]},"subscription":{"500":80,"1000":200,"2000":400},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"idr":{"minimum":40000,"oneTime":{"100":[60000],"1":[60000,125000,250000,500000,600000,1200000]},"subscription":{"500":60000,"1000":125000,"2000":250000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"kyd":{"minimum":3,"oneTime":{"100":[5],"1":[5,10,20,30,50,100]},"subscription":{"500":5,"1000":10,"2000":20},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"amd":{"minimum":1000,"oneTime":{"100":[1500],"1":[1500,5000,10000,15000,25000,50000]},"subscription":{"500":1500,"1000":5000,"2000":10000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"bwp":{"minimum":30,"oneTime":{"100":[50],"1":[50,100,200,300,500,1000]},"subscription":{"500":50,"1000":100,"2000":200},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"shp":{"minimum":2,"oneTime":{"100":[4],"1":[4,7,15,20,40,80]},"subscription":{"500":4,"1000":7,"2000":15},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"try":{"minimum":50,"oneTime":{"100":[75],"1":[75,150,300,500,750,1500]},"subscription":{"500":75,"1000":150,"2000":300},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"lbp":{"minimum":3000,"oneTime":{"100":[6000],"1":[6000,15000,30000,50000,75000,150000]},"subscription":{"500":6000,"1000":15000,"2000":30000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"tjs":{"minimum":25,"oneTime":{"100":[40],"1":[40,100,200,300,500,1000]},"subscription":{"500":40,"1000":100,"2000":200},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"hkd":{"minimum":20,"oneTime":{"100":[30],"1":[30,75,150,300,500,1000]},"subscription":{"500":30,"1000":75,"2000":150},"backupSubscription":{},"supportedPaymentMethods":["CARD","PAYPAL"]},"rwf":{"minimum":2500,"oneTime":{"100":[4000],"1":[4000,10000,20000,30000,50000,100000]},"subscription":{"500":4000,"1000":10000,"2000":20000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"aed":{"minimum":10,"oneTime":{"100":[20],"1":[20,40,80,100,200,400]},"subscription":{"500":20,"1000":40,"2000":80},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"eur":{"minimum":3,"oneTime":{"100":[5],"1":[5,10,20,30,50,100]},"subscription":{"500":5,"1000":10,"2000":20},"backupSubscription":{},"supportedPaymentMethods":["CARD","PAYPAL","SEPA_DEBIT","IDEAL"]},"lsl":{"minimum":40,"oneTime":{"100":[70],"1":[70,150,300,400,750,1500]},"subscription":{"500":70,"1000":150,"2000":300},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"dkk":{"minimum":25,"oneTime":{"100":[40],"1":[40,75,150,250,400,800]},"subscription":{"500":40,"1000":75,"2000":150},"backupSubscription":{},"supportedPaymentMethods":["CARD","PAYPAL"]},"cad":{"minimum":4,"oneTime":{"100":[7],"1":[7,15,30,40,70,140]},"subscription":{"500":7,"1000":15,"2000":30},"backupSubscription":{},"supportedPaymentMethods":["CARD","PAYPAL"]},"bgn":{"minimum":5,"oneTime":{"100":[8],"1":[8,15,30,50,75,150]},"subscription":{"500":8,"1000":15,"2000":30},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"mmk":{"minimum":5000,"oneTime":{"100":[8000],"1":[8000,20000,40000,50000,100000,200000]},"subscription":{"500":8000,"1000":20000,"2000":40000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"mur":{"minimum":100,"oneTime":{"100":[200],"1":[200,300,800,1000,2000,4000]},"subscription":{"500":200,"1000":300,"2000":800},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"nok":{"minimum":30,"oneTime":{"100":[50],"1":[50,100,200,300,500,1000]},"subscription":{"500":50,"1000":100,"2000":200},"backupSubscription":{},"supportedPaymentMethods":["CARD","PAYPAL"]},"gip":{"minimum":3,"oneTime":{"100":[5],"1":[5,10,20,30,50,100]},"subscription":{"500":5,"1000":10,"2000":20},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"ron":{"minimum":10,"oneTime":{"100":[20],"1":[20,50,100,150,250,500]},"subscription":{"500":20,"1000":50,"2000":100},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"lkr":{"minimum":800,"oneTime":{"100":[1500],"1":[1500,3000,5000,10000,15000,30000]},"subscription":{"500":1500,"1000":3000,"2000":5000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"ngn":{"minimum":1000,"oneTime":{"100":[1500],"1":[1500,4000,8000,10000,20000,40000]},"subscription":{"500":1500,"1000":4000,"2000":8000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"crc":{"minimum":1500,"oneTime":{"100":[3000],"1":[3000,6000,12000,20000,30000,60000]},"subscription":{"500":3000,"1000":6000,"2000":12000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"czk":{"minimum":70,"oneTime":{"100":[100],"1":[100,250,500,700,1250,2500]},"subscription":{"500":100,"1000":250,"2000":500},"backupSubscription":{},"supportedPaymentMethods":["CARD","PAYPAL"]},"pkr":{"minimum":500,"oneTime":{"100":[800],"1":[800,2000,4000,6000,10000,20000]},"subscription":{"500":800,"1000":2000,"2000":4000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"xcd":{"minimum":7,"oneTime":{"100":[12],"1":[12,25,50,75,125,250]},"subscription":{"500":12,"1000":25,"2000":50},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"htg":{"minimum":300,"oneTime":{"100":[500],"1":[500,1000,2000,3000,5000,10000]},"subscription":{"500":500,"1000":1000,"2000":2000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"ang":{"minimum":5,"oneTime":{"100":[10],"1":[10,20,40,60,100,200]},"subscription":{"500":10,"1000":20,"2000":40},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"kzt":{"minimum":1000,"oneTime":{"100":[2000],"1":[2000,4000,8000,10000,20000,40000]},"subscription":{"500":2000,"1000":4000,"2000":8000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"srd":{"minimum":70,"oneTime":{"100":[100],"1":[100,200,400,500,1000,2000]},"subscription":{"500":100,"1000":200,"2000":400},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"szl":{"minimum":50,"oneTime":{"100":[75],"1":[75,150,300,500,750,1500]},"subscription":{"500":75,"1000":150,"2000":300},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"sar":{"minimum":10,"oneTime":{"100":[20],"1":[20,40,80,100,200,400]},"subscription":{"500":20,"1000":40,"2000":80},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"ttd":{"minimum":20,"oneTime":{"100":[30],"1":[30,60,125,200,350,700]},"subscription":{"500":30,"1000":60,"2000":125},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"yer":{"minimum":500,"oneTime":{"100":[1000],"1":[1000,2500,5000,7500,12500,25000]},"subscription":{"500":1000,"1000":2500,"2000":5000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"afn":{"minimum":200,"oneTime":{"100":[300],"1":[300,900,1800,2500,4000,8000]},"subscription":{"500":300,"1000":900,"2000":1800},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"mvr":{"minimum":40,"oneTime":{"100":[75],"1":[75,150,300,500,750,1500]},"subscription":{"500":75,"1000":150,"2000":300},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"inr":{"minimum":200,"oneTime":{"100":[300],"1":[300,750,1500,2000,4000,8000]},"subscription":{"500":300,"1000":750,"2000":1500},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"awg":{"minimum":5,"oneTime":{"100":[10],"1":[10,20,40,50,100,200]},"subscription":{"500":10,"1000":20,"2000":40},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"krw":{"minimum":4000,"oneTime":{"100":[5000],"1":[5000,10000,20000,30000,50000,100000]},"subscription":{"500":5000,"1000":10000,"2000":20000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"npr":{"minimum":300,"oneTime":{"100":[500],"1":[500,1200,2400,4000,6000,12000]},"subscription":{"500":500,"1000":1200,"2000":2400},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"aoa":{"minimum":1000,"oneTime":{"100":[1500],"1":[1500,4000,8000,10000,20000,40000]},"subscription":{"500":1500,"1000":4000,"2000":8000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"jpy":{"minimum":400,"oneTime":{"100":[500],"1":[500,1000,2000,3000,5000,10000]},"subscription":{"500":500,"1000":1000,"2000":2000},"backupSubscription":{},"supportedPaymentMethods":["CARD","PAYPAL"]},"mnt":{"minimum":8000,"oneTime":{"100":[12500],"1":[12500,25000,50000,100000,125000,250000]},"subscription":{"500":12500,"1000":25000,"2000":50000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"pln":{"minimum":10,"oneTime":{"100":[20],"1":[20,40,80,125,250,500]},"subscription":{"500":20,"1000":40,"2000":80},"backupSubscription":{},"supportedPaymentMethods":["CARD","PAYPAL"]},"gbp":{"minimum":3,"oneTime":{"100":[5],"1":[5,10,20,30,50,100]},"subscription":{"500":5,"1000":10,"2000":20},"backupSubscription":{},"supportedPaymentMethods":["CARD","PAYPAL"]},"sbd":{"minimum":20,"oneTime":{"100":[30],"1":[30,75,150,200,400,800]},"subscription":{"500":30,"1000":75,"2000":150},"backupSubscription":{},"supportedPaymentMethods":["CARD"]},"huf":{"minimum":1000,"oneTime":{"100":[2000],"1":[2000,4000,8000,12000,20000,40000]},"subscription":{"500":2000,"1000":4000,"2000":8000},"backupSubscription":{},"supportedPaymentMethods":["CARD","PAYPAL"]},"bif":{"minimum":5000,"oneTime":{"100":[8000],"1":[8000,20000,40000,50000,100000,200000]},"subscription":{"500":8000,"1000":20000,"2000":40000},"backupSubscription":{},"supportedPaymentMethods":["CARD"]}},"levels":{"1":{"name":"Signal Boost","badge":{"id":"BOOST","category":"donor","name":"Signal Boost","description":"{short_name} supported Signal with a donation. Signal is a nonprofit with no advertisers or investors, supported only by people like you.","sprites6":["9f6c55b8b0d38cb10fafd6af70e57bb321c5db04c7ce0a2ee3dbb257d64b15d0.png","2259dc6eba1054d8f681ff72d3de552b5113a4bfe2019406c4aa99956077a8eb.png","4f46957049ee1b0caa1c67c1d26a14850abdb6a91da318d0bf1920480ca15769.png","83220e85bd0b05d87a684cd706b6ea4d49feead653ad891966b673461f86f484.png","b75cc65b5311abd3a0ffcc0ed9f6eb3edaf48dae91d1ff0063ad9b124b5b7780.png","f1a2086f6cbd303f65df1a6250ccc7dd075c9ba3fa5a0f9d226f5357b11939fd.png"],"svg":"f43094dfb9e7ac76cfa25233756195b1da4c663ef563b0e3aabb19eb052bd587.svg","svgs":[{"light":"063ca5f202e25d9a821ae8d3bb9ea8defd4ca5dcb5dd09a79e0b5816fbce2b59.svg","dark":"30200b87c92e8e7e8d006250e82a17deeb5e1bb535d81af96db0593c41e11455.svg"},{"light":"614806b25536cad2bfe060873937b083162e164f5105c8eac769e136ede86a86.svg","dark":"6e670fd52db6c162b52a0be6f974c4596401c6cf65c104552d1bf530d208c8e8.svg"},{"light":"9cb59d6bbe74d2b6ca8e0af85e477671b5923c340b5e1cb33e370695b20416f4.svg","dark":"ce1294dab20a7fe14ead9709cdf1eb67912eb7d9236a10a9b87bda5f92ddc4b8.svg"}],"duration":2592000.000000000,"imageUrl":""}},"100":{"name":"Signal UFO","badge":{"id":"GIFT","category":"donor","name":"Signal UFO","description":"A friend made a donation to Signal on behalf of {short_name}. Signal is a nonprofit with no advertisers or investors, supported only by people like you.","sprites6":["d4feaad99307bffc54f0a8968a783dc978df124201dd6630f916fdda722b1efe.png","dc5ab2f27a8f12a8fce837a9728502c1e4dac2f8e82ce344336625494f096e63.png","1baa731ba11a788218b0289371cd42be60c63185fad8e42ef5bd5cd794d25c2d.png","3f5c28034eff779b3ead9286813ef9982cf3666c66a1d290816379a43499b527.png","92c0a7b2907108c3729ffde0c26e88411cdd2719292d22cd47beef2efd6a82ff.png","fc574f1eb42f0565e4e4b14e56769d3a9f175e4474264884873d9c5ae6d75231.png"],"svg":"48678f1f97c267eca026f90de208b6ad306dc2ab17e9ebce364949367bc7ffce.svg","svgs":[{"light":"4015da2eca04b4be7ea8bf28d031201136daead8ba5dca372ffda820962a488f.svg","dark":"103578e106f0ca7fbdae52efd3fd6c81a3052c1d699bdb54256d83f3cac243c5.svg"},{"light":"01028be3a4ed40c10952856f6bb235a0f83f0f50ef98d65ea02523f7e1c4db6e.svg","dark":"be5b386a002d1d685e20829d92f07dbbbc6649afa4c08ea4aab88f1ba1ddf6d1.svg"},{"light":"65e7653f5c80bb48f14762a871a3a67a54372450bbb31df3e001b6eb6db11f3a.svg","dark":"f797cf18867b61ffeb82811c84053d37be937e072d93b861dd56c78ac08a34bd.svg"}],"duration":5184000.000000000,"imageUrl":""}},"500":{"name":"Sustainer 1","badge":{"id":"R_LOW","category":"donor","name":"Signal Star","description":"{short_name} supports Signal with a monthly donation. Signal is a nonprofit with no advertisers or investors, supported only by people like you.","sprites6":["bd21c73260e19bde0ee9cc3c9a11bb8736e974fb246a89c3c389513c9c4a1dee.png","07d7046d6d05d6c9578aa9aaccd8d31667f103b599c94ba3669a410148d78004.png","fcdb962bb49a30d33441f7950616cdbc138974aa4275957f4d0b6f44995db048.png","bc02c99f07674adadd6c1446959f8b56c3ec17aa0c1d115a3367d5b20cc337df.png","13a53c662f6921064a809f39b81a514dcf2b8e155738126213de8e5152f97e88.png","65cd037861909df8e2f72cfe43e61b85e5d47078c722ab9e547ba7b221ddaefd.png"],"svg":"cffa5499c3c1cc15d30a347e60142c9bd2f149643ef20c98da000e360c762148.svg","svgs":[{"light":"2e1012fa5a6b0eae6ae34a65de4841af11e42fede70d4d113e8c08022abbd2b1.svg","dark":"c04681148a69c771548a8067f7dc105ae8182372b5b9ab99ea9b56d34c402325.svg"},{"light":"cc4982fe898faefe60c580eed850a5db7931036ece37d1e4f482d48044d3a643.svg","dark":"712a658ab43595aa2d9cae6ddeea1206cef1ae67034ddb677aa48a2f4928253e.svg"},{"light":"17b00024044d1565d9b07c177108609fd01a6b77fa97f6317d895631da57ff17.svg","dark":"ffd276298117768e5a117bc1d80f8cfbc971151abdfb49b6d8da3e1a369852e5.svg"}],"imageUrl":""}},"1000":{"name":"Sustainer 2","badge":{"id":"R_MED","category":"donor","name":"Signal Planet","description":"{short_name} supports Signal with a monthly donation. Signal is a nonprofit with no advertisers or investors, supported only by people like you.","sprites6":["b478b78dec78efa3133ba8b91d936c763ad3c7f45ef63eff04aa0069b7d32303.png","302d1e8eee2a807d66ebc41fdffaa7e5e5092c4a48a4bf354ae0e0f2f913f980.png","97a87068c7269856d517ab306ac14293020497b32144d8e06e4c21c6c135a484.png","e7e90e3bc088b134057b044134f3ccb0d60e1e95f1a507dd43eb3af96359bb33.png","b25b1f3f58a43c8871e5e946c607a8bccbc64deef226d658293e571d9ee0062e.png","6014c26d3c17191f31ed73adcdc46ee3ecfbf505318324cde6a69567a315dc45.png"],"svg":"325ecebbc48b230fcffd09e940572e230b2c4a94a33e72c907d710679151ed99.svg","svgs":[{"light":"dc8a2d04e9709d8075591b44d20acde3e63743c5e588129c9f9deea512d5f66d.svg","dark":"209231144031e96cdc8a767e217181036c6ca59c1920f01e87963d4c3ab05239.svg"},{"light":"7d2c237b618530acde28d70c6570bdb595ed42c65a4cc5a89bbfb420b2035860.svg","dark":"f57b202e01111457ec2c1bf5ce035c01217f0c2db4d776afc0e2a875fb445b02.svg"},{"light":"4102c4da6a65fa20eea36679e9a66ba4a870d80fefc8890db3957fc5ab1faa9c.svg","dark":"03d1dac50ddf7e5e8c56fcd203e0aa3c4f27e440b7bed117197e372854d000e6.svg"}],"imageUrl":""}},"2000":{"name":"Sustainer 3","badge":{"id":"R_HIGH","category":"donor","name":"Signal Sun","description":"{short_name} supports Signal with a monthly donation. Signal is a nonprofit with no advertisers or investors, supported only by people like you.","sprites6":["7a99ad1d982329e2454ee8fad17e7bc5fab165325026cf048200228c300b6a5c.png","0408226e97ea73aa1846fcace694acf16e13cf6d1bfb36afb559d5d1c0d19aaa.png","dd90f8d2d497232462b2d65b3d1f24c2d43a00068ebed65cea765fa4ed373270.png","23a03150b55b3996b82ba2c046b38d532df154bc9c3f4b6a3a63a9e17ed62cb5.png","1b41774fda53115aaabdd3523a91daf08fe4b25e26dbf3e106c6e58a43de6559.png","f95bdb7f9a783f3035df4d1845447eff62dad7c1d746350fd2659e80b8b96562.png"],"svg":"93adf0277ac2301984a7a0f8a359f8bf061ecacdf224ca3a5175c6d6d1eaf1e2.svg","svgs":[{"light":"344b51a65885eba0f1e30ba0c374403741b1f88307b97b813e7f117ccd88b1a2.svg","dark":"07a675f4c3ae12b67ce14d0f4b7b9a1e40d58fba98cf5be6f0765e8156f21aa5.svg"},{"light":"a44bf0e4c9e2675cf705b6a736c8dfbff79186d731d2c9a8a09ff06a01205382.svg","dark":"27bf35801ff080c4a00a6795869939ea2658446fc543d861e43074e7906d2b93.svg"},{"light":"433cb00f6b01dd688a9425b0af1ca311379e3dee3c2346fc7e2462f1c0affe9b.svg","dark":"8cee8abf882cd5b0e16bf9c8a7007405ced8390482929f014ce995dd390dc01b.svg"}],"imageUrl":""}}},"backup":{"levels":{},"backupFreeTierMediaDays":30},"sepaMaximumEuros":10000} diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/CheckoutFlowActivityTest__RecurringDonations.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/CheckoutFlowActivityTest__RecurringDonations.kt new file mode 100644 index 0000000000..e0bfdccfb9 --- /dev/null +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/CheckoutFlowActivityTest__RecurringDonations.kt @@ -0,0 +1,131 @@ +package org.thoughtcrime.securesms.components.settings.app.subscription.donate + +import androidx.test.core.app.ActivityScenario +import androidx.test.espresso.Espresso.onView +import androidx.test.espresso.action.ViewActions +import androidx.test.espresso.assertion.ViewAssertions.matches +import androidx.test.espresso.matcher.ViewMatchers.isDisplayed +import androidx.test.espresso.matcher.ViewMatchers.isSelected +import androidx.test.espresso.matcher.ViewMatchers.withId +import androidx.test.espresso.matcher.ViewMatchers.withText +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.platform.app.InstrumentationRegistry +import okhttp3.mockwebserver.MockResponse +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.signal.donations.InAppPaymentType +import org.thoughtcrime.securesms.R +import org.thoughtcrime.securesms.components.settings.app.subscription.InAppPaymentsRepository +import org.thoughtcrime.securesms.database.model.InAppPaymentSubscriberRecord +import org.thoughtcrime.securesms.database.model.databaseprotos.InAppPaymentData +import org.thoughtcrime.securesms.dependencies.InstrumentationApplicationDependencyProvider +import org.thoughtcrime.securesms.keyvalue.SignalStore +import org.thoughtcrime.securesms.testing.Delete +import org.thoughtcrime.securesms.testing.Get +import org.thoughtcrime.securesms.testing.SignalActivityRule +import org.thoughtcrime.securesms.testing.success +import org.thoughtcrime.securesms.util.JsonUtils +import org.whispersystems.signalservice.api.subscriptions.ActiveSubscription +import org.whispersystems.signalservice.api.subscriptions.SubscriberId +import org.whispersystems.signalservice.internal.push.SubscriptionsConfiguration +import java.math.BigDecimal +import java.util.Currency +import kotlin.time.Duration.Companion.days +import kotlin.time.Duration.Companion.milliseconds + +@Suppress("ClassName") +@RunWith(AndroidJUnit4::class) +class CheckoutFlowActivityTest__RecurringDonations { + @get:Rule + val harness = SignalActivityRule(othersCount = 10) + + private val intent = CheckoutFlowActivity.createIntent(InstrumentationRegistry.getInstrumentation().targetContext, InAppPaymentType.RECURRING_DONATION) + + @Test + fun givenRecurringDonations_whenILoadScreen_thenIExpectMonthlySelected() { + ActivityScenario.launch(intent) + onView(withId(R.id.monthly)).check(matches(isSelected())) + } + + @Test + fun givenNoCurrentDonation_whenILoadScreen_thenIExpectContinueButton() { + ActivityScenario.launch(intent) + onView(withText("Continue")).check(matches(isDisplayed())) + } + + @Test + fun givenACurrentDonation_whenILoadScreen_thenIExpectUpgradeButton() { + initialiseConfigurationResponse() + initialiseActiveSubscription() + + ActivityScenario.launch(intent) + onView(withText(R.string.SubscribeFragment__update_subscription)).check(matches(isDisplayed())) + onView(withText(R.string.SubscribeFragment__cancel_subscription)).check(matches(isDisplayed())) + } + + @Test + fun givenACurrentDonation_whenIPressCancel_thenIExpectCancellationDialog() { + initialiseConfigurationResponse() + initialiseActiveSubscription() + + ActivityScenario.launch(intent) + onView(withText(R.string.SubscribeFragment__cancel_subscription)).check(matches(isDisplayed())) + onView(withText(R.string.SubscribeFragment__cancel_subscription)).perform(ViewActions.click()) + onView(withText(R.string.SubscribeFragment__confirm_cancellation)).check(matches(isDisplayed())) + onView(withText(R.string.SubscribeFragment__confirm)).perform(ViewActions.click()) + onView(withText(R.string.StripePaymentInProgressFragment__cancelling)).check(matches(isDisplayed())) + } + + private fun initialiseConfigurationResponse() { + InstrumentationApplicationDependencyProvider.addMockWebRequestHandlers( + Get("/v1/subscription/configuration") { + val assets = InstrumentationRegistry.getInstrumentation().context.resources.assets + assets.open("inAppPaymentsTests/configuration.json").use { stream -> + MockResponse().success(JsonUtils.fromJson(stream, SubscriptionsConfiguration::class.java)) + } + } + ) + } + + private fun initialiseActiveSubscription() { + val currency = Currency.getInstance("USD") + val subscriber = InAppPaymentSubscriberRecord( + subscriberId = SubscriberId.generate(), + currency = currency, + type = InAppPaymentSubscriberRecord.Type.DONATION, + requiresCancel = false, + paymentMethodType = InAppPaymentData.PaymentMethodType.CARD + ) + + InAppPaymentsRepository.setSubscriber(subscriber) + SignalStore.inAppPayments.setSubscriberCurrency(currency, subscriber.type) + + InstrumentationApplicationDependencyProvider.addMockWebRequestHandlers( + Get("/v1/subscription/${subscriber.subscriberId.serialize()}") { + MockResponse().success( + ActiveSubscription( + ActiveSubscription.Subscription( + 200, + currency.currencyCode, + BigDecimal.ONE, + System.currentTimeMillis().milliseconds.inWholeSeconds + 30.days.inWholeSeconds, + true, + System.currentTimeMillis().milliseconds.inWholeSeconds + 30.days.inWholeSeconds, + false, + "active", + "STRIPE", + "CARD", + false + ), + null + ) + ) + }, + Delete("/v1/subscription/${subscriber.subscriberId.serialize()}") { + Thread.sleep(10000) + MockResponse().success() + } + ) + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/DonateToSignalViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/DonateToSignalViewModel.kt index bb74b6aeb0..3c9324973a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/DonateToSignalViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/DonateToSignalViewModel.kt @@ -392,7 +392,13 @@ class DonateToSignalViewModel( if (selectedCurrency !in priceCurrencies) { Log.w(TAG, "Unsupported currency selection. Defaulting to USD. $selectedCurrency isn't supported.") val usd = PlatformCurrencyUtil.USD - val newSubscriber = InAppPaymentsRepository.getSubscriber(usd, InAppPaymentSubscriberRecord.Type.DONATION) ?: InAppPaymentSubscriberRecord(SubscriberId.generate(), usd, InAppPaymentSubscriberRecord.Type.DONATION, false, InAppPaymentData.PaymentMethodType.UNKNOWN) + val newSubscriber = InAppPaymentsRepository.getSubscriber(usd, InAppPaymentSubscriberRecord.Type.DONATION) ?: InAppPaymentSubscriberRecord( + subscriberId = SubscriberId.generate(), + currency = usd, + type = InAppPaymentSubscriberRecord.Type.DONATION, + requiresCancel = false, + paymentMethodType = InAppPaymentData.PaymentMethodType.UNKNOWN + ) InAppPaymentsRepository.setSubscriber(newSubscriber) RecurringInAppPaymentRepository.syncAccountRecord().subscribe() } diff --git a/core-util/src/main/java/org/signal/core/util/concurrent/SignalExecutors.java b/core-util/src/main/java/org/signal/core/util/concurrent/SignalExecutors.java index 466867ab74..f9d95c6952 100644 --- a/core-util/src/main/java/org/signal/core/util/concurrent/SignalExecutors.java +++ b/core-util/src/main/java/org/signal/core/util/concurrent/SignalExecutors.java @@ -88,13 +88,13 @@ public final class SignalExecutors { return handlerThread; } - private static class NumberedThreadFactory implements ThreadFactory { + public static class NumberedThreadFactory implements ThreadFactory { private final int priority; private final String baseName; private final AtomicInteger counter; - NumberedThreadFactory(@NonNull String baseName, int priority) { + public NumberedThreadFactory(@NonNull String baseName, int priority) { this.priority = priority; this.baseName = baseName; this.counter = new AtomicInteger(); diff --git a/dependencies.gradle.kts b/dependencies.gradle.kts index c837b58dd4..65beb937c9 100644 --- a/dependencies.gradle.kts +++ b/dependencies.gradle.kts @@ -181,6 +181,7 @@ dependencyResolutionManagement { version("androidx-test", "1.5.0") version("androidx-test-ext-junit", "1.1.5") version("robolectric", "4.10.3") + version("espresso", "3.4.0") library("junit-junit", "junit:junit:4.13.2") library("androidx-test-core", "androidx.test", "core").versionRef("androidx-test") @@ -190,7 +191,7 @@ dependencyResolutionManagement { library("androidx-test-monitor", "androidx.test:monitor:1.6.1") library("androidx-test-orchestrator", "androidx.test:orchestrator:1.4.1") library("androidx-test-runner", "androidx.test", "runner").versionRef("androidx-test") - library("espresso-core", "androidx.test.espresso:espresso-core:3.4.0") + library("espresso-core", "androidx.test.espresso", "espresso-core").versionRef("espresso") library("mockito-core", "org.mockito:mockito-inline:4.6.1") library("mockito-kotlin", "org.mockito.kotlin:mockito-kotlin:4.0.0") library("mockito-android", "org.mockito:mockito-android:4.6.1")