Merge pull request #413 from keel-hq/feature/test_refactoring

Feature/test refactoring
pull/414/head
Karolis 2019-07-07 15:55:52 +01:00 committed by GitHub
commit 108b943e96
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 393 additions and 123 deletions

3
.gitignore vendored
View File

@ -5,4 +5,5 @@ hack/deployment-norbac.yaml
hack/deployment-rbac.yaml
hack/deployment-norbac-helm.yaml
.vscode
.idea/
.idea/
tests.out

View File

@ -45,7 +45,8 @@ arm: build-binaries compress fetch-certs armhf aarch64
test:
go get github.com/mfridman/tparse
go test -json -v `go list ./... | egrep -v /tests` -cover | tparse -all -smallscreen
go test -json -v `go list ./... | egrep -v /tests` -cover > tests.out
tparse -all -smallscreen tests.out
build:
@echo "++ Building keel"

View File

@ -1,7 +1,9 @@
package hipchat
import (
"io/ioutil"
"os"
"path/filepath"
"regexp"
"strings"
"testing"
@ -11,7 +13,8 @@ import (
"github.com/keel-hq/keel/approvals"
b "github.com/keel-hq/keel/bot"
"github.com/keel-hq/keel/cache/memory"
"github.com/keel-hq/keel/pkg/store/sql"
"github.com/keel-hq/keel/provider/kubernetes"
"github.com/keel-hq/keel/types"
@ -104,12 +107,35 @@ func init() {
log.SetLevel(log.DebugLevel)
}
func newTestingUtils() (*sql.SQLStore, func()) {
dir, err := ioutil.TempDir("", "whstoretest")
if err != nil {
log.Fatal(err)
}
tmpfn := filepath.Join(dir, "gorm.db")
// defer
store, err := sql.New(sql.Opts{DatabaseType: "sqlite3", URI: tmpfn})
if err != nil {
log.Fatal(err)
}
teardown := func() {
os.RemoveAll(dir) // clean up
}
return store, teardown
}
func TestHelpCommand(t *testing.T) {
f8s := &testutil.FakeK8sImplementer{}
fi := &fakeXmppImplementer{}
fi.messages = make(chan *h.Message)
mem := memory.NewMemoryCache()
am := approvals.New(mem)
store, teardown := newTestingUtils()
defer teardown()
am := approvals.New(&approvals.Opts{
Store: store,
})
NewBot(f8s, am, fi)
defer b.Stop()
@ -138,8 +164,11 @@ func TestBotAproval(t *testing.T) {
f8s := &testutil.FakeK8sImplementer{}
fi := &fakeXmppImplementer{}
fi.messages = make(chan *h.Message)
mem := memory.NewMemoryCache()
am := approvals.New(mem)
store, teardown := newTestingUtils()
defer teardown()
am := approvals.New(&approvals.Opts{
Store: store,
})
NewBot(f8s, am, fi)
defer b.Stop()
@ -200,8 +229,11 @@ func TestBotReject(t *testing.T) {
f8s := &testutil.FakeK8sImplementer{}
fi := &fakeXmppImplementer{}
fi.messages = make(chan *h.Message)
mem := memory.NewMemoryCache()
am := approvals.New(mem)
store, teardown := newTestingUtils()
defer teardown()
am := approvals.New(&approvals.Opts{
Store: store,
})
NewBot(f8s, am, fi)
defer b.Stop()

View File

@ -130,7 +130,7 @@ func (b *Bot) startInternal() error {
case *slack.PresenceChangeEvent:
// nothing to do
case *slack.RTMError:
log.Error("Error: %s", ev.Error())
log.Errorf("Error: %s", ev.Error())
case *slack.InvalidAuthEvent:
log.Error("Invalid credentials")
return fmt.Errorf("invalid credentials")

View File

@ -2,17 +2,22 @@ package slack
import (
"fmt"
"io/ioutil"
"log"
"os"
"path/filepath"
"time"
"github.com/nlopes/slack"
"github.com/keel-hq/keel/extension/approval"
"github.com/keel-hq/keel/pkg/store/sql"
"github.com/keel-hq/keel/provider/kubernetes"
"github.com/keel-hq/keel/approvals"
b "github.com/keel-hq/keel/bot"
"github.com/keel-hq/keel/cache/memory"
// "github.com/keel-hq/keel/cache/memory"
"github.com/keel-hq/keel/constants"
"github.com/keel-hq/keel/types"
@ -83,20 +88,42 @@ func (i *fakeSlackImplementer) PostMessage(channelID string, options ...slack.Ms
return "", "", nil
}
func newTestingUtils() (*sql.SQLStore, func()) {
dir, err := ioutil.TempDir("", "whstoretest")
if err != nil {
log.Fatal(err)
}
tmpfn := filepath.Join(dir, "gorm.db")
// defer
store, err := sql.New(sql.Opts{DatabaseType: "sqlite3", URI: tmpfn})
if err != nil {
log.Fatal(err)
}
teardown := func() {
os.RemoveAll(dir) // clean up
}
return store, teardown
}
func TestBotRequest(t *testing.T) {
os.Setenv(constants.EnvSlackToken, "")
f8s := &testutil.FakeK8sImplementer{}
fi := &fakeSlackImplementer{}
mem := memory.NewMemoryCache()
token := os.Getenv(constants.EnvSlackToken)
if token == "" {
t.Skip()
}
am := approvals.New(mem)
store, teardown := newTestingUtils()
defer teardown()
am := approvals.New(&approvals.Opts{
Store: store,
})
New("keel", token, "approvals", f8s, am, fi)
defer b.Stop()
@ -133,14 +160,17 @@ func TestProcessApprovedResponse(t *testing.T) {
f8s := &testutil.FakeK8sImplementer{}
fi := &fakeSlackImplementer{}
mem := memory.NewMemoryCache()
token := os.Getenv(constants.EnvSlackToken)
if token == "" {
t.Skip()
}
am := approvals.New(mem)
store, teardown := newTestingUtils()
defer teardown()
am := approvals.New(&approvals.Opts{
Store: store,
})
New("keel", token, "approvals", f8s, am, fi)
defer b.Stop()
@ -177,14 +207,17 @@ func TestProcessApprovalReply(t *testing.T) {
f8s := &testutil.FakeK8sImplementer{}
fi := &fakeSlackImplementer{}
mem := memory.NewMemoryCache()
token := os.Getenv(constants.EnvSlackToken)
if token == "" {
t.Skip()
}
am := approvals.New(mem)
store, teardown := newTestingUtils()
defer teardown()
am := approvals.New(&approvals.Opts{
Store: store,
})
identifier := "k8s/project/repo:1.2.3"
@ -245,7 +278,6 @@ func TestProcessRejectedReply(t *testing.T) {
f8s := &testutil.FakeK8sImplementer{}
fi := &fakeSlackImplementer{}
mem := memory.NewMemoryCache()
token := os.Getenv(constants.EnvSlackToken)
if token == "" {
@ -254,7 +286,11 @@ func TestProcessRejectedReply(t *testing.T) {
identifier := "k8s/project/repo:1.2.3"
am := approvals.New(mem)
store, teardown := newTestingUtils()
defer teardown()
am := approvals.New(&approvals.Opts{
Store: store,
})
// creating initial approve request
err := am.Create(&types.Approval{
Identifier: identifier,
@ -314,30 +350,7 @@ func TestProcessRejectedReply(t *testing.T) {
}
func TestIsApproval(t *testing.T) {
// f8s := &testutil.FakeK8sImplementer{}
// mem := memory.NewMemoryCache(100*time.Hour, 100*time.Hour, 100*time.Hour)
//
// identifier := "k8s/project/repo:1.2.3"
//
// am := approvals.New(mem)
// // creating initial approve request
// err := am.Create(&types.Approval{
// Identifier: identifier,
// VotesRequired: 2,
// CurrentVersion: "2.3.4",
// NewVersion: "3.4.5",
// Event: &types.Event{
// Repository: types.Repository{
// Name: "project/repo",
// Tag: "2.3.4",
// },
// },
// })
//
// if err != nil {
// t.Fatalf("unexpected error while creating : %s", err)
// }
// bot := New("keel", "random", "approvals", f8s, am, fi)
event := &slack.MessageEvent{
Msg: slack.Msg{
Channel: "approvals",

View File

@ -1,14 +1,18 @@
package helm
import (
"io/ioutil"
"log"
"os"
"path/filepath"
"reflect"
"testing"
"github.com/ghodss/yaml"
"github.com/keel-hq/keel/approvals"
"github.com/keel-hq/keel/cache/memory"
"github.com/keel-hq/keel/extension/notification"
"github.com/keel-hq/keel/internal/policy"
"github.com/keel-hq/keel/pkg/store/sql"
"github.com/keel-hq/keel/types"
"k8s.io/helm/pkg/chartutil"
"k8s.io/helm/pkg/helm"
@ -17,10 +21,30 @@ import (
rls "k8s.io/helm/pkg/proto/hapi/services"
)
func approver() *approvals.DefaultManager {
cache := memory.NewMemoryCache()
func newTestingUtils() (*sql.SQLStore, func()) {
dir, err := ioutil.TempDir("", "whstoretest")
if err != nil {
log.Fatal(err)
}
tmpfn := filepath.Join(dir, "gorm.db")
// defer
store, err := sql.New(sql.Opts{DatabaseType: "sqlite3", URI: tmpfn})
if err != nil {
log.Fatal(err)
}
return approvals.New(cache)
teardown := func() {
os.RemoveAll(dir) // clean up
}
return store, teardown
}
func approver() (*approvals.DefaultManager, func()) {
store, teardown := newTestingUtils()
return approvals.New(&approvals.Opts{
Store: store,
}), teardown
}
type fakeSender struct {
@ -221,7 +245,9 @@ keel:
},
}
prov := NewProvider(fakeImpl, &fakeSender{}, approver())
approver, teardown := approver()
defer teardown()
prov := NewProvider(fakeImpl, &fakeSender{}, approver)
tracked, _ := prov.TrackedImages()
@ -262,7 +288,9 @@ image2:
},
}
prov := NewProvider(fakeImpl, &fakeSender{}, approver())
approver, teardown := approver()
defer teardown()
prov := NewProvider(fakeImpl, &fakeSender{}, approver)
tracked, _ := prov.TrackedImages()
@ -311,7 +339,9 @@ keel:
},
}
prov := NewProvider(fakeImpl, &fakeSender{}, approver())
approver, teardown := approver()
defer teardown()
prov := NewProvider(fakeImpl, &fakeSender{}, approver)
tracked, _ := prov.TrackedImages()
@ -379,7 +409,6 @@ func TestGetImagesFromConfig(t *testing.T) {
}
func TestUpdateRelease(t *testing.T) {
// imp := NewHelmImplementer("192.168.99.100:30083")
chartVals := `
name: al Rashid
@ -414,7 +443,9 @@ keel:
},
}
provider := NewProvider(fakeImpl, &fakeSender{}, approver())
approver, teardown := approver()
defer teardown()
provider := NewProvider(fakeImpl, &fakeSender{}, approver)
err := provider.processEvent(&types.Event{
Repository: types.Repository{

View File

@ -52,7 +52,8 @@ func TestCheckRequestedApproval(t *testing.T) {
grc := &k8s.GenericResourceCache{}
grc.Add(grs...)
approver := approver()
approver, teardown := approver()
defer teardown()
provider, err := NewProvider(fp, &fakeSender{}, approver, grc)
if err != nil {
t.Fatalf("failed to get provider: %s", err)
@ -127,7 +128,8 @@ func TestCheckRequestedApprovalAnnotation(t *testing.T) {
grc := &k8s.GenericResourceCache{}
grc.Add(grs...)
approver := approver()
approver, teardown := approver()
defer teardown()
provider, err := NewProvider(fp, &fakeSender{}, approver, grc)
if err != nil {
t.Fatalf("failed to get provider: %s", err)
@ -204,7 +206,8 @@ func TestApprovedCheck(t *testing.T) {
grc := &k8s.GenericResourceCache{}
grc.Add(grs...)
approver := approver()
approver, teardown := approver()
defer teardown()
provider, err := NewProvider(fp, &fakeSender{}, approver, grc)
if err != nil {
t.Fatalf("failed to get provider: %s", err)
@ -284,7 +287,8 @@ func TestApprovalsCleanup(t *testing.T) {
grc := &k8s.GenericResourceCache{}
grc.Add(grs...)
approver := approver()
approver, teardown := approver()
defer teardown()
provider, err := NewProvider(fp, &fakeSender{}, approver, grc)
if err != nil {
t.Fatalf("failed to get provider: %s", err)
@ -331,7 +335,8 @@ func TestApprovalsCleanup(t *testing.T) {
t.Fatalf("failed to get a list of approvals: %s", err)
}
if len(approvals) != 0 {
t.Errorf("expected to find 0 but found %d", len(approvals))
if len(approvals) != 1 && !approvals[0].Archived {
t.Errorf("expected to find 1 archived approval but found %d", len(approvals))
t.Logf("approval status: %v, identifier: %s", approvals[0].Archived, approvals[0].Identifier)
}
}

View File

@ -329,7 +329,7 @@ func (p *Provider) updateDeployments(plans []*UpdatePlan) (updated []*k8s.Generi
"name": resource.Name,
"kind": resource.Kind(),
"namespace": resource.Namespace,
}).Warn("provider.kubernetes: got error while resetting approvals counter after successful update")
}).Warn("provider.kubernetes: got error while archiving approvals counter after successful update")
}
var msg string
@ -340,7 +340,7 @@ func (p *Provider) updateDeployments(plans []*UpdatePlan) (updated []*k8s.Generi
msg = fmt.Sprintf("Successfully updated %s %s/%s %s->%s (%s)", resource.Kind(), resource.Namespace, resource.Name, plan.CurrentVersion, plan.NewVersion, strings.Join(resource.GetImages(), ", "))
}
p.sender.Send(types.EventNotification{
err = p.sender.Send(types.EventNotification{
ResourceKind: resource.Kind(),
Identifier: resource.Identifier,
Name: "update resource",
@ -355,6 +355,16 @@ func (p *Provider) updateDeployments(plans []*UpdatePlan) (updated []*k8s.Generi
"name": resource.GetName(),
},
})
if err != nil {
log.WithFields(log.Fields{
"error": err,
"name": resource.Name,
"kind": resource.Kind(),
"previous": plan.CurrentVersion,
"new": plan.NewVersion,
"namespace": resource.Namespace,
}).Error("provider.kubernetes: got error while sending notification")
}
log.WithFields(log.Fields{
"name": resource.Name,

View File

@ -1,12 +1,16 @@
package kubernetes
import (
"io/ioutil"
"log"
"os"
"path/filepath"
"testing"
"github.com/keel-hq/keel/approvals"
"github.com/keel-hq/keel/cache/memory"
"github.com/keel-hq/keel/extension/notification"
"github.com/keel-hq/keel/internal/k8s"
"github.com/keel-hq/keel/pkg/store/sql"
"github.com/keel-hq/keel/types"
apps_v1 "k8s.io/api/apps/v1"
@ -107,9 +111,30 @@ func (s *fakeSender) Send(event types.EventNotification) error {
return nil
}
func approver() *approvals.DefaultManager {
cache := memory.NewMemoryCache()
return approvals.New(cache)
func NewTestingUtils() (*sql.SQLStore, func()) {
dir, err := ioutil.TempDir("", "whstoretest")
if err != nil {
log.Fatal(err)
}
tmpfn := filepath.Join(dir, "gorm.db")
// defer
store, err := sql.New(sql.Opts{DatabaseType: "sqlite3", URI: tmpfn})
if err != nil {
log.Fatal(err)
}
teardown := func() {
os.RemoveAll(dir) // clean up
}
return store, teardown
}
func approver() (*approvals.DefaultManager, func()) {
store, teardown := NewTestingUtils()
return approvals.New(&approvals.Opts{
Store: store,
}), teardown
}
func TestGetNamespaces(t *testing.T) {
@ -128,7 +153,9 @@ func TestGetNamespaces(t *testing.T) {
grc := &k8s.GenericResourceCache{}
provider, err := NewProvider(fi, &fakeSender{}, approver(), grc)
approver, teardown := approver()
defer teardown()
provider, err := NewProvider(fi, &fakeSender{}, approver, grc)
if err != nil {
t.Fatalf("failed to get provider: %s", err)
}
@ -232,7 +259,9 @@ func TestGetImpacted(t *testing.T) {
grc := &k8s.GenericResourceCache{}
grc.Add(grs...)
provider, err := NewProvider(fp, &fakeSender{}, approver(), grc)
approver, teardown := approver()
defer teardown()
provider, err := NewProvider(fp, &fakeSender{}, approver, grc)
if err != nil {
t.Fatalf("failed to get provider: %s", err)
}
@ -328,7 +357,9 @@ func TestGetImpactedPolicyAnnotations(t *testing.T) {
grc := &k8s.GenericResourceCache{}
grc.Add(grs...)
provider, err := NewProvider(fp, &fakeSender{}, approver(), grc)
approver, teardown := approver()
defer teardown()
provider, err := NewProvider(fp, &fakeSender{}, approver, grc)
if err != nil {
t.Fatalf("failed to get provider: %s", err)
}
@ -428,7 +459,9 @@ func TestPrereleaseGetImpactedA(t *testing.T) {
grc := &k8s.GenericResourceCache{}
grc.Add(grs...)
provider, err := NewProvider(fp, &fakeSender{}, approver(), grc)
approver, teardown := approver()
defer teardown()
provider, err := NewProvider(fp, &fakeSender{}, approver, grc)
if err != nil {
t.Fatalf("failed to get provider: %s", err)
}
@ -518,7 +551,9 @@ func TestPrereleaseGetImpactedB(t *testing.T) {
grc := &k8s.GenericResourceCache{}
grc.Add(grs...)
provider, err := NewProvider(fp, &fakeSender{}, approver(), grc)
approver, teardown := approver()
defer teardown()
provider, err := NewProvider(fp, &fakeSender{}, approver, grc)
if err != nil {
t.Fatalf("failed to get provider: %s", err)
}
@ -644,8 +679,9 @@ func TestProcessEvent(t *testing.T) {
grs := MustParseGRS(deps)
grc := &k8s.GenericResourceCache{}
grc.Add(grs...)
provider, err := NewProvider(fp, &fakeSender{}, approver(), grc)
approver, teardown := approver()
defer teardown()
provider, err := NewProvider(fp, &fakeSender{}, approver, grc)
if err != nil {
t.Fatalf("failed to get provider: %s", err)
}
@ -710,7 +746,9 @@ func TestProcessEventBuildNumber(t *testing.T) {
grc := &k8s.GenericResourceCache{}
grc.Add(grs...)
provider, err := NewProvider(fp, &fakeSender{}, approver(), grc)
approver, teardown := approver()
defer teardown()
provider, err := NewProvider(fp, &fakeSender{}, approver, grc)
if err != nil {
t.Fatalf("failed to get provider: %s", err)
}
@ -772,7 +810,9 @@ func TestEventSent(t *testing.T) {
grc.Add(grs...)
fs := &fakeSender{}
provider, err := NewProvider(fp, fs, approver(), grc)
approver, teardown := approver()
defer teardown()
provider, err := NewProvider(fp, fs, approver, grc)
if err != nil {
t.Fatalf("failed to get provider: %s", err)
}
@ -838,7 +878,9 @@ func TestEventSentWithReleaseNotes(t *testing.T) {
grc.Add(grs...)
fs := &fakeSender{}
provider, err := NewProvider(fp, fs, approver(), grc)
approver, teardown := approver()
defer teardown()
provider, err := NewProvider(fp, fs, approver, grc)
if err != nil {
t.Fatalf("failed to get provider: %s", err)
}
@ -858,6 +900,10 @@ func TestEventSentWithReleaseNotes(t *testing.T) {
t.Errorf("expected to find a deployment with updated image but found: %s", fp.updated.Containers()[0].Image)
}
if fs.sentEvent.Level != types.LevelSuccess {
t.Errorf("expected level %s, got: %s", types.LevelSuccess, fs.sentEvent.Level)
}
if fs.sentEvent.Message != "Successfully updated deployment xxxx/deployment-1 10.0.0->11.0.0 (gcr.io/v2-namespace/hello-world:11.0.0). Release notes: https://github.com/keel-hq/keel/releases" {
t.Errorf("expected 'Successfully updated deployment xxxx/deployment-1 10.0.0->11.0.0 (gcr.io/v2-namespace/hello-world:11.0.0). Release notes: https://github.com/keel-hq/keel/releases' sent message, got: %s", fs.sentEvent.Message)
}
@ -926,7 +972,9 @@ func TestGetImpactedTwoContainersInSameDeployment(t *testing.T) {
grc := &k8s.GenericResourceCache{}
grc.Add(grs...)
provider, err := NewProvider(fp, &fakeSender{}, approver(), grc)
approver, teardown := approver()
defer teardown()
provider, err := NewProvider(fp, &fakeSender{}, approver, grc)
if err != nil {
t.Fatalf("failed to get provider: %s", err)
}
@ -1027,7 +1075,9 @@ func TestGetImpactedTwoSameContainersInSameDeployment(t *testing.T) {
grc := &k8s.GenericResourceCache{}
grc.Add(grs...)
provider, err := NewProvider(fp, &fakeSender{}, approver(), grc)
approver, teardown := approver()
defer teardown()
provider, err := NewProvider(fp, &fakeSender{}, approver, grc)
if err != nil {
t.Fatalf("failed to get provider: %s", err)
}
@ -1123,7 +1173,9 @@ func TestGetImpactedUntaggedImage(t *testing.T) {
grc := &k8s.GenericResourceCache{}
grc.Add(grs...)
provider, err := NewProvider(fp, &fakeSender{}, approver(), grc)
approver, teardown := approver()
defer teardown()
provider, err := NewProvider(fp, &fakeSender{}, approver, grc)
if err != nil {
t.Fatalf("failed to get provider: %s", err)
}
@ -1220,7 +1272,9 @@ func TestGetImpactedUntaggedOneImage(t *testing.T) {
grc := &k8s.GenericResourceCache{}
grc.Add(grs...)
provider, err := NewProvider(fp, &fakeSender{}, approver(), grc)
approver, teardown := approver()
defer teardown()
provider, err := NewProvider(fp, &fakeSender{}, approver, grc)
if err != nil {
t.Fatalf("failed to get provider: %s", err)
}
@ -1302,7 +1356,9 @@ func TestTrackedImages(t *testing.T) {
grc := &k8s.GenericResourceCache{}
grc.Add(grs...)
provider, err := NewProvider(fp, &fakeSender{}, approver(), grc)
approver, teardown := approver()
defer teardown()
provider, err := NewProvider(fp, &fakeSender{}, approver, grc)
if err != nil {
t.Fatalf("failed to get provider: %s", err)
}
@ -1367,7 +1423,9 @@ func TestTrackedImagesWithSecrets(t *testing.T) {
grc := &k8s.GenericResourceCache{}
grc.Add(grs...)
provider, err := NewProvider(fp, &fakeSender{}, approver(), grc)
approver, teardown := approver()
defer teardown()
provider, err := NewProvider(fp, &fakeSender{}, approver, grc)
if err != nil {
t.Fatalf("failed to get provider: %s", err)
}

View File

@ -2,10 +2,14 @@ package poll
import (
"context"
"io/ioutil"
"log"
"os"
"path/filepath"
"github.com/keel-hq/keel/approvals"
"github.com/keel-hq/keel/cache/memory"
"github.com/keel-hq/keel/pkg/store/sql"
// "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"
@ -24,6 +28,25 @@ func (g *FakeSecretsGetter) Get(image *types.TrackedImage) (*types.Credentials,
return &types.Credentials{}, nil
}
func newTestingUtils() (*sql.SQLStore, func()) {
dir, err := ioutil.TempDir("", "whstoretest")
if err != nil {
log.Fatal(err)
}
tmpfn := filepath.Join(dir, "gorm.db")
// defer
store, err := sql.New(sql.Opts{DatabaseType: "sqlite3", URI: tmpfn})
if err != nil {
log.Fatal(err)
}
teardown := func() {
os.RemoveAll(dir) // clean up
}
return store, teardown
}
func TestCheckDeployment(t *testing.T) {
// fake provider listening for events
imgA, _ := image.Parse("gcr.io/v2-namespace/hello-world:1.1.1")
@ -46,8 +69,13 @@ func TestCheckDeployment(t *testing.T) {
},
},
}
mem := memory.NewMemoryCache()
am := approvals.New(mem)
store, teardown := newTestingUtils()
defer teardown()
am := approvals.New(&approvals.Opts{
Store: store,
})
providers := provider.New([]provider.Provider{fp}, am)
// returning some sha
@ -123,8 +151,12 @@ func TestCheckECRDeployment(t *testing.T) {
},
},
}
mem := memory.NewMemoryCache()
am := approvals.New(mem)
store, teardown := newTestingUtils()
defer teardown()
am := approvals.New(&approvals.Opts{
Store: store,
})
providers := provider.New([]provider.Provider{fp}, am)
rc := registry.New()

View File

@ -6,7 +6,7 @@ import (
"testing"
"github.com/keel-hq/keel/approvals"
"github.com/keel-hq/keel/cache/memory"
// "github.com/keel-hq/keel/cache/memory"
"github.com/keel-hq/keel/internal/policy"
"github.com/keel-hq/keel/provider"
"github.com/keel-hq/keel/types"
@ -27,8 +27,12 @@ func TestWatchMultipleTagsWithSemver(t *testing.T) {
},
},
}
mem := memory.NewMemoryCache()
am := approvals.New(mem)
store, teardown := newTestingUtils()
defer teardown()
am := approvals.New(&approvals.Opts{
Store: store,
})
providers := provider.New([]provider.Provider{fp}, am)
// returning some sha
@ -64,8 +68,12 @@ func TestWatchAllTagsJobWithSemver(t *testing.T) {
},
},
}
mem := memory.NewMemoryCache()
am := approvals.New(mem)
store, teardown := newTestingUtils()
defer teardown()
am := approvals.New(&approvals.Opts{
Store: store,
})
providers := provider.New([]provider.Provider{fp}, am)
frc := &fakeRegistryClient{
@ -114,8 +122,12 @@ func TestWatchAllTagsPrerelease(t *testing.T) {
},
},
}
mem := memory.NewMemoryCache()
am := approvals.New(mem)
store, teardown := newTestingUtils()
defer teardown()
am := approvals.New(&approvals.Opts{
Store: store,
})
providers := provider.New([]provider.Provider{fp}, am)
frc := &fakeRegistryClient{
@ -168,8 +180,12 @@ func TestWatchAllTagsMixed(t *testing.T) {
},
},
}
mem := memory.NewMemoryCache()
am := approvals.New(mem)
store, teardown := newTestingUtils()
defer teardown()
am := approvals.New(&approvals.Opts{
Store: store,
})
providers := provider.New([]provider.Provider{fp}, am)
frc := &fakeRegistryClient{
@ -227,8 +243,12 @@ func TestWatchAllTagsMixedPolicyAll(t *testing.T) {
},
},
}
mem := memory.NewMemoryCache()
am := approvals.New(mem)
store, teardown := newTestingUtils()
defer teardown()
am := approvals.New(&approvals.Opts{
Store: store,
})
providers := provider.New([]provider.Provider{fp}, am)
frc := &fakeRegistryClient{

View File

@ -6,7 +6,7 @@ import (
"testing"
"github.com/keel-hq/keel/approvals"
"github.com/keel-hq/keel/cache/memory"
// "github.com/keel-hq/keel/cache/memory"
"github.com/keel-hq/keel/extension/credentialshelper"
"github.com/keel-hq/keel/internal/policy"
"github.com/keel-hq/keel/provider"
@ -73,8 +73,12 @@ func (p *fakeProvider) TrackedImages() ([]*types.TrackedImage, error) {
func TestWatchTagJob(t *testing.T) {
fp := &fakeProvider{}
mem := memory.NewMemoryCache()
am := approvals.New(mem)
store, teardown := newTestingUtils()
defer teardown()
am := approvals.New(&approvals.Opts{
Store: store,
})
providers := provider.New([]provider.Provider{fp}, am)
frc := &fakeRegistryClient{
@ -120,8 +124,12 @@ func TestWatchTagJob(t *testing.T) {
func TestWatchTagJobLatest(t *testing.T) {
fp := &fakeProvider{}
mem := memory.NewMemoryCache()
am := approvals.New(mem)
store, teardown := newTestingUtils()
defer teardown()
am := approvals.New(&approvals.Opts{
Store: store,
})
providers := provider.New([]provider.Provider{fp}, am)
frc := &fakeRegistryClient{
@ -175,8 +183,12 @@ func TestWatchAllTagsJob(t *testing.T) {
},
},
}
mem := memory.NewMemoryCache()
am := approvals.New(mem)
store, teardown := newTestingUtils()
defer teardown()
am := approvals.New(&approvals.Opts{
Store: store,
})
providers := provider.New([]provider.Provider{fp}, am)
frc := &fakeRegistryClient{
@ -215,8 +227,12 @@ func TestWatchAllTagsJobCurrentLatest(t *testing.T) {
},
},
}
mem := memory.NewMemoryCache()
am := approvals.New(mem)
store, teardown := newTestingUtils()
defer teardown()
am := approvals.New(&approvals.Opts{
Store: store,
})
providers := provider.New([]provider.Provider{fp}, am)
frc := &fakeRegistryClient{
@ -282,8 +298,12 @@ func TestWatchMultipleTags(t *testing.T) {
},
},
}
mem := memory.NewMemoryCache()
am := approvals.New(mem)
store, teardown := newTestingUtils()
defer teardown()
am := approvals.New(&approvals.Opts{
Store: store,
})
providers := provider.New([]provider.Provider{fp}, am)
// returning some sha
@ -358,8 +378,12 @@ func TestWatchTagJobCheckCredentials(t *testing.T) {
defer credentialshelper.UnregisterCredentialsHelper("fake")
fp := &fakeProvider{}
mem := memory.NewMemoryCache()
am := approvals.New(mem)
store, teardown := newTestingUtils()
defer teardown()
am := approvals.New(&approvals.Opts{
Store: store,
})
providers := provider.New([]provider.Provider{fp}, am)
frc := &fakeRegistryClient{
@ -407,8 +431,12 @@ func TestWatchTagJobLatestECR(t *testing.T) {
},
}
mem := memory.NewMemoryCache()
am := approvals.New(mem)
store, teardown := newTestingUtils()
defer teardown()
am := approvals.New(&approvals.Opts{
Store: store,
})
providers := provider.New([]provider.Provider{fp}, am)
rc := registry.New()
@ -450,8 +478,12 @@ func TestWatchTagJobLatestECR(t *testing.T) {
func TestUnwatchAfterNotTrackedAnymore(t *testing.T) {
fp := &fakeProvider{}
mem := memory.NewMemoryCache()
am := approvals.New(mem)
store, teardown := newTestingUtils()
defer teardown()
am := approvals.New(&approvals.Opts{
Store: store,
})
providers := provider.New([]provider.Provider{fp}, am)
// returning some sha

View File

@ -1,13 +1,17 @@
package pubsub
import (
"io/ioutil"
"log"
"os"
"path/filepath"
"sync"
"time"
"golang.org/x/net/context"
"github.com/keel-hq/keel/approvals"
"github.com/keel-hq/keel/cache/memory"
"github.com/keel-hq/keel/pkg/store/sql"
"github.com/keel-hq/keel/provider"
"github.com/keel-hq/keel/types"
"github.com/keel-hq/keel/util/image"
@ -15,6 +19,25 @@ import (
"testing"
)
func newTestingUtils() (*sql.SQLStore, func()) {
dir, err := ioutil.TempDir("", "whstoretest")
if err != nil {
log.Fatal(err)
}
tmpfn := filepath.Join(dir, "gorm.db")
// defer
store, err := sql.New(sql.Opts{DatabaseType: "sqlite3", URI: tmpfn})
if err != nil {
log.Fatal(err)
}
teardown := func() {
os.RemoveAll(dir) // clean up
}
return store, teardown
}
type fakeSubscriber struct {
TimesSubscribed int
SubscribedTopicName string
@ -66,8 +89,12 @@ func TestCheckDeployment(t *testing.T) {
},
}
mem := memory.NewMemoryCache()
am := approvals.New(mem)
store, teardown := newTestingUtils()
defer teardown()
am := approvals.New(&approvals.Opts{
Store: store,
})
providers := provider.New([]provider.Provider{fp}, am)
fs := &fakeSubscriber{}

View File

@ -7,7 +7,6 @@ import (
"golang.org/x/net/context"
"github.com/keel-hq/keel/approvals"
"github.com/keel-hq/keel/cache/memory"
"github.com/keel-hq/keel/provider"
"testing"
@ -23,8 +22,11 @@ func fakeDoneFunc(id string, done bool) {
func TestCallback(t *testing.T) {
fp := &fakeProvider{}
mem := memory.NewMemoryCache()
am := approvals.New(mem)
store, teardown := newTestingUtils()
defer teardown()
am := approvals.New(&approvals.Opts{
Store: store,
})
providers := provider.New([]provider.Provider{fp}, am)
sub := &PubsubSubscriber{disableAck: true, providers: providers}
@ -50,8 +52,11 @@ func TestCallback(t *testing.T) {
func TestCallbackTagNotSemver(t *testing.T) {
fp := &fakeProvider{}
mem := memory.NewMemoryCache()
am := approvals.New(mem)
store, teardown := newTestingUtils()
defer teardown()
am := approvals.New(&approvals.Opts{
Store: store,
})
providers := provider.New([]provider.Provider{fp}, am)
sub := &PubsubSubscriber{disableAck: true, providers: providers}
@ -78,8 +83,11 @@ func TestCallbackTagNotSemver(t *testing.T) {
func TestCallbackNoTag(t *testing.T) {
fp := &fakeProvider{}
mem := memory.NewMemoryCache()
am := approvals.New(mem)
store, teardown := newTestingUtils()
defer teardown()
am := approvals.New(&approvals.Opts{
Store: store,
})
providers := provider.New([]provider.Provider{fp}, am)
sub := &PubsubSubscriber{disableAck: true, providers: providers}