@@ -84,7 +84,7 @@ func newSigned(domain, selector, from, to, tool, body string) (io.Reader, error)
84
84
}
85
85
86
86
func TestSigned (t * testing.T ) {
87
- conn , s := setup (t , domain1 )
87
+ conn , s := setup (t , domain1 , true , true )
88
88
defer conn .Close ()
89
89
90
90
assert (t , s .Mail (user1 , nil ))
@@ -106,7 +106,7 @@ func TestSigned(t *testing.T) {
106
106
}
107
107
108
108
func TestNotSigned (t * testing.T ) {
109
- conn , s := setup (t , domain1 )
109
+ conn , s := setup (t , domain1 , true , true )
110
110
defer conn .Close ()
111
111
112
112
assert (t , s .Mail (user1 , nil ))
@@ -120,8 +120,28 @@ func TestNotSigned(t *testing.T) {
120
120
assertSlicesEqual (t , nil , items )
121
121
}
122
122
123
+ func TestLocalNotSigned (t * testing.T ) {
124
+ conn , s := setup (t , domain1 , true , false )
125
+ defer conn .Close ()
126
+
127
+ assert (t , s .Mail (user1 , nil ))
128
+ assert (t , s .Rcpt (to , nil ))
129
+ assert (t , s .Data (newPlain (user1 , to , borrow + tool1 , "" )))
130
+
131
+ items := conn .GetItems ()
132
+ expected := []db.Item {
133
+ {
134
+ Location : db.Location {
135
+ Tool : tool1 ,
136
+ LastSeenBy : user1 ,
137
+ },
138
+ },
139
+ }
140
+ assertSlicesEqual (t , expected , items )
141
+ }
142
+
123
143
func TestNoKey (t * testing.T ) {
124
- conn , s := setup (t , domain1 )
144
+ conn , s := setup (t , domain1 , true , true )
125
145
defer conn .Close ()
126
146
127
147
assert (t , s .Mail (user1 , nil ))
@@ -138,7 +158,7 @@ func TestNoKey(t *testing.T) {
138
158
}
139
159
140
160
func TestBadDomain (t * testing.T ) {
141
- conn , s := setup (t , domain1 )
161
+ conn , s := setup (t , domain1 , true , true )
142
162
defer conn .Close ()
143
163
144
164
assert (t , s .Mail (user3 , nil ))
@@ -155,7 +175,7 @@ func TestBadDomain(t *testing.T) {
155
175
}
156
176
157
177
func TestDelegate (t * testing.T ) {
158
- conn , s := setup (t , domain1 )
178
+ conn , s := setup (t , domain1 , true , true )
159
179
defer conn .Close ()
160
180
161
181
// Alias a new user@domain
@@ -209,3 +229,116 @@ func TestDelegate(t *testing.T) {
209
229
t .Fatalf ("Expected %v, got %v" , mail .InvalidError , err )
210
230
}
211
231
}
232
+
233
+ func TestNoDelegate (t * testing.T ) {
234
+ conn , s := setup (t , domain1 , false , true )
235
+ defer conn .Close ()
236
+
237
+ // Alias a new user@domain
238
+ assert (t , s .Mail (user1 , nil ))
239
+ assert (t , s .Rcpt (to , nil ))
240
+ userAlias := "User alias"
241
+ r , err := newSigned (domain1 , "valid" , user1 , to , alias + user3 , userAlias )
242
+ assert (t , err )
243
+ assert (t , s .Data (r ))
244
+
245
+ items := conn .GetItems ()
246
+ assertSlicesEqual (t , nil , items )
247
+ if delegate := conn .GetDelegatedEmailFor (user3 ); delegate != user1 {
248
+ t .Fatalf ("Expecting delegate for %s to be %s, got %s" , user3 , user1 , delegate )
249
+ }
250
+
251
+ // Use new user@domain
252
+ assert (t , s .Mail (user3 , nil ))
253
+ assert (t , s .Rcpt (to , nil ))
254
+ r , err = newSigned (domain2 , "valid" , user3 , to , borrow + tool1 , "" )
255
+ assert (t , err )
256
+ err = s .Data (r )
257
+ if err != mail .InvalidError {
258
+ t .Fatalf ("Expected %v, got %v" , mail .InvalidError , err )
259
+ }
260
+
261
+ items = conn .GetItems ()
262
+ assertSlicesEqual (t , nil , items )
263
+
264
+ // Test that other users and domains still not valid
265
+ assert (t , s .Mail (user4 , nil ))
266
+ assert (t , s .Rcpt (to , nil ))
267
+ r , err = newSigned (domain2 , "valid" , user4 , to , borrow + tool1 , "" )
268
+ assert (t , err )
269
+ err = s .Data (r )
270
+ if err != mail .InvalidError {
271
+ t .Fatalf ("Expected %v, got %v" , mail .InvalidError , err )
272
+ }
273
+ assert (t , s .Mail (user5 , nil ))
274
+ assert (t , s .Rcpt (to , nil ))
275
+ r , err = newSigned (domain3 , "valid" , user5 , to , borrow + tool1 , "" )
276
+ assert (t , err )
277
+ err = s .Data (r )
278
+ if err != mail .InvalidError {
279
+ t .Fatalf ("Expected %v, got %v" , mail .InvalidError , err )
280
+ }
281
+ }
282
+
283
+ func TestNoUnsignedDelegate (t * testing.T ) {
284
+ conn , s := setup (t , domain1 , true , false )
285
+ defer conn .Close ()
286
+
287
+ // Alias a new user@domain -- unsigned
288
+ assert (t , s .Mail (user1 , nil ))
289
+ assert (t , s .Rcpt (to , nil ))
290
+ userAlias := "User alias"
291
+
292
+ assert (t , s .Data (newPlain (user1 , to , alias + user3 , userAlias )))
293
+
294
+ items := conn .GetItems ()
295
+ assertSlicesEqual (t , nil , items )
296
+ if delegate := conn .GetDelegatedEmailFor (user3 ); delegate != user1 {
297
+ t .Fatalf ("Expecting delegate for %s to be %s, got %s" , user3 , user1 , delegate )
298
+ }
299
+
300
+ // Use signed user@domain
301
+ assert (t , s .Mail (user3 , nil ))
302
+ assert (t , s .Rcpt (to , nil ))
303
+ r , err := newSigned (domain2 , "valid" , user3 , to , borrow + tool1 , "" )
304
+ assert (t , err )
305
+ assert (t , s .Data (r ))
306
+
307
+ // Use plain user@domain
308
+ assert (t , s .Mail (user3 , nil ))
309
+ assert (t , s .Rcpt (to , nil ))
310
+ err = s .Data (newPlain (user3 , to , borrow + tool1 , "" ))
311
+ if err != mail .InvalidError {
312
+ t .Fatalf ("Expected %v, got %v" , mail .InvalidError , err )
313
+ }
314
+
315
+ items = conn .GetItems ()
316
+ expected := []db.Item {
317
+ {
318
+ Location : db.Location {
319
+ Tool : tool1 ,
320
+ LastSeenBy : user3 ,
321
+ },
322
+ Alias : & userAlias ,
323
+ },
324
+ }
325
+ assertSlicesEqual (t , expected , items )
326
+
327
+ // Test that other users and domains still not valid
328
+ assert (t , s .Mail (user4 , nil ))
329
+ assert (t , s .Rcpt (to , nil ))
330
+ r , err = newSigned (domain2 , "valid" , user4 , to , borrow + tool1 , "" )
331
+ assert (t , err )
332
+ err = s .Data (r )
333
+ if err != mail .InvalidError {
334
+ t .Fatalf ("Expected %v, got %v" , mail .InvalidError , err )
335
+ }
336
+ assert (t , s .Mail (user5 , nil ))
337
+ assert (t , s .Rcpt (to , nil ))
338
+ r , err = newSigned (domain3 , "valid" , user5 , to , borrow + tool1 , "" )
339
+ assert (t , err )
340
+ err = s .Data (r )
341
+ if err != mail .InvalidError {
342
+ t .Fatalf ("Expected %v, got %v" , mail .InvalidError , err )
343
+ }
344
+ }
0 commit comments