Merge pull request #413 from keel-hq/feature/test_refactoring
Feature/test refactoringpull/414/head
commit
108b943e96
|
@ -5,4 +5,5 @@ hack/deployment-norbac.yaml
|
|||
hack/deployment-rbac.yaml
|
||||
hack/deployment-norbac-helm.yaml
|
||||
.vscode
|
||||
.idea/
|
||||
.idea/
|
||||
tests.out
|
3
Makefile
3
Makefile
|
@ -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"
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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{
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
|
||||
|
|
|
@ -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{
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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{}
|
||||
|
|
|
@ -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}
|
||||
|
||||
|
|
Loading…
Reference in New Issue