@@ -16,7 +16,9 @@ package messaging
16
16
17
17
import (
18
18
"context"
19
+ "errors"
19
20
"flag"
21
+ "fmt"
20
22
"log"
21
23
"os"
22
24
"regexp"
@@ -32,6 +34,7 @@ import (
32
34
const testRegistrationToken = "fGw0qy4TGgk:APA91bGtWGjuhp4WRhHXgbabIYp1jxEKI08ofj_v1bKhWAGJQ4e3a" +
33
35
"rRCWzeTfHaLz83mBnDh0aPWB1AykXAVUUGl2h1wT4XI6XazWpvY7RBUSYfoxtqSWGIm2nvWh2BOP1YG501SsRoE"
34
36
37
+ var messageIDPattern = regexp .MustCompile ("^projects/.*/messages/.*$" )
35
38
var client * messaging.Client
36
39
37
40
// Enable API before testing
@@ -90,16 +93,106 @@ func TestSend(t *testing.T) {
90
93
if err != nil {
91
94
t .Fatal (err )
92
95
}
93
- const pattern = "^projects/.*/messages/.*$"
94
- if ! regexp .MustCompile (pattern ).MatchString (name ) {
95
- t .Errorf ("Send() = %q; want = %q" , name , pattern )
96
+ if ! messageIDPattern .MatchString (name ) {
97
+ t .Errorf ("Send() = %q; want = %q" , name , messageIDPattern .String ())
96
98
}
97
99
}
98
100
99
101
func TestSendInvalidToken (t * testing.T ) {
100
102
msg := & messaging.Message {Token : "INVALID_TOKEN" }
101
- if _ , err := client .Send (context .Background (), msg ); err == nil {
102
- t .Errorf ("Send() = nil; want error" )
103
+ if _ , err := client .Send (context .Background (), msg ); err == nil || ! messaging .IsInvalidArgument (err ) {
104
+ t .Errorf ("Send() = %v; want InvalidArgumentError" , err )
105
+ }
106
+ }
107
+
108
+ func TestSendAll (t * testing.T ) {
109
+ messages := []* messaging.Message {
110
+ {
111
+ Notification : & messaging.Notification {
112
+ Title : "Title 1" ,
113
+ Body : "Body 1" ,
114
+ },
115
+ Topic : "foo-bar" ,
116
+ },
117
+ {
118
+ Notification : & messaging.Notification {
119
+ Title : "Title 2" ,
120
+ Body : "Body 2" ,
121
+ },
122
+ Topic : "foo-bar" ,
123
+ },
124
+ {
125
+ Notification : & messaging.Notification {
126
+ Title : "Title 3" ,
127
+ Body : "Body 3" ,
128
+ },
129
+ Token : "INVALID_TOKEN" ,
130
+ },
131
+ }
132
+
133
+ br , err := client .SendAll (context .Background (), messages )
134
+ if err != nil {
135
+ t .Fatal (err )
136
+ }
137
+
138
+ if len (br .Responses ) != 3 {
139
+ t .Errorf ("len(Responses) = %d; want = 3" , len (br .Responses ))
140
+ }
141
+ if br .SuccessCount != 2 {
142
+ t .Errorf ("SuccessCount = %d; want = 2" , br .SuccessCount )
143
+ }
144
+ if br .FailureCount != 1 {
145
+ t .Errorf ("FailureCount = %d; want = 1" , br .FailureCount )
146
+ }
147
+
148
+ for i := 0 ; i < 2 ; i ++ {
149
+ sr := br .Responses [i ]
150
+ if err := checkSuccessfulSendResponse (sr ); err != nil {
151
+ t .Errorf ("Responses[%d]: %v" , i , err )
152
+ }
153
+ }
154
+
155
+ sr := br .Responses [2 ]
156
+ if sr .Success {
157
+ t .Errorf ("Responses[2]: Success = true; want = false" )
158
+ }
159
+ if sr .MessageID != "" {
160
+ t .Errorf ("Responses[2]: MessageID = %q; want = %q" , sr .MessageID , "" )
161
+ }
162
+ if sr .Error == nil || ! messaging .IsInvalidArgument (sr .Error ) {
163
+ t .Errorf ("Responses[2]: Error = %v; want = InvalidArgumentError" , sr .Error )
164
+ }
165
+ }
166
+
167
+ func TestSendHundred (t * testing.T ) {
168
+ var messages []* messaging.Message
169
+ for i := 0 ; i < 100 ; i ++ {
170
+ m := & messaging.Message {
171
+ Topic : fmt .Sprintf ("foo-bar-%d" , i % 10 ),
172
+ }
173
+ messages = append (messages , m )
174
+ }
175
+
176
+ br , err := client .SendAll (context .Background (), messages )
177
+ if err != nil {
178
+ t .Fatal (err )
179
+ }
180
+
181
+ if len (br .Responses ) != 100 {
182
+ t .Errorf ("len(Responses) = %d; want = 100" , len (br .Responses ))
183
+ }
184
+ if br .SuccessCount != 100 {
185
+ t .Errorf ("SuccessCount = %d; want = 100" , br .SuccessCount )
186
+ }
187
+ if br .FailureCount != 0 {
188
+ t .Errorf ("FailureCount = %d; want = 0" , br .FailureCount )
189
+ }
190
+
191
+ for i := 0 ; i < 100 ; i ++ {
192
+ sr := br .Responses [i ]
193
+ if err := checkSuccessfulSendResponse (sr ); err != nil {
194
+ t .Errorf ("Responses[%d]: %v" , i , err )
195
+ }
103
196
}
104
197
}
105
198
@@ -122,3 +215,17 @@ func TestUnsubscribe(t *testing.T) {
122
215
t .Errorf ("UnsubscribeFromTopic() = %v; want total 1" , tmr )
123
216
}
124
217
}
218
+
219
+ func checkSuccessfulSendResponse (sr * messaging.SendResponse ) error {
220
+ if ! sr .Success {
221
+ return errors .New ("Success = false; want = true" )
222
+ }
223
+ if ! messageIDPattern .MatchString (sr .MessageID ) {
224
+ return fmt .Errorf ("MessageID = %q; want = %q" , sr .MessageID , messageIDPattern .String ())
225
+ }
226
+ if sr .Error != nil {
227
+ return fmt .Errorf ("Error = %v; want = nil" , sr .Error )
228
+ }
229
+
230
+ return nil
231
+ }
0 commit comments