github.com/kubeshop/testkube@v1.17.23/pkg/cloud/data/config/config_test.go (about)

     1  package config
     2  
     3  import (
     4  	"context"
     5  	"encoding/json"
     6  	"testing"
     7  
     8  	"github.com/golang/mock/gomock"
     9  	"github.com/stretchr/testify/assert"
    10  
    11  	"github.com/kubeshop/testkube/pkg/api/v1/testkube"
    12  	"github.com/kubeshop/testkube/pkg/cloud/data/executor"
    13  )
    14  
    15  var ctx = context.Background()
    16  
    17  func TestCloudRepository_GetUniqueClusterId(t *testing.T) {
    18  	t.Parallel()
    19  
    20  	ctrl := gomock.NewController(t)
    21  	defer ctrl.Finish()
    22  
    23  	mockExecutor := executor.NewMockExecutor(ctrl)
    24  
    25  	// Setup expectations for the mockedExecutor.Execute method
    26  	expectedReq := GetUniqueClusterIdRequest{}
    27  	expectedResponse, _ := json.Marshal(&GetUniqueClusterIdResponse{ClusterID: "test-cluster"})
    28  	mockExecutor.EXPECT().Execute(gomock.Any(), CmdConfigGetUniqueClusterId, expectedReq).Return(expectedResponse, nil)
    29  
    30  	r := &CloudRepository{executor: mockExecutor}
    31  
    32  	result, err := r.GetUniqueClusterId(ctx)
    33  	assert.NoError(t, err)
    34  	assert.Equal(t, result, "test-cluster")
    35  }
    36  
    37  func TestCloudRepository_GetTelemetryEnabled(t *testing.T) {
    38  	t.Parallel()
    39  
    40  	ctrl := gomock.NewController(t)
    41  	defer ctrl.Finish()
    42  
    43  	mockExecutor := executor.NewMockExecutor(ctrl)
    44  
    45  	// Setup expectations for the mockedExecutor.Execute method
    46  	expectedReq := GetTelemetryEnabledRequest{}
    47  	expectedResponse, _ := json.Marshal(&GetTelemetryEnabledResponse{Enabled: true})
    48  	mockExecutor.EXPECT().Execute(gomock.Any(), CmdConfigGetTelemetryEnabled, expectedReq).Return(expectedResponse, nil)
    49  
    50  	r := &CloudRepository{executor: mockExecutor}
    51  
    52  	result, err := r.GetTelemetryEnabled(ctx)
    53  	assert.NoError(t, err)
    54  	assert.Equal(t, result, true)
    55  }
    56  
    57  func TestCloudRepository_Get(t *testing.T) {
    58  	t.Parallel()
    59  
    60  	mockCtrl := gomock.NewController(t)
    61  	defer mockCtrl.Finish()
    62  
    63  	mockExecutor := executor.NewMockExecutor(mockCtrl)
    64  	repo := &CloudRepository{executor: mockExecutor}
    65  
    66  	expectedConfig := testkube.Config{Id: "test-id", ClusterId: "test-cluster", EnableTelemetry: true}
    67  	expectedResponse := GetResponse{Config: expectedConfig}
    68  	expectedResponseBytes, _ := json.Marshal(expectedResponse)
    69  
    70  	mockExecutor.EXPECT().Execute(ctx, CmdConfigGet, GetRequest{}).Return(expectedResponseBytes, nil)
    71  
    72  	actualConfig, err := repo.Get(ctx)
    73  	if err != nil {
    74  		t.Fatalf("unexpected error: %v", err)
    75  	}
    76  
    77  	assert.Equal(t, expectedConfig, actualConfig)
    78  }
    79  
    80  func TestCloudRepository_Upsert(t *testing.T) {
    81  	t.Parallel()
    82  
    83  	mockCtrl := gomock.NewController(t)
    84  	defer mockCtrl.Finish()
    85  
    86  	mockExecutor := executor.NewMockExecutor(mockCtrl)
    87  	repo := &CloudRepository{executor: mockExecutor}
    88  
    89  	expectedConfig := testkube.Config{Id: "test-id2", ClusterId: "test-cluster2", EnableTelemetry: true}
    90  	expectedResponse := UpsertResponse{Config: expectedConfig}
    91  	expectedResponseBytes, _ := json.Marshal(expectedResponse)
    92  
    93  	mockExecutor.EXPECT().Execute(ctx, CmdConfigUpsert, UpsertRequest{Config: expectedConfig}).Return(expectedResponseBytes, nil)
    94  
    95  	actualConfig, err := repo.Upsert(ctx, expectedConfig)
    96  	if err != nil {
    97  		t.Fatalf("unexpected error: %v", err)
    98  	}
    99  
   100  	assert.Equal(t, expectedConfig, actualConfig)
   101  }