Add more tests

Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
This commit is contained in:
Gabriel Adrian Samfira 2025-05-20 13:50:56 +00:00
parent b4268e6bab
commit 1fe09548bc
3 changed files with 1288 additions and 15 deletions

View file

@ -205,21 +205,26 @@ func WithEntityJobFilter(ghEntity params.ForgeEntity) dbCommon.PayloadFilterFunc
}
}
// WithForgeCredentialsFilter returns a filter function that filters payloads by Github credentials.
// WithForgeCredentialsFilter returns a filter function that filters payloads by Github or Gitea credentials.
func WithForgeCredentialsFilter(creds params.ForgeCredentials) dbCommon.PayloadFilterFunc {
return func(payload dbCommon.ChangePayload) bool {
var idGetter params.IDGetter
var forgeCreds params.ForgeCredentials
var ok bool
switch payload.EntityType {
case dbCommon.GithubCredentialsEntityType, dbCommon.GiteaCredentialsEntityType:
idGetter, ok = payload.Payload.(params.ForgeCredentials)
forgeCreds, ok = payload.Payload.(params.ForgeCredentials)
default:
return false
}
if !ok {
return false
}
return idGetter.GetID() == creds.GetID()
// Gite and Github creds have different models. The ID is uint, so we
// need to explicitly check their type, or risk a clash.
if forgeCreds.ForgeType != creds.ForgeType {
return false
}
return forgeCreds.GetID() == creds.GetID()
}
}

View file

@ -0,0 +1,16 @@
package watcher_test
import (
"time"
"github.com/cloudbase/garm/database/common"
)
func waitForPayload(ch <-chan common.ChangePayload, timeout time.Duration) *common.ChangePayload {
select {
case payload := <-ch:
return &payload
case <-time.After(timeout):
return nil
}
}

File diff suppressed because it is too large Load diff