github.com/Axway/agent-sdk@v1.1.101/pkg/config/centralconfig_test.go (about)

     1  package config
     2  
     3  import (
     4  	"os"
     5  	"testing"
     6  	"time"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  )
    10  
    11  func TestDiscoveryAgentConfig(t *testing.T) {
    12  	cfg := NewCentralConfig(DiscoveryAgent)
    13  	centralConfig := cfg.(*CentralConfiguration)
    14  
    15  	// Setup Auth config to ignore auth validation errors for this test
    16  	authCfg := centralConfig.Auth.(*AuthConfiguration)
    17  	authCfg.URL = "test"
    18  	authCfg.Realm = "Broker"
    19  	authCfg.ClientID = "aaaa"
    20  	tmpFile, _ := os.CreateTemp(".", "test*")
    21  	authCfg.PrivateKey = "./" + tmpFile.Name()
    22  	authCfg.PublicKey = "./" + tmpFile.Name()
    23  
    24  	cfgValidator, ok := cfg.(IConfigValidator)
    25  	assert.True(t, ok)
    26  	assert.NotNil(t, cfgValidator)
    27  
    28  	err := cfgValidator.ValidateCfg()
    29  
    30  	assert.NotNil(t, err)
    31  	assert.Equal(t, "[Error Code 1401] - error with config central.organizationID, please set and/or check its value", err.Error())
    32  
    33  	centralConfig.TenantID = "1111"
    34  	err = cfgValidator.ValidateCfg()
    35  
    36  	assert.NotNil(t, err)
    37  	assert.Equal(t, "[Error Code 1401] - error with config central.url, please set and/or check its value", err.Error())
    38  
    39  	centralConfig.URL = "aaa"
    40  	err = cfgValidator.ValidateCfg()
    41  
    42  	assert.NotNil(t, err)
    43  	assert.Equal(t, "[Error Code 1401] - error with config central.url, please set and/or check its value", err.Error())
    44  
    45  	centralConfig.URL = "http://localhost:8080"
    46  	err = cfgValidator.ValidateCfg()
    47  
    48  	assert.NotNil(t, err)
    49  	assert.Equal(t, "[Error Code 1401] - error with config central.environment, please set and/or check its value", err.Error())
    50  
    51  	centralConfig.Environment = "eee"
    52  	err = cfgValidator.ValidateCfg()
    53  	assert.NotNil(t, err)
    54  	assert.Equal(t, "[Error Code 1401] - error with config central.auth.url, please set and/or check its value", err.Error())
    55  	authCfg.URL = "http://localhost.com:8080"
    56  
    57  	centralConfig.SingleURL = "malformed.singleURL.com"
    58  	err = cfgValidator.ValidateCfg()
    59  	assert.NotNil(t, err)
    60  	assert.Equal(t, "[Error Code 1401] - error with config central.singleURL, please set and/or check its value", err.Error())
    61  	centralConfig.SingleURL = "https://ingestion.platform.axway.com"
    62  
    63  	centralConfig.APIServerVersion = ""
    64  	err = cfgValidator.ValidateCfg()
    65  	assert.NotNil(t, err)
    66  	// assert.Equal(t, "[Error Code 1401] - error with config central.apiServerVersion, please set and/or check its value", err.Error())
    67  
    68  	centralConfig.APIServerVersion = "v1alpha1"
    69  
    70  	assert.Equal(t, centralConfig.URL+"/apis/management/v1alpha1/environments/eee/apiservices", cfg.GetServicesURL())
    71  
    72  	centralConfig.PollInterval = 0
    73  	err = cfgValidator.ValidateCfg()
    74  	assert.NotNil(t, err)
    75  	assert.Equal(t, "[Error Code 1401] - error with config central.pollInterval, please set and/or check its value", err.Error())
    76  	centralConfig.PollInterval = 30
    77  
    78  	centralConfig.ReportActivityFrequency = 0
    79  	err = cfgValidator.ValidateCfg()
    80  	assert.NotNil(t, err)
    81  	assert.Equal(t, "[Error Code 1401] - error with config central.reportActivityFrequency, please set and/or check its value", err.Error())
    82  	centralConfig.ReportActivityFrequency = time.Minute
    83  
    84  	// validate mp and DOSA
    85  	authCfg.ClientID = "DOSA_aaaa"
    86  	err = cfgValidator.ValidateCfg()
    87  	assert.NotNil(t, err)
    88  	assert.Equal(t, "[Error Code 1406] - using a DOSA_* service account with Marketplace Provisioning is unsupported", err.Error())
    89  
    90  	cleanupFiles(tmpFile.Name())
    91  }
    92  
    93  func TestTraceabilityAgentConfig(t *testing.T) {
    94  	cfg := NewCentralConfig(TraceabilityAgent)
    95  	centralConfig := cfg.(*CentralConfiguration)
    96  
    97  	// Setup Auth config to ignore auth validation errors for this test
    98  	authCfg := centralConfig.Auth.(*AuthConfiguration)
    99  	authCfg.URL = "test"
   100  	authCfg.Realm = "Broker"
   101  	authCfg.ClientID = "aaaa"
   102  	tmpFile, _ := os.CreateTemp(".", "test*")
   103  	authCfg.PrivateKey = "./" + tmpFile.Name()
   104  	authCfg.PublicKey = "./" + tmpFile.Name()
   105  
   106  	cfgValidator, ok := cfg.(IConfigValidator)
   107  	assert.True(t, ok)
   108  	assert.NotNil(t, cfgValidator)
   109  	err := cfgValidator.ValidateCfg()
   110  
   111  	assert.NotNil(t, err)
   112  	assert.Equal(t, "[Error Code 1401] - error with config central.organizationID, please set and/or check its value", err.Error())
   113  
   114  	centralConfig.TenantID = "1111"
   115  	err = cfgValidator.ValidateCfg()
   116  
   117  	assert.NotNil(t, err)
   118  	assert.Equal(t, "[Error Code 1401] - error with config central.url, please set and/or check its value", err.Error())
   119  
   120  	centralConfig.URL = "aaa"
   121  	err = cfgValidator.ValidateCfg()
   122  
   123  	assert.NotNil(t, err)
   124  	assert.Equal(t, "[Error Code 1401] - error with config central.url, please set and/or check its value", err.Error())
   125  
   126  	centralConfig.URL = "http://localhost.com"
   127  	err = cfgValidator.ValidateCfg()
   128  
   129  	assert.NotNil(t, err)
   130  	assert.Equal(t, "[Error Code 1401] - error with config central.deployment, please set and/or check its value", err.Error())
   131  
   132  	centralConfig.APICDeployment = "aaa"
   133  	err = cfgValidator.ValidateCfg()
   134  
   135  	assert.NotNil(t, err)
   136  	assert.Equal(t, "[Error Code 1401] - error with config central.environment, please set and/or check its value", err.Error())
   137  
   138  	centralConfig.Environment = "111111"
   139  	err = cfgValidator.ValidateCfg()
   140  	assert.NotNil(t, err)
   141  	assert.Equal(t, "[Error Code 1401] - error with config central.auth.url, please set and/or check its value", err.Error())
   142  
   143  	authCfg.URL = "http://localhost.com:8080"
   144  
   145  	centralConfig.SingleURL = "malformed.singleURL.com"
   146  	err = cfgValidator.ValidateCfg()
   147  	assert.NotNil(t, err)
   148  	assert.Equal(t, "[Error Code 1401] - error with config central.singleURL, please set and/or check its value", err.Error())
   149  	centralConfig.SingleURL = "https://ingestion.platform.axway.com"
   150  
   151  	centralConfig.ReportActivityFrequency = 0
   152  	err = cfgValidator.ValidateCfg()
   153  	assert.NotNil(t, err)
   154  	assert.Equal(t, "[Error Code 1401] - error with config central.reportActivityFrequency, please set and/or check its value", err.Error())
   155  	centralConfig.ReportActivityFrequency = time.Minute
   156  
   157  	centralConfig.APIValidationCronSchedule = ""
   158  	err = cfgValidator.ValidateCfg()
   159  	assert.NotNil(t, err)
   160  	assert.Equal(t, "[Error Code 1401] - error with config central.apiValidationCronSchedule, please set and/or check its value", err.Error())
   161  
   162  	centralConfig.APIValidationCronSchedule = "* * * * *"
   163  	err = cfgValidator.ValidateCfg()
   164  	assert.NotNil(t, err)
   165  	assert.Equal(t, "[Error Code 1401] - error with config central.apiValidationCronSchedule, please set and/or check its value", err.Error())
   166  
   167  	centralConfig.APIValidationCronSchedule = "*/59 * * * *"
   168  	err = cfgValidator.ValidateCfg()
   169  	assert.NotNil(t, err)
   170  	assert.Equal(t, "[Error Code 1401] - error with config central.apiValidationCronSchedule, please set and/or check its value", err.Error())
   171  
   172  	centralConfig.APIValidationCronSchedule = "@daily"
   173  	err = cfgValidator.ValidateCfg()
   174  	assert.Nil(t, err)
   175  	cleanupFiles(tmpFile.Name())
   176  }
   177  
   178  func TestTraceabilityAgentOfflineConfig(t *testing.T) {
   179  	cfg := NewCentralConfig(TraceabilityAgent)
   180  	centralConfig := cfg.(*CentralConfiguration)
   181  
   182  	// Set to offline mode
   183  	centralConfig.UsageReporting.(*UsageReportingConfiguration).Offline = true
   184  
   185  	cfgValidator, ok := cfg.(IConfigValidator)
   186  	assert.True(t, ok)
   187  	assert.NotNil(t, cfgValidator)
   188  	err := cfgValidator.ValidateCfg()
   189  
   190  	// Environment ID is the only config needed in offline mode
   191  	assert.NotNil(t, err)
   192  	assert.Equal(t, "[Error Code 1401] - error with config central.environmentID, please set and/or check its value", err.Error())
   193  	centralConfig.EnvironmentID = "abc123"
   194  	err = cfgValidator.ValidateCfg()
   195  	assert.Nil(t, err)
   196  }
   197  
   198  func TestTeamConfig(t *testing.T) {
   199  	cfg := NewCentralConfig(TraceabilityAgent)
   200  	centralConfig := cfg.(*CentralConfiguration)
   201  
   202  	// Setup Auth config to ignore auth validation errors for this test
   203  	authCfg := centralConfig.Auth.(*AuthConfiguration)
   204  	authCfg.URL = "test"
   205  	authCfg.Realm = "Broker"
   206  	authCfg.ClientID = "aaaa"
   207  	tmpFile, _ := os.CreateTemp(".", "test*")
   208  	authCfg.PrivateKey = "./" + tmpFile.Name()
   209  	authCfg.PublicKey = "./" + tmpFile.Name()
   210  	centralConfig.TenantID = "1111"
   211  	centralConfig.URL = "aaa"
   212  	centralConfig.Environment = "111111"
   213  	centralConfig.APICDeployment = "aaa"
   214  
   215  	// Should be nil, not yet set
   216  	assert.Equal(t, "", centralConfig.GetTeamID(), "Team ID was expected to be blank as it has not yet been set")
   217  
   218  	//Set it and validate
   219  	teamID := "abc12:34567:def89:12345:67890"
   220  	centralConfig.SetTeamID(teamID)
   221  	assert.Equal(t, teamID, centralConfig.GetTeamID(), "The Team ID was not set appropriately")
   222  
   223  	cleanupFiles(tmpFile.Name())
   224  }
   225  
   226  func cleanupFiles(fileName string) {
   227  	// cleanup files
   228  	os.Remove("./" + fileName)
   229  }