/* Ċ Ġ* Ġ ĠCopyright Ġ 2 0 2 1 ĠC urity ĠAB Ċ Ġ* Ċ Ġ* Ġ Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// 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 Ġio . curity . identity server . plugin . dynamodb . query Ċ Ċ import Ġio . curity . identity server . plugin . dynamodb . D ynamoDB User Account DataAccess Provider Ċ import Ġio . curity . identity server . plugin . dynamodb . String Attribute Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Assert . assertFalse Ċ import Ġorg . junit . Test Ċ import Ġse . curity . identity server . sdk . data . query . Filter Ċ Ċ class ĠAccounts Query Tests Ċ { ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Active UserName And Email () ĊĠĠĠ Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġfilter Expression Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFilter . Logical Expression ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFilter . Logical Operator . AND , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFilter . Attribute Expression ( Filter . Attribute Operator . EQ , Ġ" userName ", Ġ" jan ed oe "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFilter . Attribute Expression ( Filter . Attribute Operator . EQ , Ġ" emails ", Ġ" j ane . doe @ example . com ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġquery Planner Ġ= ĠQuery Planner ( D ynamoDB User Account DataAccess Provider . Accounts Table . query Capabilities ) ĊĊĠĠĠĠĠĠĠ Ġval Ġquery Plan Ġ= Ġquery Planner . build ( filter Expression ) ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( query Plan Ġis ĠQuery Plan . Using Scan ) ĊĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġ( query Plan Ġas ĠQuery Plan . Using Queries ). queries . entries . single () ĊĊĠĠĠĠĠĠĠ Ġval Ġd ynamoDB Query Ġ= ĠD ynamoDB QueryBuilder . build Query ( query . key , Ġquery . value ) ĊĊĠĠĠĠĠĠĠ ĠAssert . assertNull (" Must Ġuse Ġprimary Ġkey Ġindex ", Ġd ynamoDB Query . index Name ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ("# pk Ġ= Ġ: pk _ 1 ", Ġd ynamoDB Query . key Expression ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ("# email Ġ= Ġ: email _ 1 ", Ġd ynamoDB Query . filter Expression ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ": pk _ 1 " Ġto ĠString Attribute (" "). to Attr Value (" un # jan ed oe "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ": email _ 1 " Ġto ĠString Attribute (" "). to Attr Value (" j ane . doe @ example . com ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd ynamoDB Query . value Map ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"# pk " Ġto Ġ" pk ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"# email " Ġto Ġ" email " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd ynamoDB Query . name Map ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Active UserName Or Email () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilter Expression Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFilter . Logical Expression ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFilter . Logical Operator . OR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFilter . Attribute Expression ( Filter . Attribute Operator . EQ , Ġ" userName ", Ġ" jan ed oe "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFilter . Attribute Expression ( Filter . Attribute Operator . EQ , Ġ" emails ", Ġ" j ane . doe @ example . com ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġquery Planner Ġ= ĠQuery Planner ( D ynamoDB User Account DataAccess Provider . Accounts Table . query Capabilities ) ĊĊĠĠĠĠĠĠĠ Ġval Ġquery Plan Ġ= Ġquery Planner . build ( filter Expression ) ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( query Plan Ġis ĠQuery Plan . Using Scan ) ĊĊĠĠĠĠĠĠĠ Ġval Ġqueries Ġ= Ġ( query Plan Ġas ĠQuery Plan . Using Queries ). queries . entries ĊĊĠĠĠĠĠĠĠ Ġval ĠuserName Query Ġ= Ġqueries . single Ġ{ Ġquery Ġ-> Ġquery . key . partition Condition . value Ġ== Ġ" jan ed oe " Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġd ynamo UserName DB Query Ġ= ĠD ynamoDB QueryBuilder . build Query ( userName Query . key , ĠuserName Query . value ) ĊĊĠĠĠĠĠĠĠ ĠAssert . assertNull (" Must Ġuse Ġprimary Ġkey Ġindex ", Ġd ynamo UserName DB Query . index Name ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ("# pk Ġ= Ġ: pk _ 1 ", Ġd ynamo UserName DB Query . key Expression ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ("", Ġd ynamo UserName DB Query . filter Expression ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ": pk _ 1 " Ġto ĠString Attribute (" "). to Attr Value (" un # jan ed oe ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd ynamo UserName DB Query . value Map ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"# pk " Ġto Ġ" pk " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd ynamo UserName DB Query . name Map ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġemail Query Ġ= Ġqueries . single Ġ{ Ġquery Ġ-> Ġquery . key . partition Condition . value Ġ== Ġ" j ane . doe @ example . com " Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġd ynamo Email DB Query Ġ= ĠD ynamoDB QueryBuilder . build Query ( email Query . key , Ġemail Query . value ) ĊĊĠĠĠĠĠĠĠ ĠAssert . assertNull (" Must Ġuse Ġprimary Ġkey Ġindex ", Ġd ynamo Email DB Query . index Name ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ("# pk Ġ= Ġ: pk _ 1 ", Ġd ynamo Email DB Query . key Expression ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ("", Ġd ynamo Email DB Query . filter Expression ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ": pk _ 1 " Ġto ĠString Attribute (" "). to Attr Value (" em # j ane . doe @ example . com ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd ynamo Email DB Query . value Map ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"# pk " Ġto Ġ" pk " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd ynamo Email DB Query . name Map ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }