mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
[feature] Implement Web Push notification policy (#3721)
* Web Push: add policy column to subscriptions * Web Push: add policy to API * Web Push: test notification policy * go-fmt unrelated file (how did this get thru?)
This commit is contained in:
@@ -44,6 +44,7 @@ func (suite *PushTestSuite) postSubscription(
|
||||
p256dh *string,
|
||||
alertsMention *bool,
|
||||
alertsStatus *bool,
|
||||
policy *string,
|
||||
requestJson *string,
|
||||
expectedHTTPStatus int,
|
||||
) (*apimodel.WebPushSubscription, error) {
|
||||
@@ -80,6 +81,9 @@ func (suite *PushTestSuite) postSubscription(
|
||||
if alertsStatus != nil {
|
||||
ctx.Request.Form["data[alerts][status]"] = []string{strconv.FormatBool(*alertsStatus)}
|
||||
}
|
||||
if policy != nil {
|
||||
ctx.Request.Form["data[policy]"] = []string{*policy}
|
||||
}
|
||||
}
|
||||
|
||||
// trigger the handler
|
||||
@@ -119,6 +123,7 @@ func (suite *PushTestSuite) TestPostSubscription() {
|
||||
p256dh := "BMYVItYVOX+AHBdtA62Q0i6c+F7MV2Gia3aoDr8mvHkuPBNIOuTLDfmFcnBqoZcQk6BtLcIONbxhHpy2R+mYIUY="
|
||||
alertsMention := true
|
||||
alertsStatus := false
|
||||
policy := "followed"
|
||||
subscription, err := suite.postSubscription(
|
||||
accountFixtureName,
|
||||
tokenFixtureName,
|
||||
@@ -127,6 +132,7 @@ func (suite *PushTestSuite) TestPostSubscription() {
|
||||
&p256dh,
|
||||
&alertsMention,
|
||||
&alertsStatus,
|
||||
&policy,
|
||||
nil,
|
||||
200,
|
||||
)
|
||||
@@ -138,6 +144,7 @@ func (suite *PushTestSuite) TestPostSubscription() {
|
||||
suite.False(subscription.Alerts.Status)
|
||||
// Omitted event types should default to off.
|
||||
suite.False(subscription.Alerts.Favourite)
|
||||
suite.Equal(apimodel.WebPushNotificationPolicyFollowed, subscription.Policy)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -159,6 +166,7 @@ func (suite *PushTestSuite) TestPostSubscriptionMinimal() {
|
||||
nil,
|
||||
nil,
|
||||
nil,
|
||||
nil,
|
||||
200,
|
||||
)
|
||||
if suite.NoError(err) {
|
||||
@@ -169,6 +177,8 @@ func (suite *PushTestSuite) TestPostSubscriptionMinimal() {
|
||||
suite.False(subscription.Alerts.Mention)
|
||||
suite.False(subscription.Alerts.Status)
|
||||
suite.False(subscription.Alerts.Favourite)
|
||||
// Policy should default to all.
|
||||
suite.Equal(apimodel.WebPushNotificationPolicyAll, subscription.Policy)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -192,6 +202,7 @@ func (suite *PushTestSuite) TestPostInvalidSubscription() {
|
||||
&alertsMention,
|
||||
&alertsStatus,
|
||||
nil,
|
||||
nil,
|
||||
422,
|
||||
)
|
||||
suite.NoError(err)
|
||||
@@ -215,7 +226,8 @@ func (suite *PushTestSuite) TestPostSubscriptionJSON() {
|
||||
"alerts": {
|
||||
"mention": true,
|
||||
"status": false
|
||||
}
|
||||
},
|
||||
"policy": "followed"
|
||||
}
|
||||
}`
|
||||
subscription, err := suite.postSubscription(
|
||||
@@ -226,6 +238,7 @@ func (suite *PushTestSuite) TestPostSubscriptionJSON() {
|
||||
nil,
|
||||
nil,
|
||||
nil,
|
||||
nil,
|
||||
&requestJson,
|
||||
200,
|
||||
)
|
||||
@@ -237,6 +250,7 @@ func (suite *PushTestSuite) TestPostSubscriptionJSON() {
|
||||
suite.False(subscription.Alerts.Status)
|
||||
// Omitted event types should default to off.
|
||||
suite.False(subscription.Alerts.Favourite)
|
||||
suite.Equal(apimodel.WebPushNotificationPolicyFollowed, subscription.Policy)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -263,6 +277,7 @@ func (suite *PushTestSuite) TestPostSubscriptionJSONMinimal() {
|
||||
nil,
|
||||
nil,
|
||||
nil,
|
||||
nil,
|
||||
&requestJson,
|
||||
200,
|
||||
)
|
||||
@@ -274,6 +289,8 @@ func (suite *PushTestSuite) TestPostSubscriptionJSONMinimal() {
|
||||
suite.False(subscription.Alerts.Mention)
|
||||
suite.False(subscription.Alerts.Status)
|
||||
suite.False(subscription.Alerts.Favourite)
|
||||
// Policy should default to all.
|
||||
suite.Equal(apimodel.WebPushNotificationPolicyAll, subscription.Policy)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -306,6 +323,7 @@ func (suite *PushTestSuite) TestPostInvalidSubscriptionJSON() {
|
||||
nil,
|
||||
nil,
|
||||
nil,
|
||||
nil,
|
||||
&requestJson,
|
||||
422,
|
||||
)
|
||||
@@ -323,6 +341,7 @@ func (suite *PushTestSuite) TestPostExistingSubscription() {
|
||||
p256dh := "BMYVItYVOX+AHBdtA62Q0i6c+F7MV2Gia3aoDr8mvHkuPBNIOuTLDfmFcnBqoZcQk6BtLcIONbxhHpy2R+mYIUY="
|
||||
alertsMention := true
|
||||
alertsStatus := false
|
||||
policy := "followed"
|
||||
subscription, err := suite.postSubscription(
|
||||
accountFixtureName,
|
||||
tokenFixtureName,
|
||||
@@ -331,6 +350,7 @@ func (suite *PushTestSuite) TestPostExistingSubscription() {
|
||||
&p256dh,
|
||||
&alertsMention,
|
||||
&alertsStatus,
|
||||
&policy,
|
||||
nil,
|
||||
200,
|
||||
)
|
||||
|
Reference in New Issue
Block a user