@@ -808,6 +808,24 @@ public void logImpression_logsToEngagementMetrics() {
808
808
assertThat (fileExists (IMPRESSIONS_STORE_FILE )).isTrue ();
809
809
}
810
810
811
+ @ Test
812
+ @ Ignore ("Does not work yet" )
813
+ public void whenlogImpressionFails_doesNotFilterCampaign ()
814
+ throws ExecutionException , InterruptedException , TimeoutException , FileNotFoundException {
815
+ doThrow (new NullPointerException ("e1" )).when (application ).openFileInput (IMPRESSIONS_STORE_FILE );
816
+
817
+ Task <Void > logImpressionTask =
818
+ displayCallbacksFactory
819
+ .generateDisplayCallback (MODAL_MESSAGE_MODEL , ANALYTICS_EVENT_NAME )
820
+ .impressionDetected ();
821
+ await ().timeout (2 , SECONDS ).until (logImpressionTask ::isComplete );
822
+ assertThat (logImpressionTask .getException ()).hasMessageThat ().contains ("e1" );
823
+ analyticsConnector .invokeListenerOnEvent (ANALYTICS_EVENT_NAME );
824
+ waitUntilNotified (subscriber );
825
+
826
+ assertSingleSuccessNotification (subscriber );
827
+ }
828
+
811
829
@ Test
812
830
public void logImpression_whenlogEventLimitIncrementFails_doesNotRateLimit ()
813
831
throws ExecutionException , InterruptedException , TimeoutException , FileNotFoundException {
@@ -918,6 +936,7 @@ public void whenlogEventLimitIncrementSuccess_writesLimitsToDisk() {
918
936
}
919
937
920
938
@ Test
939
+ @ Ignore ("Does not work yet" )
921
940
public void onImpressionLog_cachesImpressionsInMemory ()
922
941
throws ExecutionException , InterruptedException , TimeoutException , FileNotFoundException {
923
942
CampaignMetadata otherMetadata =
@@ -972,6 +991,67 @@ public void onCorruptImpressionStore_doesNotFilter()
972
991
assertSingleSuccessNotification (subscriber );
973
992
}
974
993
994
+ @ Test
995
+ @ Ignore ("Does not work yet" )
996
+ public void onImpressionStoreReadFailure_doesNotFilter ()
997
+ throws ExecutionException , InterruptedException , TimeoutException , IOException {
998
+ doThrow (new NullPointerException ("e1" )).when (application ).openFileInput (IMPRESSIONS_STORE_FILE );
999
+
1000
+ analyticsConnector .invokeListenerOnEvent (ANALYTICS_EVENT_NAME );
1001
+ waitUntilNotified (subscriber );
1002
+
1003
+ assertSingleSuccessNotification (subscriber );
1004
+ }
1005
+
1006
+ // There is not a purely functional way to determine if our clients inject the impressed
1007
+ // campaigns upstream since we filter impressions from the response on the client as well.
1008
+ // We work around this by failing hard on the fake service if we do not find an empty impression
1009
+ // list
1010
+ @ Test
1011
+ @ Ignore ("Does not work yet" )
1012
+ public void whenImpressionStorageClientFails_injectsEmptyImpressionListUpstream ()
1013
+ throws ExecutionException , InterruptedException , TimeoutException , FileNotFoundException {
1014
+ VanillaCampaignPayload otherCampaign =
1015
+ VanillaCampaignPayload .newBuilder (vanillaCampaign .build ())
1016
+ .setCampaignId ("otherCampaignId" )
1017
+ .setCampaignName ("other_name" )
1018
+ .build ();
1019
+ ThickContent otherContent =
1020
+ ThickContent .newBuilder (thickContent )
1021
+ .setContent (BANNER_MESSAGE_PROTO )
1022
+ .clearVanillaPayload ()
1023
+ .clearTriggeringConditions ()
1024
+ .addTriggeringConditions (
1025
+ TriggeringCondition .newBuilder ().setEvent (Event .newBuilder ().setName ("event2" )))
1026
+ .setVanillaPayload (otherCampaign )
1027
+ .build ();
1028
+ FetchEligibleCampaignsResponse response =
1029
+ FetchEligibleCampaignsResponse .newBuilder (eligibleCampaigns )
1030
+ .addMessages (otherContent )
1031
+ .build ();
1032
+
1033
+ InAppMessagingSdkServingImplBase fakeFilteringService =
1034
+ new InAppMessagingSdkServingImplBase () {
1035
+ @ Override
1036
+ public void fetchEligibleCampaigns (
1037
+ FetchEligibleCampaignsRequest request ,
1038
+ StreamObserver <FetchEligibleCampaignsResponse > responseObserver ) {
1039
+
1040
+ // Fail if impressions list is not empty
1041
+ assertThat (request .getAlreadySeenCampaignsList ()).isEmpty ();
1042
+
1043
+ responseObserver .onNext (response );
1044
+ responseObserver .onCompleted ();
1045
+ }
1046
+ };
1047
+ grpcServerRule .getServiceRegistry ().addService (fakeFilteringService );
1048
+ doThrow (new NullPointerException ("e1" )).when (application ).openFileInput (IMPRESSIONS_STORE_FILE );
1049
+ analyticsConnector .invokeListenerOnEvent (ANALYTICS_EVENT_NAME );
1050
+ analyticsConnector .invokeListenerOnEvent ("event2" );
1051
+
1052
+ waitUntilNotified (subscriber );
1053
+ }
1054
+
975
1055
@ Test
976
1056
public void whenAppForegroundIsRateLimited_doesNotNotify () {
977
1057
CampaignMetadata analyticsCampaignMetadata =
0 commit comments