-
Notifications
You must be signed in to change notification settings - Fork 68
/
ListPubSubNotificationsTest.java
89 lines (79 loc) · 3.41 KB
/
ListPubSubNotificationsTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/*
* Copyright 2022 Google LLC
*
* 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 com.example.storage.bucket;
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertNotNull;
import com.example.storage.TestBase;
import com.google.cloud.pubsub.v1.TopicAdminClient;
import com.google.cloud.storage.Notification;
import com.google.cloud.storage.NotificationInfo;
import com.google.common.collect.ImmutableMap;
import com.google.iam.v1.Binding;
import com.google.iam.v1.GetIamPolicyRequest;
import com.google.iam.v1.SetIamPolicyRequest;
import java.io.IOException;
import java.util.Map;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
public class ListPubSubNotificationsTest extends TestBase {
private static final Notification.PayloadFormat PAYLOAD_FORMAT =
Notification.PayloadFormat.JSON_API_V1.JSON_API_V1;
private static final Map<String, String> CUSTOM_ATTRIBUTES = ImmutableMap.of("label1", "value1");
private static final String PROJECT = System.getenv("GOOGLE_CLOUD_PROJECT");
private static final String TOPIC = String.format("projects/%s/topics/new-topic-list", PROJECT);
private static TopicAdminClient topicAdminClient;
@BeforeClass
public static void configureTopicAdminClient() throws IOException {
if (PROJECT != null) {
topicAdminClient = TopicAdminClient.create();
topicAdminClient.createTopic(TOPIC);
GetIamPolicyRequest getIamPolicyRequest =
GetIamPolicyRequest.newBuilder().setResource(TOPIC).build();
com.google.iam.v1.Policy policy = topicAdminClient.getIamPolicy(getIamPolicyRequest);
Binding binding =
Binding.newBuilder().setRole("roles/owner").addMembers("allAuthenticatedUsers").build();
SetIamPolicyRequest setIamPolicyRequest =
SetIamPolicyRequest.newBuilder()
.setResource(TOPIC)
.setPolicy(policy.toBuilder().addBindings(binding).build())
.build();
topicAdminClient.setIamPolicy(setIamPolicyRequest);
}
}
@AfterClass
public static void deleteTopicAndClient() {
/* Delete the Pub/Sub topic */
if (topicAdminClient != null) {
topicAdminClient.deleteTopic(TOPIC);
topicAdminClient.close();
}
}
@Test
public void testListBucketPubSubNotification() {
// Check that we can access project value and that topic admin client came up successfully
assertNotNull("Unable to determine project", PROJECT);
assertNotNull("Topic Admin Client did not start up", topicAdminClient);
NotificationInfo notificationInfo =
NotificationInfo.newBuilder(TOPIC)
.setCustomAttributes(CUSTOM_ATTRIBUTES)
.setPayloadFormat(PAYLOAD_FORMAT)
.build();
storage.createNotification(bucketName, notificationInfo);
ListPubSubNotifications.listPubSubNotifications(bucketName);
assertThat(stdOut.getCapturedOutputAsUtf8String()).contains(TOPIC);
}
}