ecr cred helper, test

feature/ecr_registry_auth
Karolis Rusenas 2018-04-25 22:45:15 +01:00
parent 69dbeef4e4
commit 393f885dee
2 changed files with 70 additions and 3 deletions

View File

@ -55,7 +55,7 @@ func NewPollManager(providers provider.Providers, watcher Watcher, secretsGetter
credentialsHelper: credentialsHelper,
watcher: watcher,
mu: &sync.Mutex{},
scanTick: 55,
scanTick: 1,
}
}
@ -82,7 +82,6 @@ func (s *DefaultManager) Start(ctx context.Context) error {
case <-ctx.Done():
return nil
case <-ticker.C:
log.Debug("performing scan")
err := s.scan(ctx)
if err != nil {
log.WithFields(log.Fields{
@ -94,6 +93,7 @@ func (s *DefaultManager) Start(ctx context.Context) error {
}
func (s *DefaultManager) scan(ctx context.Context) error {
log.Info("performing scan")
trackedImages, err := s.providers.TrackedImages()
if err != nil {
return err

View File

@ -2,15 +2,20 @@ package poll
import (
"context"
"os"
"time"
"github.com/keel-hq/keel/approvals"
"github.com/keel-hq/keel/cache/memory"
"github.com/keel-hq/keel/provider"
"github.com/keel-hq/keel/registry"
"github.com/keel-hq/keel/types"
"github.com/keel-hq/keel/util/codecs"
"github.com/keel-hq/keel/util/image"
"github.com/keel-hq/keel/extension/credentialshelper"
_ "github.com/keel-hq/keel/extension/credentialshelper/aws"
"testing"
)
@ -54,7 +59,7 @@ func TestCheckDeployment(t *testing.T) {
watcher := NewRepositoryWatcher(providers, frc)
pm := NewPollManager(providers, watcher, &FakeSecretsGetter{})
pm := NewPollManager(providers, watcher, &FakeSecretsGetter{}, credentialshelper.New())
imageA := "gcr.io/v2-namespace/hello-world:1.1.1"
imageB := "gcr.io/v2-namespace/greetings-world:1.1.1"
@ -97,3 +102,65 @@ func TestCheckDeployment(t *testing.T) {
t.Errorf("unexpected tag: %s", watcher.watched[keyB].imageRef.Tag())
}
}
// To run this test, set AWS env variables
// export AWS_ACCESS_KEY_ID=AKIA.........
// export AWS_ACCESS_KEY=3v..............
// export AWS_REGION=us-east-2
func TestCheckECRDeployment(t *testing.T) {
if os.Getenv("AWS_ACCESS_KEY_ID") == "" {
t.Skip()
}
// fake provider listening for events
imgA, _ := image.Parse("528670773427.dkr.ecr.us-east-2.amazonaws.com/webhook-demo:master")
fp := &fakeProvider{
images: []*types.TrackedImage{
&types.TrackedImage{
Image: imgA,
Trigger: types.TriggerTypePoll,
Provider: "fp",
PollSchedule: types.KeelPollDefaultSchedule,
},
},
}
mem := memory.NewMemoryCache(100*time.Millisecond, 100*time.Millisecond, 10*time.Millisecond)
am := approvals.New(mem, codecs.DefaultSerializer())
providers := provider.New([]provider.Provider{fp}, am)
rc := registry.New()
watcher := NewRepositoryWatcher(providers, rc)
pm := NewPollManager(providers, watcher, &FakeSecretsGetter{}, credentialshelper.New())
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
pm.scan(ctx)
// 2 subscriptions should be added
entries := watcher.cron.Entries()
if len(entries) != 1 {
t.Fatalf("unexpected list of cron entries: %d", len(entries))
}
keyA := getImageIdentifier(imgA)
if len(watcher.watched) != 1 {
t.Fatalf("expected to find 1 entry in watcher.watched map, found: %d", len(watcher.watched))
}
if watcher.watched[keyA].digest != "sha256:7712aa425c17c2e413e5f4d64e2761eda009509d05d0e45a26e389d715aebe23" {
t.Errorf("unexpected digest: %s", watcher.watched[keyA].digest)
}
if watcher.watched[keyA].schedule != types.KeelPollDefaultSchedule {
t.Errorf("unexpected schedule: %s", watcher.watched[keyA].schedule)
}
if watcher.watched[keyA].imageRef.Remote() != imgA.Remote() {
t.Errorf("unexpected remote remote: %s", watcher.watched[keyA].imageRef.Remote())
}
if watcher.watched[keyA].imageRef.Tag() != imgA.Tag() {
t.Errorf("unexpected tag: %s", watcher.watched[keyA].imageRef.Tag())
}
}