func TestInstantiateGenerateBuildError(t *testing.T) { fakeSecrets := []runtime.Object{} for _, s := range mocks.MockBuilderSecrets() { fakeSecrets = append(fakeSecrets, s) } generator := BuildGenerator{ Secrets: testclient.NewSimpleFake(fakeSecrets...), ServiceAccounts: mocks.MockBuilderServiceAccount(mocks.MockBuilderSecrets()), Client: Client{ GetBuildConfigFunc: func(ctx kapi.Context, name string) (*buildapi.BuildConfig, error) { return nil, fmt.Errorf("get-error") }, }} _, err := generator.Instantiate(kapi.NewDefaultContext(), &buildapi.BuildRequest{}) if err == nil || !strings.Contains(err.Error(), "get-error") { t.Errorf("Expected get-error, got different %v", err) } }
func TestCreateInstantiate(t *testing.T) { imageStream := mocks.MockImageStream("testImageStream", "registry.com/namespace/imagename", map[string]string{"test": "newImageID123"}) image := mocks.MockImage("testImage@id", "registry.com/namespace/imagename@id") fakeSecrets := []runtime.Object{} for _, s := range mocks.MockBuilderSecrets() { fakeSecrets = append(fakeSecrets, s) } rest := InstantiateREST{&generator.BuildGenerator{ Secrets: testclient.NewSimpleFake(fakeSecrets...), ServiceAccounts: mocks.MockBuilderServiceAccount(mocks.MockBuilderSecrets()), Client: generator.Client{ GetBuildConfigFunc: func(ctx kapi.Context, name string) (*buildapi.BuildConfig, error) { return mocks.MockBuildConfig(mocks.MockSource(), mocks.MockSourceStrategyForImageRepository(), mocks.MockOutput()), nil }, UpdateBuildConfigFunc: func(ctx kapi.Context, buildConfig *buildapi.BuildConfig) error { return nil }, CreateBuildFunc: func(ctx kapi.Context, build *buildapi.Build) error { return nil }, GetBuildFunc: func(ctx kapi.Context, name string) (*buildapi.Build, error) { return &buildapi.Build{}, nil }, GetImageStreamFunc: func(ctx kapi.Context, name string) (*imageapi.ImageStream, error) { return imageStream, nil }, GetImageStreamTagFunc: func(ctx kapi.Context, name string) (*imageapi.ImageStreamTag, error) { return &imageapi.ImageStreamTag{Image: *image}, nil }, GetImageStreamImageFunc: func(ctx kapi.Context, name string) (*imageapi.ImageStreamImage, error) { return &imageapi.ImageStreamImage{Image: *image}, nil }, }}} _, err := rest.Create(kapi.NewDefaultContext(), &buildapi.BuildRequest{ObjectMeta: kapi.ObjectMeta{Name: "name"}}) if err != nil { t.Errorf("Unexpected error %v", err) } }
func TestGenerateBuildWithImageTagForCustomStrategyImageRepository(t *testing.T) { source := mocks.MockSource() strategy := mockCustomStrategyForImageRepository() output := mocks.MockOutput() bc := &buildapi.BuildConfig{ ObjectMeta: kapi.ObjectMeta{ Name: "test-build-config", }, Spec: buildapi.BuildConfigSpec{ BuildSpec: buildapi.BuildSpec{ Source: source, Revision: &buildapi.SourceRevision{ Git: &buildapi.GitSourceRevision{ Commit: "1234", }, }, Strategy: strategy, Output: output, }, }, } fakeSecrets := []runtime.Object{} for _, s := range mocks.MockBuilderSecrets() { fakeSecrets = append(fakeSecrets, s) } generator := BuildGenerator{ Secrets: testclient.NewSimpleFake(fakeSecrets...), ServiceAccounts: mocks.MockBuilderServiceAccount(mocks.MockBuilderSecrets()), Client: Client{ GetImageStreamFunc: func(ctx kapi.Context, name string) (*imageapi.ImageStream, error) { return &imageapi.ImageStream{ ObjectMeta: kapi.ObjectMeta{Name: imageRepoName}, Status: imageapi.ImageStreamStatus{ DockerImageRepository: originalImage, Tags: map[string]imageapi.TagEventList{ tagName: { Items: []imageapi.TagEvent{ { DockerImageReference: fmt.Sprintf("%s:%s", originalImage, newTag), Image: newTag, }, }, }, }, }, }, nil }, GetImageStreamTagFunc: func(ctx kapi.Context, name string) (*imageapi.ImageStreamTag, error) { return &imageapi.ImageStreamTag{ Image: imageapi.Image{ ObjectMeta: kapi.ObjectMeta{Name: imageRepoName + ":" + newTag}, DockerImageReference: originalImage + ":" + newTag, }, }, nil }, GetImageStreamImageFunc: func(ctx kapi.Context, name string) (*imageapi.ImageStreamImage, error) { return &imageapi.ImageStreamImage{ Image: imageapi.Image{ ObjectMeta: kapi.ObjectMeta{Name: imageRepoName + ":@id"}, DockerImageReference: originalImage + ":" + newTag, }, }, nil }, UpdateBuildConfigFunc: func(ctx kapi.Context, buildConfig *buildapi.BuildConfig) error { return nil }, }} build, err := generator.generateBuildFromConfig(kapi.NewContext(), bc, nil, nil) if err != nil { t.Fatalf("Unexpected error %v", err) } if build.Spec.Strategy.CustomStrategy.From.Name != newImage { t.Errorf("Custom base image value %s does not match expected value %s", build.Spec.Strategy.CustomStrategy.From.Name, newImage) } }
func mockBuildGenerator() *BuildGenerator { fakeSecrets := []runtime.Object{} for _, s := range mocks.MockBuilderSecrets() { fakeSecrets = append(fakeSecrets, s) } return &BuildGenerator{ Secrets: testclient.NewSimpleFake(fakeSecrets...), ServiceAccounts: mocks.MockBuilderServiceAccount(mocks.MockBuilderSecrets()), Client: Client{ GetBuildConfigFunc: func(ctx kapi.Context, name string) (*buildapi.BuildConfig, error) { return mocks.MockBuildConfig(mocks.MockSource(), mocks.MockSourceStrategyForImageRepository(), mocks.MockOutput()), nil }, UpdateBuildConfigFunc: func(ctx kapi.Context, buildConfig *buildapi.BuildConfig) error { return nil }, CreateBuildFunc: func(ctx kapi.Context, build *buildapi.Build) error { return nil }, GetBuildFunc: func(ctx kapi.Context, name string) (*buildapi.Build, error) { return &buildapi.Build{}, nil }, GetImageStreamFunc: func(ctx kapi.Context, name string) (*imageapi.ImageStream, error) { if name != imageRepoName { return &imageapi.ImageStream{}, nil } return &imageapi.ImageStream{ ObjectMeta: kapi.ObjectMeta{ Name: imageRepoName, Namespace: imageRepoNamespace, }, Status: imageapi.ImageStreamStatus{ DockerImageRepository: "repo/namespace/image", Tags: map[string]imageapi.TagEventList{ tagName: { Items: []imageapi.TagEvent{ {DockerImageReference: dockerReference}, }, }, imageapi.DefaultImageTag: { Items: []imageapi.TagEvent{ {DockerImageReference: latestDockerReference}, }, }, }, }, }, nil }, GetImageStreamTagFunc: func(ctx kapi.Context, name string) (*imageapi.ImageStreamTag, error) { return &imageapi.ImageStreamTag{ Image: imageapi.Image{ ObjectMeta: kapi.ObjectMeta{Name: imageRepoName + ":" + newTag}, DockerImageReference: latestDockerReference, }, }, nil }, GetImageStreamImageFunc: func(ctx kapi.Context, name string) (*imageapi.ImageStreamImage, error) { return &imageapi.ImageStreamImage{ Image: imageapi.Image{ ObjectMeta: kapi.ObjectMeta{Name: imageRepoName + ":@id"}, DockerImageReference: latestDockerReference, }, }, nil }, }} }