@@ -1657,6 +1657,62 @@ public void getStateThenDelete() throws Exception {
1657
1657
assertTrue (callbackDelete .wasCalled );
1658
1658
}
1659
1659
1660
+ @ Test
1661
+ public void getStateNullEtag () throws Exception {
1662
+ String etag = null ;
1663
+ String key1 = "key1" ;
1664
+ String expectedValue1 = "Expected state 1" ;
1665
+ State <String > expectedState1 = buildStateKey (expectedValue1 , key1 , etag , new HashMap <>(), null );
1666
+ Map <String , SettableFuture <DaprProtos .GetStateResponse >> futuresMap = new HashMap <>();
1667
+ DaprProtos .GetStateResponse envelope = DaprProtos .GetStateResponse .newBuilder ()
1668
+ .setData (serialize (expectedValue1 ))
1669
+ .build ();
1670
+ SettableFuture <DaprProtos .GetStateResponse > settableFuture = SettableFuture .create ();
1671
+ MockCallback <DaprProtos .GetStateResponse > callback = new MockCallback <>(envelope );
1672
+ addCallback (settableFuture , callback , directExecutor ());
1673
+ settableFuture .set (envelope );
1674
+ futuresMap .put (key1 , settableFuture );
1675
+ when (client .getState (argThat (new GetStateRequestKeyMatcher (key1 )))).thenReturn (futuresMap .get (key1 ));
1676
+ State <String > keyRequest1 = buildStateKey (null , key1 , null , null );
1677
+ Mono <State <String >> resultGet1 = adapter .getState (STATE_STORE_NAME , keyRequest1 , String .class );
1678
+ assertEquals (expectedState1 , resultGet1 .block ());
1679
+ }
1680
+
1681
+ @ Test
1682
+ public void getBulkStateNullEtag () throws Exception {
1683
+ DaprProtos .GetBulkStateResponse responseEnvelope = DaprProtos .GetBulkStateResponse .newBuilder ()
1684
+ .addItems (DaprProtos .BulkStateItem .newBuilder ()
1685
+ .setData (serialize ("hello world" ))
1686
+ .setKey ("100" )
1687
+ .build ())
1688
+ .addItems (DaprProtos .BulkStateItem .newBuilder ()
1689
+ .setKey ("200" )
1690
+ .setEtag ("" )
1691
+ .setError ("not found" )
1692
+ .build ())
1693
+ .build ();
1694
+ SettableFuture <DaprProtos .GetBulkStateResponse > settableFuture = SettableFuture .create ();
1695
+ MockCallback <DaprProtos .GetBulkStateResponse > callback = new MockCallback <>(responseEnvelope );
1696
+ addCallback (settableFuture , callback , directExecutor ());
1697
+ when (client .getBulkState (any (DaprProtos .GetBulkStateRequest .class )))
1698
+ .thenAnswer (c -> {
1699
+ settableFuture .set (responseEnvelope );
1700
+ return settableFuture ;
1701
+ });
1702
+ List <State <String >> result = adapter .getBulkState (STATE_STORE_NAME , Arrays .asList ("100" , "200" ), String .class ).block ();
1703
+ assertTrue (callback .wasCalled );
1704
+
1705
+ assertEquals (2 , result .size ());
1706
+ assertEquals ("100" , result .stream ().findFirst ().get ().getKey ());
1707
+ assertEquals ("hello world" , result .stream ().findFirst ().get ().getValue ());
1708
+ assertNull (result .stream ().findFirst ().get ().getEtag ());
1709
+ assertNull (result .stream ().findFirst ().get ().getError ());
1710
+ assertEquals ("200" , result .stream ().skip (1 ).findFirst ().get ().getKey ());
1711
+ assertNull (result .stream ().skip (1 ).findFirst ().get ().getValue ());
1712
+ assertNull (result .stream ().skip (1 ).findFirst ().get ().getEtag ());
1713
+ assertEquals ("not found" , result .stream ().skip (1 ).findFirst ().get ().getError ());
1714
+ }
1715
+
1660
1716
@ Test
1661
1717
public void getSecrets () {
1662
1718
String expectedKey = "attributeKey" ;
0 commit comments