github.com/kyma-project/kyma-environment-broker@v0.0.1/common/hyperscaler/azure/env_test.go (about)

     1  package azure
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/require"
     7  
     8  	"github.com/kyma-project/kyma-environment-broker/common/hyperscaler"
     9  	"github.com/kyma-project/kyma-environment-broker/internal"
    10  	"github.com/kyma-project/kyma-environment-broker/internal/broker"
    11  	"github.com/kyma-project/kyma-environment-broker/internal/provider"
    12  )
    13  
    14  func Test_mapRegion(t *testing.T) {
    15  	type args struct {
    16  		hyperscalerType hyperscaler.Type
    17  		planID          string
    18  		region          string
    19  	}
    20  	tests := []struct {
    21  		name       string
    22  		args       args
    23  		wantRegion string
    24  		wantErr    bool
    25  	}{
    26  		{
    27  			name: "invalid gcp mapping",
    28  			args: args{
    29  				hyperscalerType: hyperscaler.Azure,
    30  				planID:          broker.GCPPlanID,
    31  				region:          "munich",
    32  			},
    33  			wantRegion: "",
    34  			wantErr:    true,
    35  		},
    36  		{
    37  			name: "valid gcp mapping",
    38  			args: args{
    39  				hyperscalerType: hyperscaler.Azure,
    40  				planID:          broker.GCPPlanID,
    41  				region:          "europe-west1",
    42  			},
    43  			wantRegion: "westeurope",
    44  			wantErr:    false,
    45  		},
    46  		{
    47  			name: "unknown planid",
    48  			args: args{
    49  				hyperscalerType: hyperscaler.Azure,
    50  				planID:          "microsoftcloud",
    51  				region:          "",
    52  			},
    53  			wantRegion: provider.DefaultAzureRegion,
    54  			wantErr:    false,
    55  		},
    56  		{
    57  			name: "unknown hyperscaler",
    58  			args: args{
    59  				hyperscalerType: "microsoftcloud",
    60  				planID:          broker.AzurePlanID,
    61  				region:          "",
    62  			},
    63  			wantRegion: "",
    64  			wantErr:    true,
    65  		},
    66  		{
    67  			name: "empty azure region",
    68  			args: args{
    69  				hyperscalerType: hyperscaler.Azure,
    70  				planID:          broker.AzurePlanID,
    71  				region:          "",
    72  			},
    73  			wantRegion: provider.DefaultAzureRegion,
    74  			wantErr:    false,
    75  		},
    76  		{
    77  			name: "valid azure region",
    78  			args: args{
    79  				hyperscalerType: hyperscaler.Azure,
    80  				planID:          broker.AzurePlanID,
    81  				region:          "westeurope",
    82  			},
    83  			wantRegion: "westeurope",
    84  			wantErr:    false,
    85  		},
    86  		{
    87  			name: "valid azure lite region",
    88  			args: args{
    89  				hyperscalerType: hyperscaler.Azure,
    90  				planID:          broker.AzureLitePlanID,
    91  				region:          "japaneast",
    92  			},
    93  			wantRegion: "japaneast",
    94  			wantErr:    false,
    95  		},
    96  	}
    97  	for _, tt := range tests {
    98  		t.Run(tt.name, func(t *testing.T) {
    99  			credentials := hyperscaler.Credentials{
   100  				HyperscalerType: tt.args.hyperscalerType,
   101  			}
   102  			parameters := internal.ProvisioningParameters{
   103  				PlanID: tt.args.planID,
   104  				Parameters: internal.ProvisioningParametersDTO{
   105  					Region: &tt.args.region,
   106  				},
   107  			}
   108  
   109  			got, err := mapRegion(credentials, parameters)
   110  			if tt.wantErr {
   111  				require.NotNil(t, err, "mapRegion() error = %v, wantErr %v", err, tt.wantErr)
   112  			} else {
   113  				require.Nil(t, err, "mapRegion() error = %v, wantErr %v", err, tt.wantErr)
   114  			}
   115  			require.Equal(t, got, tt.wantRegion, "mapRegion() got = %v, wantRegion %v", got, tt.wantRegion)
   116  		})
   117  	}
   118  }