mirror of
https://github.com/storytold/irsa-manager.git
synced 2026-10-09 00:09:43 +00:00
mockgen
This commit is contained in:
@@ -60,6 +60,8 @@ ENVTEST_K8S_VERSION = 1.28.3
|
||||
# CRD_REF_DOCS_VERSION
|
||||
CRD_REF_DOCS_VERSION = v0.0.12
|
||||
|
||||
GOLANGCI_LINT_VERSION ?= v1.57.2
|
||||
|
||||
|
||||
.PHONY: all
|
||||
all: build
|
||||
@@ -70,6 +72,10 @@ all: build
|
||||
helm: manifests kustomize helmify
|
||||
$(KUSTOMIZE) build config/release | $(HELMIFY) -crd-dir charts/irsa-manager
|
||||
|
||||
.PHONY: mock
|
||||
mock: mockgen
|
||||
mockgen -source internal/selfhosted/oidc.go -destination internal/mock/oidc_mock.go -package mock
|
||||
|
||||
|
||||
.PHONY: manifests
|
||||
manifests: controller-gen ## Generate WebhookConfiguration, ClusterRole and CustomResourceDefinition objects.
|
||||
@@ -89,15 +95,9 @@ vet: ## Run go vet against code.
|
||||
|
||||
.PHONY: test
|
||||
test: manifests generate fmt vet envtest ## Run tests.
|
||||
KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) --bin-dir $(LOCALBIN) -p path)" go test $$(go list ./... | grep -v /e2e) -coverprofile cover.out
|
||||
|
||||
# Utilize Kind or modify the e2e tests to load the image locally, enabling compatibility with other vendors.
|
||||
.PHONY: test-e2e # Run the e2e tests against a Kind k8s instance that is spun up.
|
||||
test-e2e:
|
||||
go test ./test/e2e/ -v -ginkgo.v
|
||||
KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) --bin-dir $(LOCALBIN) -p path)" go test -coverprofile cover.out
|
||||
|
||||
GOLANGCI_LINT = $(shell pwd)/bin/golangci-lint
|
||||
GOLANGCI_LINT_VERSION ?= v1.54.2
|
||||
golangci-lint:
|
||||
@[ -f $(GOLANGCI_LINT) ] || { \
|
||||
set -e ;\
|
||||
@@ -184,6 +184,11 @@ envtest: $(ENVTEST) ## Download envtest-setup locally if necessary.
|
||||
$(ENVTEST): $(LOCALBIN)
|
||||
test -s $(LOCALBIN)/setup-envtest || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest
|
||||
|
||||
.PHONY: mockgen
|
||||
mockgen: $(MOCKGEN) ## Download envtest-setup locally if necessary.
|
||||
$(MOCKGEN): $(LOCALBIN)
|
||||
test -s $(LOCALBIN)/mockgen || GOBIN=$(LOCALBIN) go install go.uber.org/mock/mockgen@latest
|
||||
|
||||
.PHONY: helmify
|
||||
helmify: $(HELMIFY) ## Download helmify locally if necessary.
|
||||
$(HELMIFY): $(LOCALBIN)
|
||||
|
||||
@@ -13,6 +13,7 @@ require (
|
||||
github.com/onsi/ginkgo/v2 v2.17.1
|
||||
github.com/onsi/gomega v1.30.0
|
||||
github.com/stretchr/testify v1.9.0
|
||||
go.uber.org/mock v0.4.0
|
||||
k8s.io/apimachinery v0.29.3
|
||||
k8s.io/client-go v0.29.3
|
||||
sigs.k8s.io/controller-runtime v0.17.2
|
||||
|
||||
@@ -137,6 +137,8 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec
|
||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
|
||||
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
|
||||
go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU=
|
||||
go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc=
|
||||
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
|
||||
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
|
||||
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
|
||||
|
||||
@@ -0,0 +1,334 @@
|
||||
// Code generated by MockGen. DO NOT EDIT.
|
||||
// Source: internal/selfhosted/oidc.go
|
||||
//
|
||||
// Generated by this command:
|
||||
//
|
||||
// mockgen -source internal/selfhosted/oidc.go -destination internal/mock/oidc_mock.go -package mock
|
||||
//
|
||||
|
||||
// Package mock is a generated GoMock package.
|
||||
package mock
|
||||
|
||||
import (
|
||||
context "context"
|
||||
reflect "reflect"
|
||||
|
||||
selfhosted "github.com/kkb0318/irsa-manager/internal/selfhosted"
|
||||
gomock "go.uber.org/mock/gomock"
|
||||
)
|
||||
|
||||
// MockOIDCIssuerMeta is a mock of OIDCIssuerMeta interface.
|
||||
type MockOIDCIssuerMeta struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockOIDCIssuerMetaMockRecorder
|
||||
}
|
||||
|
||||
// MockOIDCIssuerMetaMockRecorder is the mock recorder for MockOIDCIssuerMeta.
|
||||
type MockOIDCIssuerMetaMockRecorder struct {
|
||||
mock *MockOIDCIssuerMeta
|
||||
}
|
||||
|
||||
// NewMockOIDCIssuerMeta creates a new mock instance.
|
||||
func NewMockOIDCIssuerMeta(ctrl *gomock.Controller) *MockOIDCIssuerMeta {
|
||||
mock := &MockOIDCIssuerMeta{ctrl: ctrl}
|
||||
mock.recorder = &MockOIDCIssuerMetaMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockOIDCIssuerMeta) EXPECT() *MockOIDCIssuerMetaMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// IssuerHostPath mocks base method.
|
||||
func (m *MockOIDCIssuerMeta) IssuerHostPath() string {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "IssuerHostPath")
|
||||
ret0, _ := ret[0].(string)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// IssuerHostPath indicates an expected call of IssuerHostPath.
|
||||
func (mr *MockOIDCIssuerMetaMockRecorder) IssuerHostPath() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IssuerHostPath", reflect.TypeOf((*MockOIDCIssuerMeta)(nil).IssuerHostPath))
|
||||
}
|
||||
|
||||
// IssuerUrl mocks base method.
|
||||
func (m *MockOIDCIssuerMeta) IssuerUrl() string {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "IssuerUrl")
|
||||
ret0, _ := ret[0].(string)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// IssuerUrl indicates an expected call of IssuerUrl.
|
||||
func (mr *MockOIDCIssuerMetaMockRecorder) IssuerUrl() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IssuerUrl", reflect.TypeOf((*MockOIDCIssuerMeta)(nil).IssuerUrl))
|
||||
}
|
||||
|
||||
// MockOIDCIdP is a mock of OIDCIdP interface.
|
||||
type MockOIDCIdP struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockOIDCIdPMockRecorder
|
||||
}
|
||||
|
||||
// MockOIDCIdPMockRecorder is the mock recorder for MockOIDCIdP.
|
||||
type MockOIDCIdPMockRecorder struct {
|
||||
mock *MockOIDCIdP
|
||||
}
|
||||
|
||||
// NewMockOIDCIdP creates a new mock instance.
|
||||
func NewMockOIDCIdP(ctrl *gomock.Controller) *MockOIDCIdP {
|
||||
mock := &MockOIDCIdP{ctrl: ctrl}
|
||||
mock.recorder = &MockOIDCIdPMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockOIDCIdP) EXPECT() *MockOIDCIdPMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// Create mocks base method.
|
||||
func (m *MockOIDCIdP) Create(ctx context.Context) (string, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Create", ctx)
|
||||
ret0, _ := ret[0].(string)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// Create indicates an expected call of Create.
|
||||
func (mr *MockOIDCIdPMockRecorder) Create(ctx any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockOIDCIdP)(nil).Create), ctx)
|
||||
}
|
||||
|
||||
// IsUpdate mocks base method.
|
||||
func (m *MockOIDCIdP) IsUpdate() (bool, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "IsUpdate")
|
||||
ret0, _ := ret[0].(bool)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// IsUpdate indicates an expected call of IsUpdate.
|
||||
func (mr *MockOIDCIdPMockRecorder) IsUpdate() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsUpdate", reflect.TypeOf((*MockOIDCIdP)(nil).IsUpdate))
|
||||
}
|
||||
|
||||
// Update mocks base method.
|
||||
func (m *MockOIDCIdP) Update(ctx context.Context) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Update", ctx)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Update indicates an expected call of Update.
|
||||
func (mr *MockOIDCIdPMockRecorder) Update(ctx any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockOIDCIdP)(nil).Update), ctx)
|
||||
}
|
||||
|
||||
// MockOIDCIdPDiscoveryContents is a mock of OIDCIdPDiscoveryContents interface.
|
||||
type MockOIDCIdPDiscoveryContents struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockOIDCIdPDiscoveryContentsMockRecorder
|
||||
}
|
||||
|
||||
// MockOIDCIdPDiscoveryContentsMockRecorder is the mock recorder for MockOIDCIdPDiscoveryContents.
|
||||
type MockOIDCIdPDiscoveryContentsMockRecorder struct {
|
||||
mock *MockOIDCIdPDiscoveryContents
|
||||
}
|
||||
|
||||
// NewMockOIDCIdPDiscoveryContents creates a new mock instance.
|
||||
func NewMockOIDCIdPDiscoveryContents(ctrl *gomock.Controller) *MockOIDCIdPDiscoveryContents {
|
||||
mock := &MockOIDCIdPDiscoveryContents{ctrl: ctrl}
|
||||
mock.recorder = &MockOIDCIdPDiscoveryContentsMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockOIDCIdPDiscoveryContents) EXPECT() *MockOIDCIdPDiscoveryContentsMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// Discovery mocks base method.
|
||||
func (m *MockOIDCIdPDiscoveryContents) Discovery() ([]byte, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Discovery")
|
||||
ret0, _ := ret[0].([]byte)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// Discovery indicates an expected call of Discovery.
|
||||
func (mr *MockOIDCIdPDiscoveryContentsMockRecorder) Discovery() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Discovery", reflect.TypeOf((*MockOIDCIdPDiscoveryContents)(nil).Discovery))
|
||||
}
|
||||
|
||||
// JWK mocks base method.
|
||||
func (m *MockOIDCIdPDiscoveryContents) JWK() ([]byte, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "JWK")
|
||||
ret0, _ := ret[0].([]byte)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// JWK indicates an expected call of JWK.
|
||||
func (mr *MockOIDCIdPDiscoveryContentsMockRecorder) JWK() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "JWK", reflect.TypeOf((*MockOIDCIdPDiscoveryContents)(nil).JWK))
|
||||
}
|
||||
|
||||
// JWKsFileName mocks base method.
|
||||
func (m *MockOIDCIdPDiscoveryContents) JWKsFileName() string {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "JWKsFileName")
|
||||
ret0, _ := ret[0].(string)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// JWKsFileName indicates an expected call of JWKsFileName.
|
||||
func (mr *MockOIDCIdPDiscoveryContentsMockRecorder) JWKsFileName() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "JWKsFileName", reflect.TypeOf((*MockOIDCIdPDiscoveryContents)(nil).JWKsFileName))
|
||||
}
|
||||
|
||||
// MockOIDCIdPDiscovery is a mock of OIDCIdPDiscovery interface.
|
||||
type MockOIDCIdPDiscovery struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockOIDCIdPDiscoveryMockRecorder
|
||||
}
|
||||
|
||||
// MockOIDCIdPDiscoveryMockRecorder is the mock recorder for MockOIDCIdPDiscovery.
|
||||
type MockOIDCIdPDiscoveryMockRecorder struct {
|
||||
mock *MockOIDCIdPDiscovery
|
||||
}
|
||||
|
||||
// NewMockOIDCIdPDiscovery creates a new mock instance.
|
||||
func NewMockOIDCIdPDiscovery(ctrl *gomock.Controller) *MockOIDCIdPDiscovery {
|
||||
mock := &MockOIDCIdPDiscovery{ctrl: ctrl}
|
||||
mock.recorder = &MockOIDCIdPDiscoveryMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockOIDCIdPDiscovery) EXPECT() *MockOIDCIdPDiscoveryMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// CreateStorage mocks base method.
|
||||
func (m *MockOIDCIdPDiscovery) CreateStorage(ctx context.Context) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "CreateStorage", ctx)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// CreateStorage indicates an expected call of CreateStorage.
|
||||
func (mr *MockOIDCIdPDiscoveryMockRecorder) CreateStorage(ctx any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateStorage", reflect.TypeOf((*MockOIDCIdPDiscovery)(nil).CreateStorage), ctx)
|
||||
}
|
||||
|
||||
// Upload mocks base method.
|
||||
func (m *MockOIDCIdPDiscovery) Upload(ctx context.Context, o selfhosted.OIDCIdPDiscoveryContents) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Upload", ctx, o)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Upload indicates an expected call of Upload.
|
||||
func (mr *MockOIDCIdPDiscoveryMockRecorder) Upload(ctx, o any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Upload", reflect.TypeOf((*MockOIDCIdPDiscovery)(nil).Upload), ctx, o)
|
||||
}
|
||||
|
||||
// MockOIDCIdPFactory is a mock of OIDCIdPFactory interface.
|
||||
type MockOIDCIdPFactory struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockOIDCIdPFactoryMockRecorder
|
||||
}
|
||||
|
||||
// MockOIDCIdPFactoryMockRecorder is the mock recorder for MockOIDCIdPFactory.
|
||||
type MockOIDCIdPFactoryMockRecorder struct {
|
||||
mock *MockOIDCIdPFactory
|
||||
}
|
||||
|
||||
// NewMockOIDCIdPFactory creates a new mock instance.
|
||||
func NewMockOIDCIdPFactory(ctrl *gomock.Controller) *MockOIDCIdPFactory {
|
||||
mock := &MockOIDCIdPFactory{ctrl: ctrl}
|
||||
mock.recorder = &MockOIDCIdPFactoryMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockOIDCIdPFactory) EXPECT() *MockOIDCIdPFactoryMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// IdP mocks base method.
|
||||
func (m *MockOIDCIdPFactory) IdP(i selfhosted.OIDCIssuerMeta) (selfhosted.OIDCIdP, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "IdP", i)
|
||||
ret0, _ := ret[0].(selfhosted.OIDCIdP)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// IdP indicates an expected call of IdP.
|
||||
func (mr *MockOIDCIdPFactoryMockRecorder) IdP(i any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IdP", reflect.TypeOf((*MockOIDCIdPFactory)(nil).IdP), i)
|
||||
}
|
||||
|
||||
// IdPDiscovery mocks base method.
|
||||
func (m *MockOIDCIdPFactory) IdPDiscovery() selfhosted.OIDCIdPDiscovery {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "IdPDiscovery")
|
||||
ret0, _ := ret[0].(selfhosted.OIDCIdPDiscovery)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// IdPDiscovery indicates an expected call of IdPDiscovery.
|
||||
func (mr *MockOIDCIdPFactoryMockRecorder) IdPDiscovery() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IdPDiscovery", reflect.TypeOf((*MockOIDCIdPFactory)(nil).IdPDiscovery))
|
||||
}
|
||||
|
||||
// IdPDiscoveryContents mocks base method.
|
||||
func (m *MockOIDCIdPFactory) IdPDiscoveryContents(i selfhosted.OIDCIssuerMeta) selfhosted.OIDCIdPDiscoveryContents {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "IdPDiscoveryContents", i)
|
||||
ret0, _ := ret[0].(selfhosted.OIDCIdPDiscoveryContents)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// IdPDiscoveryContents indicates an expected call of IdPDiscoveryContents.
|
||||
func (mr *MockOIDCIdPFactoryMockRecorder) IdPDiscoveryContents(i any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IdPDiscoveryContents", reflect.TypeOf((*MockOIDCIdPFactory)(nil).IdPDiscoveryContents), i)
|
||||
}
|
||||
|
||||
// IssuerMeta mocks base method.
|
||||
func (m *MockOIDCIdPFactory) IssuerMeta() selfhosted.OIDCIssuerMeta {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "IssuerMeta")
|
||||
ret0, _ := ret[0].(selfhosted.OIDCIssuerMeta)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// IssuerMeta indicates an expected call of IssuerMeta.
|
||||
func (mr *MockOIDCIdPFactoryMockRecorder) IssuerMeta() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IssuerMeta", reflect.TypeOf((*MockOIDCIdPFactory)(nil).IssuerMeta))
|
||||
}
|
||||
@@ -23,7 +23,7 @@ func NewS3IdPDiscovery(awsConfig *client.AwsConfig, bucketName string) *S3IdPDis
|
||||
|
||||
// CreateStorage creates an S3 bucket
|
||||
func (s *S3IdPDiscovery) CreateStorage(ctx context.Context) error {
|
||||
err := s.s3Client.CreateBucket(ctx)
|
||||
err := s.s3Client.CreateBucketPublic(ctx)
|
||||
if err != nil {
|
||||
return fmt.Errorf("unable to create bucket, %w", err)
|
||||
}
|
||||
@@ -37,7 +37,7 @@ func (s *S3IdPDiscovery) Upload(ctx context.Context, o selfhosted.OIDCIdPDiscove
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
err = s.s3Client.PutObject(ctx,
|
||||
err = s.s3Client.PutObjectPublic(ctx,
|
||||
CONFIGURATION_PATH,
|
||||
discovery,
|
||||
)
|
||||
@@ -50,7 +50,7 @@ func (s *S3IdPDiscovery) Upload(ctx context.Context, o selfhosted.OIDCIdPDiscove
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
err = s.s3Client.PutObject(ctx,
|
||||
err = s.s3Client.PutObjectPublic(ctx,
|
||||
o.JWKsFileName(),
|
||||
jwk,
|
||||
)
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
/*
|
||||
Copyright 2024.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package e2e
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
. "github.com/onsi/ginkgo/v2"
|
||||
. "github.com/onsi/gomega"
|
||||
)
|
||||
|
||||
// Run e2e tests using the Ginkgo runner.
|
||||
func TestE2E(t *testing.T) {
|
||||
RegisterFailHandler(Fail)
|
||||
fmt.Fprintf(GinkgoWriter, "Starting irsa-manager suite\n")
|
||||
RunSpecs(t, "e2e suite")
|
||||
}
|
||||
@@ -1,121 +0,0 @@
|
||||
/*
|
||||
Copyright 2024.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package e2e
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os/exec"
|
||||
"time"
|
||||
|
||||
. "github.com/onsi/ginkgo/v2"
|
||||
. "github.com/onsi/gomega"
|
||||
|
||||
"github.com/kkb0318/irsa-manager/test/utils"
|
||||
)
|
||||
|
||||
const namespace = "irsa-manager-system"
|
||||
|
||||
var _ = Describe("controller", Ordered, func() {
|
||||
BeforeAll(func() {
|
||||
By("installing prometheus operator")
|
||||
Expect(utils.InstallPrometheusOperator()).To(Succeed())
|
||||
|
||||
By("installing the cert-manager")
|
||||
Expect(utils.InstallCertManager()).To(Succeed())
|
||||
|
||||
By("creating manager namespace")
|
||||
cmd := exec.Command("kubectl", "create", "ns", namespace)
|
||||
_, _ = utils.Run(cmd)
|
||||
})
|
||||
|
||||
AfterAll(func() {
|
||||
By("uninstalling the Prometheus manager bundle")
|
||||
utils.UninstallPrometheusOperator()
|
||||
|
||||
By("uninstalling the cert-manager bundle")
|
||||
utils.UninstallCertManager()
|
||||
|
||||
By("removing manager namespace")
|
||||
cmd := exec.Command("kubectl", "delete", "ns", namespace)
|
||||
_, _ = utils.Run(cmd)
|
||||
})
|
||||
|
||||
Context("Operator", func() {
|
||||
It("should run successfully", func() {
|
||||
var controllerPodName string
|
||||
var err error
|
||||
|
||||
// projectimage stores the name of the image used in the example
|
||||
var projectimage = "example.com/irsa-manager:v0.0.1"
|
||||
|
||||
By("building the manager(Operator) image")
|
||||
cmd := exec.Command("make", "docker-build", fmt.Sprintf("IMG=%s", projectimage))
|
||||
_, err = utils.Run(cmd)
|
||||
ExpectWithOffset(1, err).NotTo(HaveOccurred())
|
||||
|
||||
By("loading the the manager(Operator) image on Kind")
|
||||
err = utils.LoadImageToKindClusterWithName(projectimage)
|
||||
ExpectWithOffset(1, err).NotTo(HaveOccurred())
|
||||
|
||||
By("installing CRDs")
|
||||
cmd = exec.Command("make", "install")
|
||||
_, err = utils.Run(cmd)
|
||||
|
||||
By("deploying the controller-manager")
|
||||
cmd = exec.Command("make", "deploy", fmt.Sprintf("IMG=%s", projectimage))
|
||||
_, err = utils.Run(cmd)
|
||||
ExpectWithOffset(1, err).NotTo(HaveOccurred())
|
||||
|
||||
By("validating that the controller-manager pod is running as expected")
|
||||
verifyControllerUp := func() error {
|
||||
// Get pod name
|
||||
|
||||
cmd = exec.Command("kubectl", "get",
|
||||
"pods", "-l", "control-plane=controller-manager",
|
||||
"-o", "go-template={{ range .items }}"+
|
||||
"{{ if not .metadata.deletionTimestamp }}"+
|
||||
"{{ .metadata.name }}"+
|
||||
"{{ \"\\n\" }}{{ end }}{{ end }}",
|
||||
"-n", namespace,
|
||||
)
|
||||
|
||||
podOutput, err := utils.Run(cmd)
|
||||
ExpectWithOffset(2, err).NotTo(HaveOccurred())
|
||||
podNames := utils.GetNonEmptyLines(string(podOutput))
|
||||
if len(podNames) != 1 {
|
||||
return fmt.Errorf("expect 1 controller pods running, but got %d", len(podNames))
|
||||
}
|
||||
controllerPodName = podNames[0]
|
||||
ExpectWithOffset(2, controllerPodName).Should(ContainSubstring("controller-manager"))
|
||||
|
||||
// Validate pod status
|
||||
cmd = exec.Command("kubectl", "get",
|
||||
"pods", controllerPodName, "-o", "jsonpath={.status.phase}",
|
||||
"-n", namespace,
|
||||
)
|
||||
status, err := utils.Run(cmd)
|
||||
ExpectWithOffset(2, err).NotTo(HaveOccurred())
|
||||
if string(status) != "Running" {
|
||||
return fmt.Errorf("controller pod in %s status", status)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
EventuallyWithOffset(1, verifyControllerUp, time.Minute, time.Second).Should(Succeed())
|
||||
|
||||
})
|
||||
})
|
||||
})
|
||||
@@ -1,140 +0,0 @@
|
||||
/*
|
||||
Copyright 2024.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package utils
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strings"
|
||||
|
||||
. "github.com/onsi/ginkgo/v2" //nolint:golint,revive
|
||||
)
|
||||
|
||||
const (
|
||||
prometheusOperatorVersion = "v0.68.0"
|
||||
prometheusOperatorURL = "https://github.com/prometheus-operator/prometheus-operator/" +
|
||||
"releases/download/%s/bundle.yaml"
|
||||
|
||||
certmanagerVersion = "v1.5.3"
|
||||
certmanagerURLTmpl = "https://github.com/jetstack/cert-manager/releases/download/%s/cert-manager.yaml"
|
||||
)
|
||||
|
||||
func warnError(err error) {
|
||||
fmt.Fprintf(GinkgoWriter, "warning: %v\n", err)
|
||||
}
|
||||
|
||||
// InstallPrometheusOperator installs the prometheus Operator to be used to export the enabled metrics.
|
||||
func InstallPrometheusOperator() error {
|
||||
url := fmt.Sprintf(prometheusOperatorURL, prometheusOperatorVersion)
|
||||
cmd := exec.Command("kubectl", "create", "-f", url)
|
||||
_, err := Run(cmd)
|
||||
return err
|
||||
}
|
||||
|
||||
// Run executes the provided command within this context
|
||||
func Run(cmd *exec.Cmd) ([]byte, error) {
|
||||
dir, _ := GetProjectDir()
|
||||
cmd.Dir = dir
|
||||
|
||||
if err := os.Chdir(cmd.Dir); err != nil {
|
||||
fmt.Fprintf(GinkgoWriter, "chdir dir: %s\n", err)
|
||||
}
|
||||
|
||||
cmd.Env = append(os.Environ(), "GO111MODULE=on")
|
||||
command := strings.Join(cmd.Args, " ")
|
||||
fmt.Fprintf(GinkgoWriter, "running: %s\n", command)
|
||||
output, err := cmd.CombinedOutput()
|
||||
if err != nil {
|
||||
return output, fmt.Errorf("%s failed with error: (%v) %s", command, err, string(output))
|
||||
}
|
||||
|
||||
return output, nil
|
||||
}
|
||||
|
||||
// UninstallPrometheusOperator uninstalls the prometheus
|
||||
func UninstallPrometheusOperator() {
|
||||
url := fmt.Sprintf(prometheusOperatorURL, prometheusOperatorVersion)
|
||||
cmd := exec.Command("kubectl", "delete", "-f", url)
|
||||
if _, err := Run(cmd); err != nil {
|
||||
warnError(err)
|
||||
}
|
||||
}
|
||||
|
||||
// UninstallCertManager uninstalls the cert manager
|
||||
func UninstallCertManager() {
|
||||
url := fmt.Sprintf(certmanagerURLTmpl, certmanagerVersion)
|
||||
cmd := exec.Command("kubectl", "delete", "-f", url)
|
||||
if _, err := Run(cmd); err != nil {
|
||||
warnError(err)
|
||||
}
|
||||
}
|
||||
|
||||
// InstallCertManager installs the cert manager bundle.
|
||||
func InstallCertManager() error {
|
||||
url := fmt.Sprintf(certmanagerURLTmpl, certmanagerVersion)
|
||||
cmd := exec.Command("kubectl", "apply", "-f", url)
|
||||
if _, err := Run(cmd); err != nil {
|
||||
return err
|
||||
}
|
||||
// Wait for cert-manager-webhook to be ready, which can take time if cert-manager
|
||||
// was re-installed after uninstalling on a cluster.
|
||||
cmd = exec.Command("kubectl", "wait", "deployment.apps/cert-manager-webhook",
|
||||
"--for", "condition=Available",
|
||||
"--namespace", "cert-manager",
|
||||
"--timeout", "5m",
|
||||
)
|
||||
|
||||
_, err := Run(cmd)
|
||||
return err
|
||||
}
|
||||
|
||||
// LoadImageToKindCluster loads a local docker image to the kind cluster
|
||||
func LoadImageToKindClusterWithName(name string) error {
|
||||
cluster := "kind"
|
||||
if v, ok := os.LookupEnv("KIND_CLUSTER"); ok {
|
||||
cluster = v
|
||||
}
|
||||
kindOptions := []string{"load", "docker-image", name, "--name", cluster}
|
||||
cmd := exec.Command("kind", kindOptions...)
|
||||
_, err := Run(cmd)
|
||||
return err
|
||||
}
|
||||
|
||||
// GetNonEmptyLines converts given command output string into individual objects
|
||||
// according to line breakers, and ignores the empty elements in it.
|
||||
func GetNonEmptyLines(output string) []string {
|
||||
var res []string
|
||||
elements := strings.Split(output, "\n")
|
||||
for _, element := range elements {
|
||||
if element != "" {
|
||||
res = append(res, element)
|
||||
}
|
||||
}
|
||||
|
||||
return res
|
||||
}
|
||||
|
||||
// GetProjectDir will return the directory where the project is
|
||||
func GetProjectDir() (string, error) {
|
||||
wd, err := os.Getwd()
|
||||
if err != nil {
|
||||
return wd, err
|
||||
}
|
||||
wd = strings.Replace(wd, "/test/e2e", "", -1)
|
||||
return wd, nil
|
||||
}
|
||||
Reference in New Issue
Block a user