/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠExp edia , ĠInc Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . exp edi ag roup . graphql . spring . execution Ċ Ċ import Ġcom . exp edi ag roup . graphql . spring . model . Subscription Operation Message Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġio . mock k . verify Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . reactiv est ream s . Subscription Ċ import Ġorg . springframework . web . reactive . socket . WebSocket Session Ċ import Ġreactor . core . publisher . Mono Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertNull Ċ Ċ class ĠApollo Subscription Session State Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` save KeepAlive Subscription Ġsaves Ġthe Ġsubscription Ġby Ġsession Ġid `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠApollo Subscription Session State () ĊĠĠĠĠĠĠĠ Ġval Ġmock Subscription : ĠSubscription Ġ= Ġmock k () ĊĠĠĠĠĠĠĠ Ġval Ġmock Session : ĠWebSocket Session Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġid Ġ} Ġreturns Ġ" 1 2 3 " Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 0 , Ġactual Ġ= Ġstate . active KeepAlive Sessions . size ) ĊĊĠĠĠĠĠĠĠ Ġstate . save KeepAlive Subscription ( mock Session , Ġmock Subscription ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 1 , Ġactual Ġ= Ġstate . active KeepAlive Sessions . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġmock Subscription , Ġactual Ġ= Ġstate . active KeepAlive Sessions [" 1 2 3 "]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` save Operation Ġdoes Ġnot Ġsave Ġthe Ġsubscription Ġif Ġoperation Ġid Ġis Ġnull `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠApollo Subscription Session State () ĊĠĠĠĠĠĠĠ Ġval Ġmock Subscription : ĠSubscription Ġ= Ġmock k () ĊĠĠĠĠĠĠĠ Ġval Ġmock Session : ĠWebSocket Session Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġid Ġ} Ġreturns Ġ" 1 2 3 " Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmock Operation Message : ĠSubscription Operation Message Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġid Ġ} Ġreturns Ġnull Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 0 , Ġactual Ġ= Ġstate . active Operations . size ) ĊĊĠĠĠĠĠĠĠ Ġstate . save Operation ( mock Session , Ġmock Operation Message , Ġmock Subscription ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 0 , Ġactual Ġ= Ġstate . active Operations . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` save Operation Ġsaves Ġthe Ġsubscription Ġif Ġoperation Ġid Ġis Ġvalid `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠApollo Subscription Session State () ĊĠĠĠĠĠĠĠ Ġval Ġmock Subscription : ĠSubscription Ġ= Ġmock k () ĊĠĠĠĠĠĠĠ Ġval Ġmock Session : ĠWebSocket Session Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġid Ġ} Ġreturns Ġ" 1 2 3 " Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmock Operation Message : ĠSubscription Operation Message Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġid Ġ} Ġreturns Ġ" abc " Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 0 , Ġactual Ġ= Ġstate . active Operations . size ) ĊĊĠĠĠĠĠĠĠ Ġstate . save Operation ( mock Session , Ġmock Operation Message , Ġmock Subscription ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 1 , Ġactual Ġ= Ġstate . active Operations . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġmock Subscription , Ġactual Ġ= Ġstate . active Operations [" 1 2 3 "] ?. get (" abc ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` save Operation Ġsaves Ġthe Ġsubscription Ġand Ġdoes Ġnot Ġduplicate Ġsession Ġids Ġif Ġoperation Ġid Ġis Ġvalid `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠApollo Subscription Session State () ĊĠĠĠĠĠĠĠ Ġval Ġmock Subscription : ĠSubscription Ġ= Ġmock k () ĊĠĠĠĠĠĠĠ Ġval Ġmock Session : ĠWebSocket Session Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġid Ġ} Ġreturns Ġ" 1 2 3 " Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmock Operation Message 1 : ĠSubscription Operation Message Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġid Ġ} Ġreturns Ġ" abc " Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmock Operation Message 2 : ĠSubscription Operation Message Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġid Ġ} Ġreturns Ġ" def " Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 0 , Ġactual Ġ= Ġstate . active Operations . size ) ĊĊĠĠĠĠĠĠĠ Ġstate . save Operation ( mock Session , Ġmock Operation Message 1 , Ġmock Subscription ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 1 , Ġactual Ġ= Ġstate . active Operations . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 1 , Ġactual Ġ= Ġstate . active Operations [" 1 2 3 "] ?. size ) ĊĊĠĠĠĠĠĠĠ Ġstate . save Operation ( mock Session , Ġmock Operation Message 2 , Ġmock Subscription ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 1 , Ġactual Ġ= Ġstate . active Operations . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 2 , Ġactual Ġ= Ġstate . active Operations [" 1 2 3 "] ?. size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` stop Operation Ġdoes Ġnot Ġcancel Ġthe Ġsubscription Ġif Ġoperation Ġid Ġis Ġnull `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠApollo Subscription Session State () ĊĠĠĠĠĠĠĠ Ġval Ġmock Subscription : ĠSubscription Ġ= Ġmock k () ĊĠĠĠĠĠĠĠ Ġval Ġmock Session : ĠWebSocket Session Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġid Ġ} Ġreturns Ġ" 1 2 3 " Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġinput Operation : ĠSubscription Operation Message Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġid Ġ} Ġreturns Ġ" abc " Ġ} ĊĊĠĠĠĠĠĠĠ Ġstate . save Operation ( mock Session , Ġinput Operation , Ġmock Subscription ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 1 , Ġactual Ġ= Ġstate . active Operations . size ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcancel Operation : ĠSubscription Operation Message Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġid Ġ} Ġreturns Ġnull Ġ} ĊĠĠĠĠĠĠĠ Ġstate . stop Operation ( mock Session , Ġcancel Operation ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 1 , Ġactual Ġ= Ġstate . active Operations . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġmock Subscription , Ġactual Ġ= Ġstate . active Operations [" 1 2 3 "] ?. get (" abc ")) ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 0 ) Ġ{ Ġmock Subscription . cancel () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` stop Operation Ġdoes Ġnot Ġcancel Ġthe Ġsubscription Ġif Ġoperation Ġid Ġnot Ġmatch `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠApollo Subscription Session State () ĊĠĠĠĠĠĠĠ Ġval Ġmock Subscription : ĠSubscription Ġ= Ġmock k () ĊĠĠĠĠĠĠĠ Ġval Ġmock Session : ĠWebSocket Session Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġid Ġ} Ġreturns Ġ" 1 2 3 " Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġinput Operation : ĠSubscription Operation Message Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġid Ġ} Ġreturns Ġ" abc " Ġ} ĊĊĠĠĠĠĠĠĠ Ġstate . save Operation ( mock Session , Ġinput Operation , Ġmock Subscription ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 1 , Ġactual Ġ= Ġstate . active Operations . size ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcancel Operation : ĠSubscription Operation Message Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġid Ġ} Ġreturns Ġ" xyz " Ġ} ĊĠĠĠĠĠĠĠ Ġstate . stop Operation ( mock Session , Ġcancel Operation ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 1 , Ġactual Ġ= Ġstate . active Operations . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġmock Subscription , Ġactual Ġ= Ġstate . active Operations [" 1 2 3 "] ?. get (" abc ")) ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 0 ) Ġ{ Ġmock Subscription . cancel () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` stop Operation Ġclears Ġentire Ġoperation Ġcache Ġif Ġit Ġis Ġempty Ġafter Ġremoval `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠApollo Subscription Session State () ĊĠĠĠĠĠĠĠ Ġval Ġmock Subscription : ĠSubscription Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġcancel () Ġ} Ġreturns ĠUnit Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmock Session : ĠWebSocket Session Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġid Ġ} Ġreturns Ġ" 1 2 3 " Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġinput Operation : ĠSubscription Operation Message Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġid Ġ} Ġreturns Ġ" abc " Ġ} ĊĊĠĠĠĠĠĠĠ Ġstate . save Operation ( mock Session , Ġinput Operation , Ġmock Subscription ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 1 , Ġactual Ġ= Ġstate . active Operations . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 1 , Ġactual Ġ= Ġstate . active Operations [" 1 2 3 "] ?. size ) ĊĊĠĠĠĠĠĠĠ Ġstate . stop Operation ( mock Session , Ġinput Operation ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 0 , Ġactual Ġ= Ġstate . active Operations . size ) ĊĠĠĠĠĠĠĠ ĠassertNull ( state . active Operations [" 1 2 3 "]) ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ Ġmock Subscription . cancel () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` stop Operation Ġcancel s Ġthe Ġsubscription Ġif Ġoperation Ġid Ġis Ġvalid `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠApollo Subscription Session State () ĊĠĠĠĠĠĠĠ Ġval Ġmock Session : ĠWebSocket Session Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġid Ġ} Ġreturns Ġ" 1 2 3 " Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmock Subscription 1 : ĠSubscription Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġcancel () Ġ} Ġreturns ĠUnit Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmock Subscription 2 : ĠSubscription Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġcancel () Ġ} Ġreturns ĠUnit Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġinput Operation 1 : ĠSubscription Operation Message Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġid Ġ} Ġreturns Ġ" abc " Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġinput Operation 2 : ĠSubscription Operation Message Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġid Ġ} Ġreturns Ġ" def " Ġ} ĊĊĠĠĠĠĠĠĠ Ġstate . save Operation ( mock Session , Ġinput Operation 1 , Ġmock Subscription 1 ) ĊĠĠĠĠĠĠĠ Ġstate . save Operation ( mock Session , Ġinput Operation 2 , Ġmock Subscription 2 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 1 , Ġactual Ġ= Ġstate . active Operations . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 2 , Ġactual Ġ= Ġstate . active Operations [" 1 2 3 "] ?. size ) ĊĊĠĠĠĠĠĠĠ Ġstate . stop Operation ( mock Session , Ġinput Operation 1 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 1 , Ġactual Ġ= Ġstate . active Operations . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 1 , Ġactual Ġ= Ġstate . active Operations [" 1 2 3 "] ?. size ) ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ Ġmock Subscription 1 . cancel () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` terminate Session Ġcancel s Ġthe Ġkeep Ġalive Ġsubscription `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠApollo Subscription Session State () ĊĠĠĠĠĠĠĠ Ġval Ġmock Subscription : ĠSubscription Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġcancel () Ġ} Ġreturns ĠUnit Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmock Session : ĠWebSocket Session Ġ= Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġid Ġ} Ġreturns Ġ" 1 2 3 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġclose () Ġ} Ġreturns ĠMono . empty () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġstate . save KeepAlive Subscription ( mock Session , Ġmock Subscription ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 1 , Ġactual Ġ= Ġstate . active KeepAlive Sessions . size ) ĊĊĠĠĠĠĠĠĠ Ġstate . terminate Session ( mock Session ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 0 , Ġactual Ġ= Ġstate . active KeepAlive Sessions . size ) ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ Ġmock Subscription . cancel () Ġ} ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ Ġmock Session . close () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` terminate Session Ġcancel s Ġall Ġsubscriptions Ġfor Ġthe Ġsession Ġand Ġoperations `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠApollo Subscription Session State () ĊĠĠĠĠĠĠĠ Ġval Ġmock Session Subscription : ĠSubscription Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġcancel () Ġ} Ġreturns ĠUnit Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmock Operation Subscription : ĠSubscription Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġcancel () Ġ} Ġreturns ĠUnit Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġinput Operation : ĠSubscription Operation Message Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġid Ġ} Ġreturns Ġ" abc " Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmock Session : ĠWebSocket Session Ġ= Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġid Ġ} Ġreturns Ġ" 1 2 3 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġclose () Ġ} Ġreturns ĠMono . empty () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġstate . save KeepAlive Subscription ( mock Session , Ġmock Session Subscription ) ĊĠĠĠĠĠĠĠ Ġstate . save Operation ( mock Session , Ġinput Operation , Ġmock Operation Subscription ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 1 , Ġactual Ġ= Ġstate . active KeepAlive Sessions . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 1 , Ġactual Ġ= Ġstate . active Operations . size ) ĊĊĠĠĠĠĠĠĠ Ġstate . terminate Session ( mock Session ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 0 , Ġactual Ġ= Ġstate . active KeepAlive Sessions . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 0 , Ġactual Ġ= Ġstate . active Operations . size ) ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ Ġmock Session Subscription . cancel () Ġ} ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ Ġmock Operation Subscription . cancel () Ġ} ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ Ġmock Session . close () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` terminate Session Ġdoes Ġnot Ġcancel Ġany Ġsubscriptions Ġif Ġthe Ġsession Ġid Ġdoes Ġnot Ġmatch `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠApollo Subscription Session State () ĊĠĠĠĠĠĠĠ Ġval Ġmock Session Subscription : ĠSubscription Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġcancel () Ġ} Ġreturns ĠUnit Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmock Operation Subscription : ĠSubscription Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġcancel () Ġ} Ġreturns ĠUnit Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġinput Operation : ĠSubscription Operation Message Ġ= Ġmock k Ġ{ Ġevery Ġ{ Ġid Ġ} Ġreturns Ġ" abc " Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmock Session : ĠWebSocket Session Ġ= Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġid Ġ} Ġreturns Ġ" 1 2 3 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġclose () Ġ} Ġreturns ĠMono . empty () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġstate . save KeepAlive Subscription ( mock Session , Ġmock Session Subscription ) ĊĠĠĠĠĠĠĠ Ġstate . save Operation ( mock Session , Ġinput Operation , Ġmock Operation Subscription ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 1 , Ġactual Ġ= Ġstate . active KeepAlive Sessions . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 1 , Ġactual Ġ= Ġstate . active Operations . size ) ĊĊĠĠĠĠĠĠĠ Ġval Ġnon Matching Session : ĠWebSocket Session Ġ= Ġmock k Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġid Ġ} Ġreturns Ġ" xyz " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġclose () Ġ} Ġreturns ĠMono . empty () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġstate . terminate Session ( non Matching Session ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 1 , Ġactual Ġ= Ġstate . active KeepAlive Sessions . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ= Ġ 1 , Ġactual Ġ= Ġstate . active Operations . size ) ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 0 ) Ġ{ Ġmock Session Subscription . cancel () Ġ} ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 0 ) Ġ{ Ġmock Operation Subscription . cancel () Ġ} ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 0 ) Ġ{ Ġmock Session . close () Ġ} ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ Ġnon Matching Session . close () Ġ} ĊĠĠĠ Ġ} Ċ } Ċ