Skip to content
This repository has been archived by the owner on Sep 15, 2022. It is now read-only.

Commit

Permalink
Fix after review
Browse files Browse the repository at this point in the history
  • Loading branch information
polskikiel committed Aug 26, 2019
1 parent 0a441b7 commit 38ba5c9
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 25 deletions.
10 changes: 5 additions & 5 deletions internal/controller/addons_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
"github.com/kubernetes-incubator/service-catalog/pkg/apis/servicecatalog/v1beta1"
"github.com/kyma-project/helm-broker/internal"
"github.com/kyma-project/helm-broker/internal/controller/automock"
"github.com/kyma-project/helm-broker/internal/controller/repository"
"github.com/kyma-project/helm-broker/internal/platform/logger/spy"
"github.com/kyma-project/helm-broker/internal/storage"
"github.com/kyma-project/helm-broker/pkg/apis"
Expand Down Expand Up @@ -416,7 +417,7 @@ type testSuite struct {
brokerFacade *automock.BrokerFacade
docsProvider *automock.DocsProvider
brokerSyncer *automock.BrokerSyncer
templateService *automock.TemplateService
templateService *repository.Template
addonStorage storage.Addon
chartStorage storage.Chart
}
Expand All @@ -431,15 +432,16 @@ func getTestSuite(t *testing.T, objects ...runtime.Object) *testSuite {
sFact, err := storage.NewFactory(storage.NewConfigListAllMemory())
require.NoError(t, err)

cli := fake.NewFakeClientWithScheme(sch, objects...)
ts := &testSuite{
t: t,
mgr: getFakeManager(t, fake.NewFakeClientWithScheme(sch, objects...), sch),
mgr: getFakeManager(t, cli, sch),
brokerFacade: &automock.BrokerFacade{},
addonGetterFactory: &automock.AddonGetterFactory{},
addonGetter: &automock.AddonGetter{},
brokerSyncer: &automock.BrokerSyncer{},
docsProvider: &automock.DocsProvider{},
templateService: &automock.TemplateService{},
templateService: repository.NewTemplate(cli),

addonStorage: sFact.Addon(),
chartStorage: sFact.Chart(),
Expand All @@ -448,7 +450,6 @@ func getTestSuite(t *testing.T, objects ...runtime.Object) *testSuite {
ts.brokerFacade.On("SetNamespace", fixAddonsConfiguration().Namespace).Return(nil).Once()
ts.brokerSyncer.On("SetNamespace", fixAddonsConfiguration().Namespace).Return(nil).Once()
ts.docsProvider.On("SetNamespace", fixAddonsConfiguration().Namespace).Return(nil).Once()
ts.templateService.On("SetNamespace", fixAddonsConfiguration().Namespace).Return(nil).Once()

return ts
}
Expand All @@ -465,7 +466,6 @@ func (ts *testSuite) assertExpectations() {
ts.docsProvider.AssertExpectations(ts.t)
ts.brokerSyncer.AssertExpectations(ts.t)
ts.addonGetterFactory.AssertExpectations(ts.t)
ts.templateService.AssertExpectations(ts.t)
}

func (fakeManager) Add(manager.Runnable) error {
Expand Down
9 changes: 5 additions & 4 deletions internal/controller/cluster_addons_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (

"github.com/kubernetes-incubator/service-catalog/pkg/apis/servicecatalog/v1beta1"
"github.com/kyma-project/helm-broker/internal/controller/automock"
"github.com/kyma-project/helm-broker/internal/controller/repository"
"github.com/kyma-project/helm-broker/internal/storage"
"github.com/kyma-project/helm-broker/pkg/apis"
"github.com/kyma-project/helm-broker/pkg/apis/addons/v1alpha1"
Expand Down Expand Up @@ -255,7 +256,7 @@ type clusterTestSuite struct {
brokerFacade *automock.BrokerFacade
docsProvider *automock.DocsProvider
brokerSyncer *automock.BrokerSyncer
templateService *automock.TemplateService
templateService *repository.Template
addonStorage storage.Addon
chartStorage storage.Chart
}
Expand All @@ -270,15 +271,16 @@ func getClusterTestSuite(t *testing.T, objects ...runtime.Object) *clusterTestSu
sFact, err := storage.NewFactory(storage.NewConfigListAllMemory())
require.NoError(t, err)

cli := fake.NewFakeClientWithScheme(sch, objects...)
return &clusterTestSuite{
t: t,
mgr: getFakeManager(t, fake.NewFakeClientWithScheme(sch, objects...), sch),
mgr: getFakeManager(t, cli, sch),
brokerFacade: &automock.BrokerFacade{},
addonGetterFactory: &automock.AddonGetterFactory{},
addonGetter: &automock.AddonGetter{},
brokerSyncer: &automock.BrokerSyncer{},
docsProvider: &automock.DocsProvider{},
templateService: &automock.TemplateService{},
templateService: repository.NewTemplate(cli),

addonStorage: sFact.Addon(),
chartStorage: sFact.Chart(),
Expand All @@ -291,7 +293,6 @@ func (ts *clusterTestSuite) assertExpectations() {
ts.addonGetter.AssertExpectations(ts.t)
ts.brokerSyncer.AssertExpectations(ts.t)
ts.addonGetterFactory.AssertExpectations(ts.t)
ts.templateService.AssertExpectations(ts.t)
}

func fixClusterAddonsConfiguration() *v1alpha1.ClusterAddonsConfiguration {
Expand Down
17 changes: 6 additions & 11 deletions internal/controller/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -250,17 +250,12 @@ func (c *common) loadRepositories(repos []v1alpha1.SpecRepository) *repository.C
c.log.Infof("- create addons for %q repository", specRepository.URL)
repo := repository.NewAddonsRepository(specRepository.URL)

addonsURL := specRepository.URL
if specRepository.SecretRef != nil {
c.log.Infof("- templating URL using secret `%s/%s`", specRepository.SecretRef.Name, specRepository.SecretRef.Namespace)
templateURL, err := c.templateService.TemplateURL(specRepository)
if err != nil {
repo.TemplatingError(err)
repositories.AddRepository(repo)
c.log.Errorf("while templating repository URL `%s`: %v", specRepository.URL, err)
continue
}
addonsURL = templateURL
addonsURL, err := c.templateService.TemplateURL(specRepository)
if err != nil {
repo.TemplatingError(err)
repositories.AddRepository(repo)
c.log.Errorf("while templating repository URL `%s`: %v", specRepository.URL, err)
continue
}

adds, err := c.createAddons(addonsURL)
Expand Down
11 changes: 8 additions & 3 deletions internal/controller/repository/template.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import (

"regexp"

"net/url"

"github.com/kyma-project/helm-broker/pkg/apis/addons/v1alpha1"
"github.com/pkg/errors"
v1 "k8s.io/api/core/v1"
Expand All @@ -21,6 +23,8 @@ type Template struct {
namespace string
}

var reg = regexp.MustCompile("\\{(.*?)\\}")

// NewTemplate returns a new Template service
func NewTemplate(cli client.Client) *Template {
return &Template{
Expand All @@ -39,6 +43,9 @@ func (t *Template) TemplateURL(repository v1alpha1.SpecRepository) (string, erro
if len(templateParameters) == 0 {
return repository.URL, nil
}
if repository.SecretRef == nil {
return "", fmt.Errorf("template fields `%v` provided but secretRef is empty", templateParameters)
}

fetchNS := t.namespace
if repository.SecretRef.Namespace != "" {
Expand All @@ -58,14 +65,12 @@ func (t *Template) TemplateURL(repository v1alpha1.SpecRepository) (string, erro
if !ok {
return "", fmt.Errorf("secret does not contain `%s` field", fieldName)
}
result = strings.Replace(result, val, string(tmp), -1)
result = strings.Replace(result, val, url.QueryEscape(string(tmp)), -1)
}

return strings.Replace(result, "\n", "", -1), nil
}

func (t *Template) findURLTemplates(url string) []string {
reg := regexp.MustCompile("\\{(.*?)\\}")

return reg.FindAllString(url, -1)
}
3 changes: 1 addition & 2 deletions test/integration/suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ const (
sourceHTTP = "http"
sourceGit = "git"

basicPassword = "pAssword"
basicPassword = "pAssword{"
basicUsername = "user001"
)

Expand Down Expand Up @@ -379,7 +379,6 @@ func WithSecretReference(namespace, name string) func(r *v1alpha1.SpecRepository
func WithHTTPBasicAuth(username, password string) func(r *v1alpha1.SpecRepository) {
return func(r *v1alpha1.SpecRepository) {
r.URL = strings.Replace(r.URL, "http://", fmt.Sprintf("http://%s:%s@", username, password), 1)
fmt.Println(r.URL)
}
}

Expand Down

0 comments on commit 38ba5c9

Please sign in to comment.