package Ġde . r ki . cor on aw arn app . cor on atest . type . rapid ant igen Ċ Ċ import Ġde . r ki . cor on aw arn app . cor on atest . qrcode . Cor ona Test QR Code Ċ import Ġde . r ki . cor on aw arn app . cor on atest . server . Cor ona TestResult Ċ import Ġde . r ki . cor on aw arn app . cor on atest . server . Cor ona TestResult . PC R _ INVALID Ċ import Ġde . r ki . cor on aw arn app . cor on atest . server . Cor ona TestResult . PC R _ NEGATIVE Ċ import Ġde . r ki . cor on aw arn app . cor on atest . server . Cor ona TestResult . PC R _ OR _ RAT _ PENDING Ċ import Ġde . r ki . cor on aw arn app . cor on atest . server . Cor ona TestResult . PC R _ POSITIVE Ċ import Ġde . r ki . cor on aw arn app . cor on atest . server . Cor ona TestResult . PC R _ RE DE E MED Ċ import Ġde . r ki . cor on aw arn app . cor on atest . server . Cor ona TestResult . RAT _ INVALID Ċ import Ġde . r ki . cor on aw arn app . cor on atest . server . Cor ona TestResult . RAT _ NEGATIVE Ċ import Ġde . r ki . cor on aw arn app . cor on atest . server . Cor ona TestResult . RAT _ PENDING Ċ import Ġde . r ki . cor on aw arn app . cor on atest . server . Cor ona TestResult . RAT _ POSITIVE Ċ import Ġde . r ki . cor on aw arn app . cor on atest . server . Cor ona TestResult . RAT _ RE DE E MED Ċ import Ġde . r ki . cor on aw arn app . cor on atest . server . Cor ona TestResult . values Ċ import Ġde . r ki . cor on aw arn app . cor on atest . server . Cor ona TestResult Response Ċ import Ġde . r ki . cor on aw arn app . cor on atest . server . Registration Data Ċ import Ġde . r ki . cor on aw arn app . cor on atest . server . Registration Request Ċ import Ġde . r ki . cor on aw arn app . cor on atest . server . Verification KeyType Ċ import Ġde . r ki . cor on aw arn app . cor on atest . type . Cor ona Test . Type . R AP ID _ ANT IG EN Ċ import Ġde . r ki . cor on aw arn app . cor on atest . type . Cor ona Test Service Ċ import Ġde . r ki . cor on aw arn app . dat ad on ation . analytics . modules . key submission . Analytics Key Submission Collector Ċ import Ġde . r ki . cor on aw arn app . dat ad on ation . analytics . modules . test result . Analytics TestResult Collector Ċ import Ġde . r ki . cor on aw arn app . exception . http . BadRequest Exception Ċ import Ġde . r ki . cor on aw arn app . util . TimeStamp er Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġio . mock k . Mock K Annotations Ċ import Ġio . mock k . Runs Ċ import Ġio . mock k . co Every Ċ import Ġio . mock k . co Verify Ċ import Ġio . mock k . every Ċ import Ġio . mock k . impl . annotations . Mock K Ċ import Ġio . mock k . just Ċ import Ġkotlinx . coroutines . test . run Blocking Test Ċ import Ġorg . joda . time . Duration Ċ import Ġorg . joda . time . Instant Ċ import Ġorg . joda . time . LocalDate Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġtest helpers . Base Test Ċ Ċ class ĠRA Processor Test Ġ: ĠBaseTest () Ġ{ ĊĊĠĠĠ Ġ@ Mock K Ġlateinit Ġvar Ġtime Stamp er : ĠTime Stamp er ĊĠĠĠ Ġ@ Mock K Ġlateinit Ġvar Ġsubmission Service : ĠCor ona Test Service ĊĠĠĠ Ġ@ Mock K Ġlateinit Ġvar Ġanalytics Key Submission Collector : ĠAnalytics Key Submission Collector ĊĠĠĠ Ġ@ Mock K Ġlateinit Ġvar Ġanalytics TestResult Collector : ĠAnalytics TestResult Collector ĊĊĠĠĠ Ġprivate Ġval Ġnow UTC Ġ= ĠInstant . parse (" 2 0 2 1 - 0 3 - 1 5 T 0 5 : 4 5 : 0 0 . 0 0 0 Z ") ĊĊĠĠĠ Ġprivate Ġval Ġdefault Test Ġ= ĠR AC or ona Test ( ĊĠĠĠĠĠĠĠ Ġidentifier Ġ= Ġ" identifier ", ĊĠĠĠĠĠĠĠ Ġlast UpdatedAt Ġ= ĠInstant . EPOCH , ĊĠĠĠĠĠĠĠ Ġregistered At Ġ= Ġnow UTC , ĊĠĠĠĠĠĠĠ Ġregistration Token Ġ= Ġ" reg token ", ĊĠĠĠĠĠĠĠ Ġtest Result Ġ= ĠR AT _ PENDING , ĊĠĠĠĠĠĠĠ Ġtested At Ġ= ĠInstant . EPOCH , ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ ĠMock K Annotations . init ( this ) ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtime Stamp er . now UTC Ġ} Ġreturns Ġnow UTC ĊĊĠĠĠĠĠĠĠ Ġsubmission Service . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġcheck TestResult ( any ()) Ġ} Ġreturns ĠCor ona TestResult Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcor ona TestResult Ġ= ĠP CR _ OR _ RAT _ PENDING , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsample Collected At Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlab Id Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġregister Test ( any ()) Ġ} Ġanswers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġarg < Registration Request >( 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRegistration Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregistration Token Ġ= Ġ" reg token -${ request . type }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result Response Ġ= ĠCor ona TestResult Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcor ona TestResult Ġ= ĠP CR _ OR _ RAT _ PENDING , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsample Collected At Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlab Id Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġanalytics Key Submission Collector . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġreport Registered With Tele T AN () Ġ} Ġjust ĠRuns ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġreset ( R AP ID _ ANT IG EN ) Ġ} Ġjust ĠRuns ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġreport Positive TestResult Received ( R AP ID _ ANT IG EN ) Ġ} Ġjust ĠRuns ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġreport Test Registered ( R AP ID _ ANT IG EN ) Ġ} Ġjust ĠRuns ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġanalytics TestResult Collector . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġreport TestResult At Registration ( any (), ĠR AP ID _ ANT IG EN ) Ġ} Ġjust ĠRuns ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġreport TestResult Received ( any (), ĠR AP ID _ ANT IG EN ) Ġ} Ġjust ĠRuns ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġreport Test Registered ( R AP ID _ ANT IG EN ) Ġ} Ġjust ĠRuns ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġclear ( R AP ID _ ANT IG EN ) Ġ} Ġjust ĠRuns ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Instance () Ġ= ĠR AT est Processor ( ĊĠĠĠĠĠĠĠ Ġtime Stamp er Ġ= Ġtime Stamp er , ĊĠĠĠĠĠĠĠ Ġsubmission Service Ġ= Ġsubmission Service , ĊĠĠĠĠĠĠĠ Ġanalytics Key Submission Collector Ġ= Ġanalytics Key Submission Collector , ĊĠĠĠĠĠĠĠ Ġanalytics TestResult Collector Ġ= Ġanalytics TestResult Collector , ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` if Ġwe Ġreceive Ġa Ġpending Ġresult Ġ 6 0 Ġdays Ġafter Ġregistration , Ġwe Ġmap Ġto ĠRE DE E MED `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= Ġcreate Instance () ĊĊĠĠĠĠĠĠĠ Ġval Ġra Test Ġ= Ġdefault Test . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result Ġ= ĠR AT _ POSITIVE , ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġinstance . poll Server ( ra Test ). test Result ĠshouldBe ĠP CR _ OR _ RAT _ PENDING ĊĊĠĠĠĠĠĠĠ Ġval Ġpast 6 0 Days Test Ġ= Ġra Test . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregistered At Ġ= Ġnow UTC . minus ( Duration . standard Days ( 6 1 )) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġinstance . poll Server ( past 6 0 Days Test ). test Result ĠshouldBe ĠR AT _ RE DE E MED ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` register ing Ġa Ġnew Ġtest `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠCor ona Test QR Code . R apid Ant igen ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhash Ġ= Ġ" hash ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠInstant . EPOCH , ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= Ġcreate Instance () ĊĠĠĠĠĠĠĠ Ġinstance . create ( request ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Server Request Ġ= ĠRegistration Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= Ġrequest . registration Identifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠVerification KeyType . GUID , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate OfBirth Key Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubmission Service . register Test ( expected Server Request ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` register ing Ġa Ġnew Ġtest Ġmaps Ġinvalid Ġresults Ġto ĠINVALID Ġstate `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġregistration Data Ġ= ĠRegistration Data ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregistration Token Ġ= Ġ" reg token ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result Response Ġ= ĠCor ona TestResult Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcor ona TestResult Ġ= ĠP CR _ OR _ RAT _ PENDING , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsample Collected At Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlab Id Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġsubmission Service . register Test ( any ()) Ġ} Ġanswers Ġ{ Ġregistration Data Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= Ġcreate Instance () ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠCor ona Test QR Code . R apid Ant igen ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhash Ġ= Ġ" hash ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠInstant . EPOCH , ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġvalues (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregistration Data Ġ= Ġregistration Data . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result Response Ġ= ĠCor ona TestResult Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcor ona TestResult Ġ= Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsample Collected At Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlab Id Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP CR _ NEGATIVE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP CR _ POSITIVE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP CR _ INVALID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP CR _ RE DE E MED Ġ-> Ġinstance . create ( request ). test Result ĠshouldBe ĠR AT _ INVALID ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP CR _ OR _ RAT _ PENDING , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR AT _ PENDING , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR AT _ NEGATIVE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR AT _ POSITIVE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR AT _ INVALID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR AT _ RE DE E MED Ġ-> Ġinstance . create ( request ). test Result ĠshouldBe Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` polling Ġfilters Ġout Ġinvalid Ġtest Ġresult Ġvalues `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġpoll Result : ĠCor ona TestResult Ġ= ĠP CR _ OR _ RAT _ PENDING ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġsubmission Service . check TestResult ( any ()) Ġ} Ġanswers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCor ona TestResult Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcor ona TestResult Ġ= Ġpoll Result , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsample Collected At Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlab Id Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= Ġcreate Instance () ĊĊĠĠĠĠĠĠĠ Ġval Ġra Test Ġ= Ġdefault Test . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result Ġ= ĠR AT _ POSITIVE , ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġvalues (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpoll Result Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP CR _ NEGATIVE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP CR _ POSITIVE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP CR _ INVALID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP CR _ RE DE E MED Ġ-> Ġinstance . poll Server ( ra Test ). test Result ĠshouldBe ĠR AT _ INVALID ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP CR _ OR _ RAT _ PENDING , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR AT _ PENDING , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR AT _ NEGATIVE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR AT _ POSITIVE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR AT _ INVALID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR AT _ RE DE E MED Ġ-> Ġinstance . poll Server ( ra Test ). test Result ĠshouldBe Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` polling Ġis Ġskipped Ġif Ġtest Ġis Ġolder Ġthan Ġ 2 1 Ġdays Ġand Ġstate Ġwas Ġalready ĠRE DE E MED `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġsubmission Service . check TestResult ( any ()) Ġ} Ġanswers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCor ona TestResult Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcor ona TestResult Ġ= ĠR AT _ POSITIVE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsample Collected At Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlab Id Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= Ġcreate Instance () ĊĊĠĠĠĠĠĠĠ Ġval Ġra Test Ġ= Ġdefault Test . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregistered At Ġ= Ġnow UTC . minus ( Duration . standard Days ( 2 2 )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result Ġ= ĠR AT _ RE DE E MED , ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠOl der Ġthan Ġ 2 1 Ġdays Ġand Ġalready Ġre dee med ĊĠĠĠĠĠĠĠ Ġinstance . poll Server ( ra Test ) ĠshouldBe Ġra Test ĊĊĠĠĠĠĠĠĠ Ġ// ĠOl der Ġthan Ġ 2 1 Ġdays Ġbut Ġnot Ġin Ġfinal Ġstate , Ġwe Ġtake Ġvalue Ġfrom Ġserver ĊĠĠĠĠĠĠĠ Ġinstance . poll Server ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġra Test . copy ( test Result Ġ= ĠR AT _ NEGATIVE ) ĊĠĠĠĠĠĠĠ Ġ). test Result ĠshouldBe ĠR AT _ POSITIVE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` http Ġ 4 0 0 Ġerrors Ġmap Ġto ĠRE DE E MED Ġ( EXPI RED ) Ġstate Ġafter Ġ 2 1 Ġdays `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġour BadRequest Ġ= ĠBadRequest Exception (" Who ?") ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġsubmission Service . check TestResult ( any ()) Ġ} Ġthrows Ġour BadRequest ĊĊĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= Ġcreate Instance () ĊĊĠĠĠĠĠĠĠ Ġval Ġra Test Ġ= ĠR AC or ona Test ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġidentifier Ġ= Ġ" identifier ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast UpdatedAt Ġ= ĠInstant . EPOCH , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregistered At Ġ= Ġnow UTC , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregistration Token Ġ= Ġ" reg token ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result Ġ= ĠR AT _ POSITIVE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtested At Ġ= ĠInstant . EPOCH , ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTest Ġis Ġnot Ġolder Ġthan Ġ 2 1 Ġdays , Ġwe Ġwant Ġthe Ġerror ! ĊĠĠĠĠĠĠĠ Ġinstance . poll Server ( ra Test ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result ĠshouldBe ĠR AT _ POSITIVE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Error ĠshouldBe Ġour BadRequest ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠTest ĠIS Ġolder Ġthan Ġ 2 1 Ġdays , Ġwe Ġexpected Ġthe Ġerror , Ġand Ġmap Ġit Ġto ĠRE DE E MED Ġ( expired ) ĊĠĠĠĠĠĠĠ Ġinstance . poll Server ( ra Test . copy ( registered At Ġ= Ġnow UTC . minus ( Duration . standard Days ( 2 2 )) )). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result ĠshouldBe ĠR AT _ RE DE E MED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Error ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` g iving Ġsubmission Ġconsent `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= Ġcreate Instance () ĊĊĠĠĠĠĠĠĠ Ġinstance . update Submission Consent ( default Test , Ġtrue ) ĠshouldBe Ġdefault Test . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Advanced Consent Given Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġinstance . update Submission Consent ( default Test , Ġfalse ) ĠshouldBe Ġdefault Test . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Advanced Consent Given Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` request Ġparameters Ġfor Ġd cc Ġare Ġmapped `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġregistration Data Ġ= ĠRegistration Data ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregistration Token Ġ= Ġ" reg token ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result Response Ġ= ĠCor ona TestResult Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcor ona TestResult Ġ= ĠP CR _ OR _ RAT _ PENDING , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsample Collected At Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlab Id Ġ= Ġ" lab Id ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġsubmission Service . register Test ( any ()) Ġ} Ġanswers Ġ{ Ġregistration Data Ġ} ĊĊĠĠĠĠĠĠĠ Ġcreate Instance (). create ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCor ona Test QR Code . R apid Ant igen ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash Ġ= Ġ" hash ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠInstant . EPOCH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis D cc Consent Given Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate OfBirth Ġ= ĠLocalDate . parse (" 2 0 2 1 - 0 6 - 0 2 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis D cc Supported By P oc Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis D cc Consent Given ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis D cc DataSet Created ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis D cc Supported By P oc ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlab Id ĠshouldBe Ġ" lab Id " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcreate Instance (). create ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCor ona Test QR Code . R apid Ant igen ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash Ġ= Ġ" hash ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠInstant . EPOCH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis D cc Consent Given Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate OfBirth Ġ= ĠLocalDate . parse (" 2 0 2 1 - 0 6 - 0 2 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis D cc Supported By P oc Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis D cc Consent Given ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis D cc DataSet Created ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis D cc Supported By P oc ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlab Id ĠshouldBe Ġ" lab Id " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` mark ing Ġd cc Ġas Ġcreated `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= Ġcreate Instance () ĊĊĠĠĠĠĠĠĠ Ġinstance . mark D cc Created ( default Test , Ġtrue ) ĠshouldBe Ġdefault Test . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis D cc DataSet Created Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġinstance . mark D cc Created ( default Test , Ġfalse ) ĠshouldBe Ġdefault Test . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis D cc DataSet Created Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` response Ġparameters Ġare Ġstored Ġduring Ġinitial Ġregistration `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġregistration Data Ġ= ĠRegistration Data ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregistration Token Ġ= Ġ" reg token ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result Response Ġ= ĠCor ona TestResult Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcor ona TestResult Ġ= ĠR AT _ NEGATIVE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsample Collected At Ġ= ĠInstant . of Epoch Second ( 1 2 3 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlab Id Ġ= Ġ" lab Id ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġsubmission Service . register Test ( any ()) Ġ} Ġanswers Ġ{ Ġregistration Data Ġ} ĊĊĠĠĠĠĠĠĠ Ġcreate Instance (). create ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCor ona Test QR Code . R apid Ant igen ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash Ġ= Ġ" hash ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠInstant . EPOCH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate OfBirth Ġ= ĠLocalDate . parse (" 2 0 2 1 - 0 6 - 0 2 "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ġas ĠR AC or ona Test ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result ĠshouldBe ĠR AT _ NEGATIVE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsample Collected At ĠshouldBe ĠInstant . of Epoch Second ( 1 2 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlab Id ĠshouldBe Ġ" lab Id " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` new Ġdata Ġreceived Ġduring Ġpolling Ġis Ġstored Ġin Ġthe Ġtest `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= Ġcreate Instance () ĊĠĠĠĠĠĠĠ Ġval Ġra Test Ġ= ĠR AC or ona Test ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġidentifier Ġ= Ġ" identifier ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast UpdatedAt Ġ= ĠInstant . EPOCH , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregistered At Ġ= Ġnow UTC , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregistration Token Ġ= Ġ" reg token ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result Ġ= ĠR AT _ POSITIVE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtested At Ġ= ĠInstant . EPOCH , ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ( instance . poll Server ( ra Test ) Ġas ĠR AC or ona Test ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsample Collected At ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlab Id ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġsubmission Service . check TestResult ( any ()) Ġ} Ġreturns ĠCor ona TestResult Response ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcor ona TestResult Ġ= ĠP CR _ OR _ RAT _ PENDING , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsample Collected At Ġ= Ġnow UTC , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlab Id Ġ= Ġ" lab Id ", ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ( instance . poll Server ( ra Test ) Ġas ĠR AC or ona Test ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsample Collected At ĠshouldBe Ġnow UTC ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlab Id ĠshouldBe Ġ" lab Id " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ