Add validity check for subscription type when retrieving a subscription

This commit is contained in:
kolaente 2021-02-13 20:37:14 +01:00
parent 77767b2122
commit 3a7e549e1b
Signed by: konrad
GPG Key ID: F40E70337AB24C9B
2 changed files with 23 additions and 0 deletions

View File

@ -73,12 +73,26 @@ func getEntityTypeFromString(entityType string) SubscriptionEntityType {
return SubscriptionEntityUnknown
}
func (et SubscriptionEntityType) validate() error {
if et == SubscriptionEntityNamespace ||
et == SubscriptionEntityList ||
et == SubscriptionEntityTask {
return nil
}
return &ErrUnknownSubscriptionEntityType{EntityType: et}
}
func getSubscription(s *xorm.Session, entityType SubscriptionEntityType, a web.Auth, entityID int64) (subscription *Subscription, err error) {
u, is := a.(*user.User)
if !is {
return
}
if err := entityType.validate(); err != nil {
return nil, err
}
subscription = &Subscription{}
var cond builder.Cond

View File

@ -333,4 +333,13 @@ func TestSubscriptionGet(t *testing.T) {
assert.Equal(t, int64(3), sub.ID)
})
})
t.Run("invalid type", func(t *testing.T) {
db.LoadAndAssertFixtures(t)
s := db.NewSession()
defer s.Close()
_, err := getSubscription(s, 2342, u, 21)
assert.Error(t, err)
assert.True(t, IsErrUnknownSubscriptionEntityType(err))
})
}