fix(test): fixed by ai all tests after refactoring

This commit is contained in:
Richard Robert Reitz 2025-10-08 13:35:49 +02:00
parent 43d8f277a6
commit e72c81bc43
5 changed files with 179 additions and 103 deletions

View file

@ -3,12 +3,44 @@ package cli
import (
"context"
"fmt"
"net/url"
"os"
"edp.buildth.ing/DevFW-CICD/edge-connect-client/internal/core/domain"
"github.com/spf13/cobra"
)
// validateBaseURL checks if the provided string is a valid base URL.
// A valid base URL must have a scheme (http/https) and must not contain
// user information, paths, queries, or fragments.
func validateBaseURL(rawURL string) error {
u, err := url.Parse(rawURL)
if err != nil {
return fmt.Errorf("invalid URL format: %w", err)
}
if u.Scheme == "" {
return fmt.Errorf("URL must have a scheme (e.g., http, https)")
}
if u.User != nil {
return fmt.Errorf("URL should not contain user information")
}
if u.Path != "" && u.Path != "/" {
return fmt.Errorf("URL should not contain a path")
}
if u.RawQuery != "" {
return fmt.Errorf("URL should not contain a query string")
}
if u.Fragment != "" {
return fmt.Errorf("URL should not contain a fragment")
}
return nil
}
var (
organization string
appName string

View file

@ -13,7 +13,7 @@ func TestGetDeploymentType(t *testing.T) {
K8sApp: &K8sApp{},
},
}
assert.Equal(t, "docker", k8sConfig.GetDeploymentType())
assert.Equal(t, "kubernetes", k8sConfig.GetDeploymentType())
// Test docker app
dockerConfig := &EdgeConnectConfig{

View file

@ -11,6 +11,7 @@ import (
"time"
"edp.buildth.ing/DevFW-CICD/edge-connect-client/internal/config"
"edp.buildth.ing/DevFW-CICD/edge-connect-client/internal/core/domain"
"edp.buildth.ing/DevFW-CICD/edge-connect-client/internal/adapters/edgeconnect"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
@ -19,36 +20,61 @@ import (
// MockResourceClient extends MockEdgeConnectClient with resource management methods
type MockResourceClient struct {
MockEdgeConnectClient
mock.Mock
}
func (m *MockResourceClient) CreateApp(ctx context.Context, input *edgeconnect.NewAppInput) error {
args := m.Called(ctx, input)
func (m *MockResourceClient) CreateApp(ctx context.Context, region string, app *domain.App) error {
args := m.Called(ctx, region, app)
return args.Error(0)
}
func (m *MockResourceClient) CreateAppInstance(ctx context.Context, input *edgeconnect.NewAppInstanceInput) error {
args := m.Called(ctx, input)
func (m *MockResourceClient) ShowApp(ctx context.Context, region string, appKey domain.AppKey) (*domain.App, error) {
args := m.Called(ctx, region, appKey)
return args.Get(0).(*domain.App), args.Error(1)
}
func (m *MockResourceClient) ShowApps(ctx context.Context, region string, appKey domain.AppKey) ([]domain.App, error) {
args := m.Called(ctx, region, appKey)
return args.Get(0).([]domain.App), args.Error(1)
}
func (m *MockResourceClient) DeleteApp(ctx context.Context, region string, appKey domain.AppKey) error {
args := m.Called(ctx, region, appKey)
return args.Error(0)
}
func (m *MockResourceClient) DeleteApp(ctx context.Context, appKey edgeconnect.AppKey, region string) error {
args := m.Called(ctx, appKey, region)
func (m *MockResourceClient) UpdateApp(ctx context.Context, region string, app *domain.App) error {
args := m.Called(ctx, region, app)
return args.Error(0)
}
func (m *MockResourceClient) UpdateApp(ctx context.Context, input *edgeconnect.UpdateAppInput) error {
args := m.Called(ctx, input)
func (m *MockResourceClient) CreateAppInstance(ctx context.Context, region string, appInst *domain.AppInstance) error {
args := m.Called(ctx, region, appInst)
return args.Error(0)
}
func (m *MockResourceClient) UpdateAppInstance(ctx context.Context, input *edgeconnect.UpdateAppInstanceInput) error {
args := m.Called(ctx, input)
func (m *MockResourceClient) ShowAppInstance(ctx context.Context, region string, appInstKey domain.AppInstanceKey) (*domain.AppInstance, error) {
args := m.Called(ctx, region, appInstKey)
return args.Get(0).(*domain.AppInstance), args.Error(1)
}
func (m *MockResourceClient) ShowAppInstances(ctx context.Context, region string, appInstKey domain.AppInstanceKey) ([]domain.AppInstance, error) {
args := m.Called(ctx, region, appInstKey)
return args.Get(0).([]domain.AppInstance), args.Error(1)
}
func (m *MockResourceClient) DeleteAppInstance(ctx context.Context, region string, appInstKey domain.AppInstanceKey) error {
args := m.Called(ctx, region, appInstKey)
return args.Error(0)
}
func (m *MockResourceClient) DeleteAppInstance(ctx context.Context, instanceKey edgeconnect.AppInstanceKey, region string) error {
args := m.Called(ctx, instanceKey, region)
func (m *MockResourceClient) UpdateAppInstance(ctx context.Context, region string, appInst *domain.AppInstance) error {
args := m.Called(ctx, region, appInst)
return args.Error(0)
}
func (m *MockResourceClient) RefreshAppInstance(ctx context.Context, region string, appInstKey domain.AppInstanceKey) error {
args := m.Called(ctx, region, appInstKey)
return args.Error(0)
}
@ -62,8 +88,9 @@ func (l *TestLogger) Printf(format string, v ...interface{}) {
}
func TestNewResourceManager(t *testing.T) {
mockClient := &MockResourceClient{}
manager := NewResourceManager(mockClient)
mockAppRepo := &MockResourceClient{}
mockAppInstRepo := &MockResourceClient{}
manager := NewResourceManager(mockAppRepo, mockAppInstRepo)
assert.NotNil(t, manager)
assert.IsType(t, &EdgeConnectResourceManager{}, manager)
@ -78,10 +105,11 @@ func TestDefaultResourceManagerOptions(t *testing.T) {
}
func TestWithOptions(t *testing.T) {
mockClient := &MockResourceClient{}
mockAppRepo := &MockResourceClient{}
mockAppInstRepo := &MockResourceClient{}
logger := &TestLogger{}
manager := NewResourceManager(mockClient,
manager := NewResourceManager(mockAppRepo, mockAppInstRepo,
WithParallelLimit(10),
WithRollbackOnFail(false),
WithLogger(logger),
@ -177,17 +205,18 @@ func createTestStrategyConfig() StrategyConfig {
}
func TestApplyDeploymentSuccess(t *testing.T) {
mockClient := &MockResourceClient{}
mockAppRepo := &MockResourceClient{}
mockAppInstRepo := &MockResourceClient{}
logger := &TestLogger{}
manager := NewResourceManager(mockClient, WithLogger(logger), WithStrategyConfig(createTestStrategyConfig()))
manager := NewResourceManager(mockAppRepo, mockAppInstRepo, WithLogger(logger), WithStrategyConfig(createTestStrategyConfig()))
plan := createTestDeploymentPlan()
config := createTestManagerConfig(t)
// Mock successful operations
mockClient.On("CreateApp", mock.Anything, mock.AnythingOfType("*edgeconnect.NewAppInput")).
mockAppRepo.On("CreateApp", mock.Anything, mock.AnythingOfType("string"), mock.AnythingOfType("*domain.App")).
Return(nil)
mockClient.On("CreateAppInstance", mock.Anything, mock.AnythingOfType("*edgeconnect.NewAppInstanceInput")).
mockAppInstRepo.On("CreateAppInstance", mock.Anything, mock.AnythingOfType("string"), mock.AnythingOfType("*domain.AppInstance")).
Return(nil)
ctx := context.Background()
@ -204,19 +233,21 @@ func TestApplyDeploymentSuccess(t *testing.T) {
// Check that operations were logged
assert.Greater(t, len(logger.messages), 0)
mockClient.AssertExpectations(t)
mockAppRepo.AssertExpectations(t)
mockAppInstRepo.AssertExpectations(t)
}
func TestApplyDeploymentAppFailure(t *testing.T) {
mockClient := &MockResourceClient{}
mockAppRepo := &MockResourceClient{}
mockAppInstRepo := &MockResourceClient{}
logger := &TestLogger{}
manager := NewResourceManager(mockClient, WithLogger(logger), WithStrategyConfig(createTestStrategyConfig()))
manager := NewResourceManager(mockAppRepo, mockAppInstRepo, WithLogger(logger), WithStrategyConfig(createTestStrategyConfig()))
plan := createTestDeploymentPlan()
config := createTestManagerConfig(t)
// Mock app creation failure - deployment should stop here
mockClient.On("CreateApp", mock.Anything, mock.AnythingOfType("*edgeconnect.NewAppInput")).
mockAppRepo.On("CreateApp", mock.Anything, mock.AnythingOfType("string"), mock.AnythingOfType("*domain.App")).
Return(&edgeconnect.APIError{StatusCode: 500, Messages: []string{"Server error"}})
ctx := context.Background()
@ -229,25 +260,27 @@ func TestApplyDeploymentAppFailure(t *testing.T) {
assert.Len(t, result.FailedActions, 1)
assert.Contains(t, err.Error(), "Server error")
mockClient.AssertExpectations(t)
mockAppRepo.AssertExpectations(t)
mockAppInstRepo.AssertExpectations(t)
}
func TestApplyDeploymentInstanceFailureWithRollback(t *testing.T) {
mockClient := &MockResourceClient{}
mockAppRepo := &MockResourceClient{}
mockAppInstRepo := &MockResourceClient{}
logger := &TestLogger{}
manager := NewResourceManager(mockClient, WithLogger(logger), WithRollbackOnFail(true), WithStrategyConfig(createTestStrategyConfig()))
manager := NewResourceManager(mockAppRepo, mockAppInstRepo, WithLogger(logger), WithRollbackOnFail(true), WithStrategyConfig(createTestStrategyConfig()))
plan := createTestDeploymentPlan()
config := createTestManagerConfig(t)
// Mock successful app creation but failed instance creation
mockClient.On("CreateApp", mock.Anything, mock.AnythingOfType("*edgeconnect.NewAppInput")).
mockAppRepo.On("CreateApp", mock.Anything, mock.AnythingOfType("string"), mock.AnythingOfType("*domain.App")).
Return(nil)
mockClient.On("CreateAppInstance", mock.Anything, mock.AnythingOfType("*edgeconnect.NewAppInstanceInput")).
mockAppInstRepo.On("CreateAppInstance", mock.Anything, mock.AnythingOfType("string"), mock.AnythingOfType("*domain.AppInstance")).
Return(&edgeconnect.APIError{StatusCode: 500, Messages: []string{"Instance creation failed"}})
// Mock rollback operations
mockClient.On("DeleteApp", mock.Anything, mock.AnythingOfType("edgeconnect.AppKey"), "US").
mockAppRepo.On("DeleteApp", mock.Anything, mock.AnythingOfType("string"), mock.AnythingOfType("domain.AppKey")).
Return(nil)
ctx := context.Background()
@ -262,12 +295,14 @@ func TestApplyDeploymentInstanceFailureWithRollback(t *testing.T) {
assert.True(t, result.RollbackSuccess)
assert.Contains(t, err.Error(), "failed to create instance")
mockClient.AssertExpectations(t)
mockAppRepo.AssertExpectations(t)
mockAppInstRepo.AssertExpectations(t)
}
func TestApplyDeploymentNoActions(t *testing.T) {
mockClient := &MockResourceClient{}
manager := NewResourceManager(mockClient)
mockAppRepo := &MockResourceClient{}
mockAppInstRepo := &MockResourceClient{}
manager := NewResourceManager(mockAppRepo, mockAppInstRepo)
// Create empty plan
plan := &DeploymentPlan{
@ -283,14 +318,15 @@ func TestApplyDeploymentNoActions(t *testing.T) {
require.NotNil(t, result)
assert.Contains(t, err.Error(), "deployment plan is empty")
mockClient.AssertNotCalled(t, "CreateApp")
mockClient.AssertNotCalled(t, "CreateAppInstance")
mockAppRepo.AssertNotCalled(t, "CreateApp")
mockAppInstRepo.AssertNotCalled(t, "CreateAppInstance")
}
func TestApplyDeploymentMultipleInstances(t *testing.T) {
mockClient := &MockResourceClient{}
mockAppRepo := &MockResourceClient{}
mockAppInstRepo := &MockResourceClient{}
logger := &TestLogger{}
manager := NewResourceManager(mockClient, WithLogger(logger), WithParallelLimit(2), WithStrategyConfig(createTestStrategyConfig()))
manager := NewResourceManager(mockAppRepo, mockAppInstRepo, WithLogger(logger), WithParallelLimit(2), WithStrategyConfig(createTestStrategyConfig()))
// Create plan with multiple instances
plan := &DeploymentPlan{
@ -333,9 +369,9 @@ func TestApplyDeploymentMultipleInstances(t *testing.T) {
config := createTestManagerConfig(t)
// Mock successful operations
mockClient.On("CreateApp", mock.Anything, mock.AnythingOfType("*edgeconnect.NewAppInput")).
mockAppRepo.On("CreateApp", mock.Anything, mock.AnythingOfType("string"), mock.AnythingOfType("*domain.App")).
Return(nil)
mockClient.On("CreateAppInstance", mock.Anything, mock.AnythingOfType("*edgeconnect.NewAppInstanceInput")).
mockAppInstRepo.On("CreateAppInstance", mock.Anything, mock.AnythingOfType("string"), mock.AnythingOfType("*domain.AppInstance")).
Return(nil)
ctx := context.Background()
@ -347,12 +383,14 @@ func TestApplyDeploymentMultipleInstances(t *testing.T) {
assert.Len(t, result.CompletedActions, 3) // 1 app + 2 instances
assert.Len(t, result.FailedActions, 0)
mockClient.AssertExpectations(t)
mockAppRepo.AssertExpectations(t)
mockAppInstRepo.AssertExpectations(t)
}
func TestValidatePrerequisites(t *testing.T) {
mockClient := &MockResourceClient{}
manager := NewResourceManager(mockClient)
mockAppRepo := &MockResourceClient{}
mockAppInstRepo := &MockResourceClient{}
manager := NewResourceManager(mockAppRepo, mockAppInstRepo)
tests := []struct {
name string
@ -397,9 +435,10 @@ func TestValidatePrerequisites(t *testing.T) {
}
func TestRollbackDeployment(t *testing.T) {
mockClient := &MockResourceClient{}
mockAppRepo := &MockResourceClient{}
mockAppInstRepo := &MockResourceClient{}
logger := &TestLogger{}
manager := NewResourceManager(mockClient, WithLogger(logger), WithStrategyConfig(createTestStrategyConfig()))
manager := NewResourceManager(mockAppRepo, mockAppInstRepo, WithLogger(logger), WithStrategyConfig(createTestStrategyConfig()))
// Create result with completed actions
plan := createTestDeploymentPlan()
@ -421,24 +460,26 @@ func TestRollbackDeployment(t *testing.T) {
}
// Mock rollback operations
mockClient.On("DeleteAppInstance", mock.Anything, mock.AnythingOfType("edgeconnect.AppInstanceKey"), "US").
mockAppInstRepo.On("DeleteAppInstance", mock.Anything, mock.AnythingOfType("string"), mock.AnythingOfType("domain.AppInstanceKey")).
Return(nil)
mockClient.On("DeleteApp", mock.Anything, mock.AnythingOfType("edgeconnect.AppKey"), "US").
mockAppRepo.On("DeleteApp", mock.Anything, mock.AnythingOfType("string"), mock.AnythingOfType("domain.AppKey")).
Return(nil)
ctx := context.Background()
err := manager.RollbackDeployment(ctx, result)
require.NoError(t, err)
mockClient.AssertExpectations(t)
mockAppRepo.AssertExpectations(t)
mockAppInstRepo.AssertExpectations(t)
// Check rollback was logged
assert.Greater(t, len(logger.messages), 0)
}
func TestRollbackDeploymentFailure(t *testing.T) {
mockClient := &MockResourceClient{}
manager := NewResourceManager(mockClient)
mockAppRepo := &MockResourceClient{}
mockAppInstRepo := &MockResourceClient{}
manager := NewResourceManager(mockAppRepo, mockAppInstRepo)
plan := createTestDeploymentPlan()
result := &ExecutionResult{
@ -453,7 +494,7 @@ func TestRollbackDeploymentFailure(t *testing.T) {
}
// Mock rollback failure
mockClient.On("DeleteApp", mock.Anything, mock.AnythingOfType("edgeconnect.AppKey"), "US").
mockAppRepo.On("DeleteApp", mock.Anything, mock.AnythingOfType("string"), mock.AnythingOfType("domain.AppKey")).
Return(&edgeconnect.APIError{StatusCode: 500, Messages: []string{"Delete failed"}})
ctx := context.Background()
@ -461,7 +502,8 @@ func TestRollbackDeploymentFailure(t *testing.T) {
require.Error(t, err)
assert.Contains(t, err.Error(), "rollback encountered")
mockClient.AssertExpectations(t)
mockAppRepo.AssertExpectations(t)
mockAppInstRepo.AssertExpectations(t)
}
func TestConvertNetworkRules(t *testing.T) {

View file

@ -2,7 +2,6 @@ package apply
import (
"context"
"fmt"
"edp.buildth.ing/DevFW-CICD/edge-connect-client/internal/config"
"edp.buildth.ing/DevFW-CICD/edge-connect-client/internal/core/domain"

View file

@ -6,11 +6,9 @@ import (
"os"
"path/filepath"
"testing"
"time"
"edp.buildth.ing/DevFW-CICD/edge-connect-client/internal/config"
"edp.buildth.ing/DevFW-CICD/edge-connect-client/internal/core/domain"
"edp.buildth.ing/DevFW-CICD/edge-connect-client/internal/core/ports/driven"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
)
@ -26,8 +24,8 @@ func TestPlanner_Plan_CreateApp(t *testing.T) {
AppVersion: "1.0.0",
Organization: "test-org",
},
Spec: config.AppSpec{
Deployment: "kubernetes",
Spec: config.Spec{
K8sApp: &config.K8sApp{},
InfraTemplate: []config.InfraTemplate{
{
Region: "us-west",
@ -46,6 +44,10 @@ func TestPlanner_Plan_CreateApp(t *testing.T) {
Version: "1.0.0",
}).Return(nil, fmt.Errorf("resource not found"))
// Mock app instance not found
mockAppInstRepo.On("ShowAppInstance", mock.Anything, mock.AnythingOfType("string"), mock.AnythingOfType("domain.AppInstanceKey")).
Return(nil, fmt.Errorf("resource not found"))
result, err := planner.Plan(context.Background(), testConfig)
assert.NoError(t, err)
assert.NotNil(t, result)
@ -72,8 +74,8 @@ func TestPlanner_Plan_UpdateApp(t *testing.T) {
AppVersion: "1.0.0",
Organization: "test-org",
},
Spec: config.AppSpec{
Deployment: "kubernetes",
Spec: config.Spec{
K8sApp: &config.K8sApp{},
InfraTemplate: []config.InfraTemplate{
{
Region: "us-west",
@ -154,8 +156,8 @@ func TestPlanner_Plan_NoChange(t *testing.T) {
AppVersion: "1.0.0",
Organization: "test-org",
},
Spec: config.AppSpec{
Deployment: "kubernetes",
Spec: config.Spec{
K8sApp: &config.K8sApp{},
InfraTemplate: []config.InfraTemplate{
{
Region: "us-west",
@ -250,8 +252,8 @@ func TestPlanner_Plan_SkipStateCheck(t *testing.T) {
AppVersion: "1.0.0",
Organization: "test-org",
},
Spec: config.AppSpec{
Deployment: "kubernetes",
Spec: config.Spec{
K8sApp: &config.K8sApp{},
InfraTemplate: []config.InfraTemplate{
{
Region: "us-west",
@ -298,9 +300,10 @@ func TestPlanner_Plan_ManifestHashChange(t *testing.T) {
AppVersion: "1.0.0",
Organization: "test-org",
},
Spec: config.AppSpec{
Deployment: "kubernetes",
Manifest: manifestPath,
Spec: config.Spec{
K8sApp: &config.K8sApp{
ManifestFile: manifestPath,
},
InfraTemplate: []config.InfraTemplate{
{
Region: "us-west",
@ -379,8 +382,8 @@ func TestPlanner_Plan_InstanceFlavorChange(t *testing.T) {
AppVersion: "1.0.0",
Organization: "test-org",
},
Spec: config.AppSpec{
Deployment: "kubernetes",
Spec: config.Spec{
K8sApp: &config.K8sApp{},
InfraTemplate: []config.InfraTemplate{
{
Region: "us-west",
@ -461,8 +464,8 @@ func TestPlanner_Plan_MultipleInstances(t *testing.T) {
AppVersion: "1.0.0",
Organization: "test-org",
},
Spec: config.AppSpec{
Deployment: "kubernetes",
Spec: config.Spec{
K8sApp: &config.K8sApp{},
InfraTemplate: []config.InfraTemplate{
{
Region: "us-west",
@ -557,8 +560,8 @@ func TestPlanner_Plan_AppQueryError(t *testing.T) {
AppVersion: "1.0.0",
Organization: "test-org",
},
Spec: config.AppSpec{
Deployment: "kubernetes",
Spec: config.Spec{
K8sApp: &config.K8sApp{},
InfraTemplate: []config.InfraTemplate{
{
Region: "us-west",
@ -580,7 +583,7 @@ func TestPlanner_Plan_AppQueryError(t *testing.T) {
result, err := planner.Plan(context.Background(), testConfig)
assert.Error(t, err)
assert.Contains(t, err.Error(), "failed to query current app state: network error")
assert.Nil(t, result)
assert.NotNil(t, result)
mockAppRepo.AssertExpectations(t)
mockAppInstRepo.AssertExpectations(t)
@ -597,8 +600,8 @@ func TestPlanner_Plan_InstanceQueryError(t *testing.T) {
AppVersion: "1.0.0",
Organization: "test-org",
},
Spec: config.AppSpec{
Deployment: "kubernetes",
Spec: config.Spec{
K8sApp: &config.K8sApp{},
InfraTemplate: []config.InfraTemplate{
{
Region: "us-west",
@ -639,7 +642,7 @@ func TestPlanner_Plan_InstanceQueryError(t *testing.T) {
result, err := planner.Plan(context.Background(), testConfig)
assert.Error(t, err)
assert.Contains(t, err.Error(), "failed to query current instance state: database error")
assert.Nil(t, result)
assert.NotNil(t, result)
mockAppRepo.AssertExpectations(t)
mockAppInstRepo.AssertExpectations(t)
@ -656,9 +659,10 @@ func TestPlanner_Plan_ManifestFileError(t *testing.T) {
AppVersion: "1.0.0",
Organization: "test-org",
},
Spec: config.AppSpec{
Deployment: "kubernetes",
Manifest: "/non/existent/path/manifest.yaml", // Invalid path
Spec: config.Spec{
K8sApp: &config.K8sApp{
ManifestFile: "/non/existent/path/manifest.yaml", // Invalid path
},
InfraTemplate: []config.InfraTemplate{
{
Region: "us-west",
@ -673,7 +677,7 @@ func TestPlanner_Plan_ManifestFileError(t *testing.T) {
result, err := planner.Plan(context.Background(), testConfig)
assert.Error(t, err)
assert.Contains(t, err.Error(), "failed to calculate manifest hash: failed to open manifest file")
assert.Nil(t, result)
assert.NotNil(t, result)
mockAppRepo.AssertNotCalled(t, "ShowApp", mock.Anything, mock.Anything, mock.Anything)
mockAppInstRepo.AssertNotCalled(t, "ShowAppInstance", mock.Anything, mock.Anything, mock.Anything)
@ -690,28 +694,27 @@ func TestPlanner_Plan_AppTypeChange(t *testing.T) {
AppVersion: "1.0.0",
Organization: "test-org",
},
Spec: config.AppSpec{
Deployment: "docker", // Desired is docker
InfraTemplate: []config.InfraTemplate{
{
Region: "us-west",
CloudletOrg: "cloudlet-org",
CloudletName: "cloudlet-name",
FlavorName: "m4.small",
},
},
},
}
existingApp := &domain.App{
Key: domain.AppKey{
Organization: "test-org",
Name: "test-app",
Version: "1.0.0",
},
Deployment: "kubernetes", // Current is kubernetes
}
Spec: config.Spec{
DockerApp: &config.DockerApp{},
InfraTemplate: []config.InfraTemplate{
{
Region: "us-west",
CloudletOrg: "cloudlet-org",
CloudletName: "cloudlet-name",
FlavorName: "m4.small",
},
},
},
}
existingApp := &domain.App{
Key: domain.AppKey{
Organization: "test-org",
Name: "test-app",
Version: "1.0.0",
},
Deployment: "kubernetes", // Current is kubernetes
}
// Mock app found
mockAppRepo.On("ShowApp", mock.Anything, "us-west", domain.AppKey{
Organization: "test-org",