package Ġac r . browser . lightning . view . webrtc Ċ Ċ import Ġandroid . net . Uri Ċ import Ġandroid . webkit . Permission Request Ċ import Ġcom . n ha ar man . mockito _ kotlin .* Ċ import Ġorg . junit . Test Ċ Ċ /** Ċ Ġ* ĠUnit Ġtest Ġfor Ġ[ Web Rtc Permissions Model ]. Ċ Ġ*/ Ċ class ĠWeb Rtc Permissions Model Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġpermissions View Ġ= Ġmock < Web Rtc Permissions View >() ĊĊĠĠĠ Ġprivate Ġfun Ġmock Uri For Host ( host : ĠString ): ĠUri Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmock Ġ= Ġmock < Uri >() ĊĠĠĠĠĠĠĠ Ġwhenever ( mock . host ). then Ġ{ Ġhost Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmock ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` request Permission Ġwith Ġresource Ġden ial Ġden ies Ġrequest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠWeb Rtc Permissions Model () ĊĠĠĠĠĠĠĠ Ġwhenever ( permissions View . request Resources ( any (), Ġany (), Ġany ())). then Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( it . arguments [ 2 ] Ġas Ġ(( Boolean ) Ġ-> ĠUnit )). invoke ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġmock < Permission Request >() ĊĠĠĠĠĠĠĠ Ġwhenever ( request . origin ). then Ġ{ Ġmock Uri For Host (" test . com ") Ġ} ĊĠĠĠĠĠĠĠ Ġwhenever ( request . resources ). then Ġ{ ĠarrayOf (" perm 1 ", Ġ" perm 2 ") Ġ} ĊĊĠĠĠĠĠĠĠ Ġmodel . request Permission ( request , Ġpermissions View ) ĊĊĠĠĠĠĠĠĠ Ġverify ( permissions View ). request Resources ( any (), Ġany (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġverify No More Interactions ( permissions View ) ĊĊĠĠĠĠĠĠĠ Ġverify ( request ). deny () ĊĠĠĠĠĠĠĠ Ġverify ( request , Ġnever ()). grant ( any ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` request Permission Ġwith Ġresource Ġgrant Ġand Ġpermission Ġden ial Ġden ies Ġrequest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠWeb Rtc Permissions Model () ĊĠĠĠĠĠĠĠ Ġwhenever ( permissions View . request Resources ( any (), Ġany (), Ġany ())). then Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( it . arguments [ 2 ] Ġas Ġ(( Boolean ) Ġ-> ĠUnit )). invoke ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwhenever ( permissions View . request Permissions ( any (), Ġany ())). then Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( it . arguments [ 1 ] Ġas Ġ(( Boolean ) Ġ-> ĠUnit )). invoke ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġmock < Permission Request >() ĊĠĠĠĠĠĠĠ Ġwhenever ( request . origin ). then Ġ{ Ġmock Uri For Host (" test . com ") Ġ} ĊĠĠĠĠĠĠĠ Ġwhenever ( request . resources ). then Ġ{ ĠarrayOf (" perm 1 ", Ġ" perm 2 ") Ġ} ĊĊĠĠĠĠĠĠĠ Ġmodel . request Permission ( request , Ġpermissions View ) ĊĊĠĠĠĠĠĠĠ Ġverify ( permissions View ). request Resources ( any (), Ġany (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġverify ( permissions View ). request Permissions ( any (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġverify No More Interactions ( permissions View ) ĊĊĠĠĠĠĠĠĠ Ġverify ( request ). deny () ĊĠĠĠĠĠĠĠ Ġverify ( request , Ġnever ()). grant ( any ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` request Permission Ġwith Ġresource Ġand Ġpermission Ġgrant Ġgr ants Ġrequest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠWeb Rtc Permissions Model () ĊĠĠĠĠĠĠĠ Ġwhenever ( permissions View . request Resources ( any (), Ġany (), Ġany ())). then Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( it . arguments [ 2 ] Ġas Ġ(( Boolean ) Ġ-> ĠUnit )). invoke ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwhenever ( permissions View . request Permissions ( any (), Ġany ())). then Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( it . arguments [ 1 ] Ġas Ġ(( Boolean ) Ġ-> ĠUnit )). invoke ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrequested Resources Ġ= ĠarrayOf (" perm 1 ", Ġ" perm 2 ") ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġmock < Permission Request >() ĊĠĠĠĠĠĠĠ Ġwhenever ( request . origin ). then Ġ{ Ġmock Uri For Host (" test . com ") Ġ} ĊĠĠĠĠĠĠĠ Ġwhenever ( request . resources ). then Ġ{ Ġrequested Resources Ġ} ĊĊĠĠĠĠĠĠĠ Ġmodel . request Permission ( request , Ġpermissions View ) ĊĊĠĠĠĠĠĠĠ Ġverify ( permissions View ). request Resources ( any (), Ġany (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġverify ( permissions View ). request Permissions ( any (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġverify No More Interactions ( permissions View ) ĊĊĠĠĠĠĠĠĠ Ġverify ( request ). grant ( requested Resources ) ĊĠĠĠĠĠĠĠ Ġverify ( request , Ġnever ()). deny () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` request Permission Ġwith Ġpre - gr anted Ġresources Ġand Ġpermission Ġgrant Ġgr ants Ġrequest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠWeb Rtc Permissions Model () ĊĠĠĠĠĠĠĠ Ġwhenever ( permissions View . request Resources ( any (), Ġany (), Ġany ())). then Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( it . arguments [ 2 ] Ġas Ġ(( Boolean ) Ġ-> ĠUnit )). invoke ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwhenever ( permissions View . request Permissions ( any (), Ġany ())). then Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( it . arguments [ 1 ] Ġas Ġ(( Boolean ) Ġ-> ĠUnit )). invoke ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfirst Requested Resources Ġ= ĠarrayOf (" perm 1 ", Ġ" perm 2 ") ĊĠĠĠĠĠĠĠ Ġval Ġfirst Request Ġ= Ġmock < Permission Request >() ĊĠĠĠĠĠĠĠ Ġwhenever ( first Request . origin ). then Ġ{ Ġmock Uri For Host (" test . com ") Ġ} ĊĠĠĠĠĠĠĠ Ġwhenever ( first Request . resources ). then Ġ{ Ġfirst Requested Resources Ġ} ĊĊĠĠĠĠĠĠĠ Ġmodel . request Permission ( first Request , Ġpermissions View ) ĊĊĠĠĠĠĠĠĠ Ġverify ( permissions View ). request Resources ( any (), Ġany (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġverify ( permissions View ). request Permissions ( any (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġverify No More Interactions ( permissions View ) ĊĊĠĠĠĠĠĠĠ Ġverify ( first Request ). grant ( first Requested Resources ) ĊĠĠĠĠĠĠĠ Ġverify ( first Request , Ġnever ()). deny () ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġthe Ġsecond Ġrequest Ġwith Ġa Ġsubset Ġof Ġresources ĊĠĠĠĠĠĠĠ Ġval Ġsecond Requested Resources Ġ= ĠarrayOf (" perm 1 ") ĊĠĠĠĠĠĠĠ Ġval Ġsecond Request Ġ= Ġmock < Permission Request >() ĊĠĠĠĠĠĠĠ Ġwhenever ( second Request . origin ). then Ġ{ Ġmock Uri For Host (" test . com ") Ġ} ĊĠĠĠĠĠĠĠ Ġwhenever ( second Request . resources ). then Ġ{ Ġsecond Requested Resources Ġ} ĊĊĠĠĠĠĠĠĠ Ġmodel . request Permission ( second Request , Ġpermissions View ) ĊĊĠĠĠĠĠĠĠ Ġverify ( permissions View , Ġtimes ( 2 )). request Permissions ( any (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġverify No More Interactions ( permissions View ) ĊĠĠĠĠĠĠĠ Ġverify ( second Request ). grant ( second Requested Resources ) ĊĠĠĠĠĠĠĠ Ġverify ( second Request , Ġnever ()). deny () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` request Permission Ġwith Ġpre - gr anted Ġresources Ġand Ġpermission Ġden ial Ġden ies Ġrequest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠWeb Rtc Permissions Model () ĊĠĠĠĠĠĠĠ Ġwhenever ( permissions View . request Resources ( any (), Ġany (), Ġany ())). then Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( it . arguments [ 2 ] Ġas Ġ(( Boolean ) Ġ-> ĠUnit )). invoke ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwhenever ( permissions View . request Permissions ( any (), Ġany ())). then Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( it . arguments [ 1 ] Ġas Ġ(( Boolean ) Ġ-> ĠUnit )). invoke ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfirst Requested Resources Ġ= ĠarrayOf (" perm 1 ", Ġ" perm 2 ") ĊĠĠĠĠĠĠĠ Ġval Ġfirst Request Ġ= Ġmock < Permission Request >() ĊĠĠĠĠĠĠĠ Ġwhenever ( first Request . origin ). then Ġ{ Ġmock Uri For Host (" test . com ") Ġ} ĊĠĠĠĠĠĠĠ Ġwhenever ( first Request . resources ). then Ġ{ Ġfirst Requested Resources Ġ} ĊĊĠĠĠĠĠĠĠ Ġmodel . request Permission ( first Request , Ġpermissions View ) ĊĊĠĠĠĠĠĠĠ Ġverify ( permissions View ). request Resources ( any (), Ġany (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġverify ( permissions View ). request Permissions ( any (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġverify No More Interactions ( permissions View ) ĊĊĠĠĠĠĠĠĠ Ġverify ( first Request ). grant ( first Requested Resources ) ĊĠĠĠĠĠĠĠ Ġverify ( first Request , Ġnever ()). deny () ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġthe Ġsecond Ġrequest Ġwith Ġa Ġsubset Ġof Ġresources ĊĠĠĠĠĠĠĠ Ġval Ġsecond Requested Resources Ġ= ĠarrayOf (" perm 1 ") ĊĠĠĠĠĠĠĠ Ġval Ġsecond Request Ġ= Ġmock < Permission Request >() ĊĠĠĠĠĠĠĠ Ġwhenever ( second Request . origin ). then Ġ{ Ġmock Uri For Host (" test . com ") Ġ} ĊĠĠĠĠĠĠĠ Ġwhenever ( second Request . resources ). then Ġ{ Ġsecond Requested Resources Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhenever ( permissions View . request Permissions ( any (), Ġany ())). then Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( it . arguments [ 1 ] Ġas Ġ(( Boolean ) Ġ-> ĠUnit )). invoke ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmodel . request Permission ( second Request , Ġpermissions View ) ĊĊĠĠĠĠĠĠĠ Ġverify ( permissions View , Ġtimes ( 2 )). request Permissions ( any (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġverify No More Interactions ( permissions View ) ĊĠĠĠĠĠĠĠ Ġverify ( second Request ). deny () ĊĠĠĠĠĠĠĠ Ġverify ( second Request , Ġnever ()). grant ( any ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` request Permission Ġwith Ġpermission Ġgrant Ġafter Ġmultiple Ġgr ants `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠWeb Rtc Permissions Model () ĊĠĠĠĠĠĠĠ Ġwhenever ( permissions View . request Resources ( any (), Ġany (), Ġany ())). then Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( it . arguments [ 2 ] Ġas Ġ(( Boolean ) Ġ-> ĠUnit )). invoke ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwhenever ( permissions View . request Permissions ( any (), Ġany ())). then Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( it . arguments [ 1 ] Ġas Ġ(( Boolean ) Ġ-> ĠUnit )). invoke ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfirst Requested Resources Ġ= ĠarrayOf (" perm 1 ") ĊĠĠĠĠĠĠĠ Ġval Ġfirst Request Ġ= Ġmock < Permission Request >() ĊĠĠĠĠĠĠĠ Ġwhenever ( first Request . origin ). then Ġ{ Ġmock Uri For Host (" test . com ") Ġ} ĊĠĠĠĠĠĠĠ Ġwhenever ( first Request . resources ). then Ġ{ Ġfirst Requested Resources Ġ} ĊĊĠĠĠĠĠĠĠ Ġmodel . request Permission ( first Request , Ġpermissions View ) ĊĊĠĠĠĠĠĠĠ Ġverify ( permissions View ). request Resources ( any (), Ġany (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġverify ( permissions View ). request Permissions ( any (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġverify No More Interactions ( permissions View ) ĊĊĠĠĠĠĠĠĠ Ġverify ( first Request ). grant ( first Requested Resources ) ĊĠĠĠĠĠĠĠ Ġverify ( first Request , Ġnever ()). deny () ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġthe Ġsecond Ġrequest Ġwith Ġa Ġsuper set Ġof Ġresources ĊĠĠĠĠĠĠĠ Ġval Ġsecond Requested Resources Ġ= ĠarrayOf (" perm 1 ", Ġ" perm 2 ") ĊĠĠĠĠĠĠĠ Ġval Ġsecond Request Ġ= Ġmock < Permission Request >() ĊĠĠĠĠĠĠĠ Ġwhenever ( second Request . origin ). then Ġ{ Ġmock Uri For Host (" test . com ") Ġ} ĊĠĠĠĠĠĠĠ Ġwhenever ( second Request . resources ). then Ġ{ Ġsecond Requested Resources Ġ} ĊĊĠĠĠĠĠĠĠ Ġmodel . request Permission ( second Request , Ġpermissions View ) ĊĊĠĠĠĠĠĠĠ Ġverify ( permissions View , Ġtimes ( 2 )). request Resources ( any (), Ġany (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġverify ( permissions View , Ġtimes ( 2 )). request Permissions ( any (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġverify No More Interactions ( permissions View ) ĊĠĠĠĠĠĠĠ Ġverify ( second Request ). grant ( second Requested Resources ) ĊĠĠĠĠĠĠĠ Ġverify ( second Request , Ġnever ()). deny () ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġthe Ġthird Ġrequest Ġwith Ġa Ġsubset Ġof Ġresources ĊĠĠĠĠĠĠĠ Ġval Ġthird Requested Resources Ġ= ĠarrayOf (" perm 1 ", Ġ" perm 2 ") ĊĠĠĠĠĠĠĠ Ġval Ġthird Request Ġ= Ġmock < Permission Request >() ĊĠĠĠĠĠĠĠ Ġwhenever ( third Request . origin ). then Ġ{ Ġmock Uri For Host (" test . com ") Ġ} ĊĠĠĠĠĠĠĠ Ġwhenever ( third Request . resources ). then Ġ{ Ġthird Requested Resources Ġ} ĊĊĠĠĠĠĠĠĠ Ġmodel . request Permission ( third Request , Ġpermissions View ) ĊĊĠĠĠĠĠĠĠ Ġverify ( permissions View , Ġtimes ( 2 )). request Resources ( any (), Ġany (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġverify ( permissions View , Ġtimes ( 3 )). request Permissions ( any (), Ġany ()) ĊĠĠĠĠĠĠĠ Ġverify No More Interactions ( permissions View ) ĊĠĠĠĠĠĠĠ Ġverify ( third Request ). grant ( third Requested Resources ) ĊĠĠĠĠĠĠĠ Ġverify ( third Request , Ġnever ()). deny () ĊĠĠĠ Ġ} Ċ }