@@ -397,6 +397,7 @@ func TestWebpushSubscribeUnsubscribe(t *testing.T) {
397
397
})
398
398
owner := coderdtest .CreateFirstUser (t , client )
399
399
memberClient , _ := coderdtest .CreateAnotherUser (t , client , owner .OrganizationID )
400
+ _ , anotherMember := coderdtest .CreateAnotherUser (t , client , owner .OrganizationID )
400
401
401
402
handlerCalled := make (chan bool , 1 )
402
403
server := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , _ * http.Request ) {
@@ -414,11 +415,34 @@ func TestWebpushSubscribeUnsubscribe(t *testing.T) {
414
415
require .True (t , <- handlerCalled , "handler should have been called" )
415
416
416
417
err = memberClient .PostTestWebpushMessage (ctx )
417
- require .NoError (t , err , "test web push notification " )
418
+ require .NoError (t , err , "test webpush message " )
418
419
require .True (t , <- handlerCalled , "handler should have been called again" )
419
420
420
421
err = memberClient .DeleteWebpushSubscription (ctx , "me" , codersdk.DeleteWebpushSubscription {
421
422
Endpoint : server .URL ,
422
423
})
423
424
require .NoError (t , err , "delete webpush subscription" )
425
+
426
+ // Deleting the subscription for a non-existent endpoint should return a 404
427
+ err = memberClient .DeleteWebpushSubscription (ctx , "me" , codersdk.DeleteWebpushSubscription {
428
+ Endpoint : server .URL ,
429
+ })
430
+ var sdkError * codersdk.Error
431
+ require .Error (t , err )
432
+ require .ErrorAsf (t , err , & sdkError , "error should be of type *codersdk.Error" )
433
+ require .Equal (t , http .StatusNotFound , sdkError .StatusCode ())
434
+
435
+ // Creating a subscription for another user should not be allowed.
436
+ err = memberClient .PostWebpushSubscription (ctx , anotherMember .ID .String (), codersdk.WebpushSubscription {
437
+ Endpoint : server .URL ,
438
+ AuthKey : validEndpointAuthKey ,
439
+ P256DHKey : validEndpointP256dhKey ,
440
+ })
441
+ require .Error (t , err , "create webpush subscription for another user" )
442
+
443
+ // Deleting a subscription for another user should not be allowed.
444
+ err = memberClient .DeleteWebpushSubscription (ctx , anotherMember .ID .String (), codersdk.DeleteWebpushSubscription {
445
+ Endpoint : server .URL ,
446
+ })
447
+ require .Error (t , err , "delete webpush subscription for another user" )
424
448
}
0 commit comments