11package com .google .cloud .functions .invoker ;
22
33import static com .google .cloud .functions .invoker .BackgroundFunctionExecutor .backgroundFunctionTypeArgument ;
4+ import static com .google .common .truth .Truth .assertThat ;
45import static com .google .common .truth .Truth8 .assertThat ;
56
67import com .google .cloud .functions .BackgroundFunction ;
78import com .google .cloud .functions .Context ;
9+ import com .google .gson .JsonObject ;
10+ import java .io .IOException ;
11+ import java .io .InputStreamReader ;
12+ import java .io .Reader ;
813import java .util .Map ;
914import org .junit .Test ;
1015import org .junit .runner .RunWith ;
@@ -20,7 +25,8 @@ private static class PubSubMessage {
2025 }
2126
2227 private static class PubSubFunction implements BackgroundFunction <PubSubMessage > {
23- @ Override public void accept (PubSubMessage payload , Context context ) {}
28+ @ Override
29+ public void accept (PubSubMessage payload , Context context ) {}
2430 }
2531
2632 @ Test
@@ -31,7 +37,8 @@ public void backgroundFunctionTypeArgument_simple() {
3137 private abstract static class Parent implements BackgroundFunction <PubSubMessage > {}
3238
3339 private static class Child extends Parent {
34- @ Override public void accept (PubSubMessage payload , Context context ) {}
40+ @ Override
41+ public void accept (PubSubMessage payload , Context context ) {}
3542 }
3643
3744 @ Test
@@ -42,7 +49,8 @@ public void backgroundFunctionTypeArgument_superclass() {
4249 private interface GenericParent <T > extends BackgroundFunction <T > {}
4350
4451 private static class GenericChild implements GenericParent <PubSubMessage > {
45- @ Override public void accept (PubSubMessage payload , Context context ) {}
52+ @ Override
53+ public void accept (PubSubMessage payload , Context context ) {}
4654 }
4755
4856 @ Test
@@ -52,7 +60,8 @@ public void backgroundFunctionTypeArgument_genericInterface() {
5260
5361 @ SuppressWarnings ("rawtypes" )
5462 private static class ForgotTypeParameter implements BackgroundFunction {
55- @ Override public void accept (Object payload , Context context ) {}
63+ @ Override
64+ public void accept (Object payload , Context context ) {}
5665 }
5766
5867 @ Test
@@ -62,4 +71,41 @@ public void backgroundFunctionTypeArgument_raw() {
6271 (Class <? extends BackgroundFunction <?>>) (Class <?>) ForgotTypeParameter .class ;
6372 assertThat (backgroundFunctionTypeArgument (c )).isEmpty ();
6473 }
74+
75+ @ Test
76+ public void parseLegacyEventPubSub () throws IOException {
77+ try (Reader reader =
78+ new InputStreamReader (getClass ().getResourceAsStream ("/pubsub_background.json" ))) {
79+ Event event = BackgroundFunctionExecutor .parseLegacyEvent (reader );
80+
81+ Context context = event .getContext ();
82+ assertThat (context .eventType ()).isEqualTo ("google.pubsub.topic.publish" );
83+ assertThat (context .eventId ()).isEqualTo ("1" );
84+ assertThat (context .timestamp ()).isEqualTo ("2021-06-28T05:46:32.390Z" );
85+
86+ JsonObject data = event .getData ().getAsJsonObject ();
87+ assertThat (data .get ("data" ).getAsString ()).isEqualTo ("eyJmb28iOiJiYXIifQ==" );
88+ String attr = data .get ("attributes" ).getAsJsonObject ().get ("test" ).getAsString ();
89+ assertThat (attr ).isEqualTo ("123" );
90+ }
91+ }
92+
93+ @ Test
94+ public void parseLegacyEventPubSubEmulator () throws IOException {
95+ try (Reader reader =
96+ new InputStreamReader (getClass ().getResourceAsStream ("/pubsub_emulator.json" ))) {
97+ Event event = BackgroundFunctionExecutor .parseLegacyEvent (reader );
98+
99+ Context context = event .getContext ();
100+ assertThat (context .eventType ()).isEqualTo ("google.pubsub.topic.publish" );
101+ assertThat (context .eventId ()).isEqualTo ("1" );
102+ assertThat (context .timestamp ()).isNotNull ();
103+ ;
104+
105+ JsonObject data = event .getData ().getAsJsonObject ();
106+ assertThat (data .get ("data" ).getAsString ()).isEqualTo ("eyJmb28iOiJiYXIifQ==" );
107+ String attr = data .get ("attributes" ).getAsJsonObject ().get ("test" ).getAsString ();
108+ assertThat (attr ).isEqualTo ("123" );
109+ }
110+ }
65111}
0 commit comments