github.com/kyma-incubator/compass/components/director@v0.0.0-20230623144113-d764f56ff805/internal/model/auth_test.go (about)

     1  package model_test
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/kyma-incubator/compass/components/director/internal/model"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  var accessStrategy = "accessStrategy"
    13  
    14  func TestAuthInput_ToAuth(t *testing.T) {
    15  	// GIVEN
    16  	testCases := []struct {
    17  		Name     string
    18  		Input    *model.AuthInput
    19  		Expected *model.Auth
    20  	}{
    21  		{
    22  			Name: "All properties given",
    23  			Input: &model.AuthInput{
    24  				Credential: &model.CredentialDataInput{
    25  					Basic: &model.BasicCredentialDataInput{
    26  						Username: "test",
    27  					},
    28  				},
    29  				AccessStrategy: &accessStrategy,
    30  				AdditionalQueryParams: map[string][]string{
    31  					"key": {"value1", "value2"},
    32  				},
    33  				AdditionalHeaders: map[string][]string{
    34  					"header": {"value1", "value2"},
    35  				},
    36  				RequestAuth: &model.CredentialRequestAuthInput{
    37  					Csrf: &model.CSRFTokenCredentialRequestAuthInput{
    38  						TokenEndpointURL: "test",
    39  					},
    40  				},
    41  			},
    42  			Expected: &model.Auth{
    43  				Credential: model.CredentialData{
    44  					Basic: &model.BasicCredentialData{
    45  						Username: "test",
    46  					},
    47  				},
    48  				AccessStrategy: &accessStrategy,
    49  				AdditionalQueryParams: map[string][]string{
    50  					"key": {"value1", "value2"},
    51  				},
    52  				AdditionalHeaders: map[string][]string{
    53  					"header": {"value1", "value2"},
    54  				},
    55  				RequestAuth: &model.CredentialRequestAuth{
    56  					Csrf: &model.CSRFTokenCredentialRequestAuth{
    57  						TokenEndpointURL: "test",
    58  					},
    59  				},
    60  			},
    61  		},
    62  		{
    63  			Name:     "Empty",
    64  			Input:    &model.AuthInput{},
    65  			Expected: &model.Auth{},
    66  		},
    67  		{
    68  			Name:     "Nil",
    69  			Input:    nil,
    70  			Expected: nil,
    71  		},
    72  	}
    73  
    74  	for i, testCase := range testCases {
    75  		t.Run(fmt.Sprintf("%d: %s", i, testCase.Name), func(t *testing.T) {
    76  			// WHEN
    77  			result := testCase.Input.ToAuth()
    78  
    79  			// then
    80  			assert.Equal(t, testCase.Expected, result)
    81  		})
    82  	}
    83  }
    84  
    85  func TestCredentialDataInput_ToCredentialData(t *testing.T) {
    86  	// GIVEN
    87  	testCases := []struct {
    88  		Name     string
    89  		Input    *model.CredentialDataInput
    90  		Expected *model.CredentialData
    91  	}{
    92  		{
    93  			Name: "All properties given",
    94  			Input: &model.CredentialDataInput{
    95  				Basic: &model.BasicCredentialDataInput{
    96  					Username: "user",
    97  				},
    98  				Oauth: &model.OAuthCredentialDataInput{
    99  					URL: "test",
   100  				},
   101  			},
   102  			Expected: &model.CredentialData{
   103  				Basic: &model.BasicCredentialData{
   104  					Username: "user",
   105  				},
   106  				Oauth: &model.OAuthCredentialData{
   107  					URL: "test",
   108  				},
   109  			},
   110  		},
   111  		{
   112  			Name:     "Empty",
   113  			Input:    &model.CredentialDataInput{},
   114  			Expected: &model.CredentialData{},
   115  		},
   116  		{
   117  			Name:     "Nil",
   118  			Input:    nil,
   119  			Expected: nil,
   120  		},
   121  	}
   122  
   123  	for i, testCase := range testCases {
   124  		t.Run(fmt.Sprintf("%d: %s", i, testCase.Name), func(t *testing.T) {
   125  			// WHEN
   126  			result := testCase.Input.ToCredentialData()
   127  
   128  			// then
   129  			assert.Equal(t, testCase.Expected, result)
   130  		})
   131  	}
   132  }
   133  
   134  func TestBasicCredentialDataInput_ToBasicCredentialData(t *testing.T) {
   135  	// GIVEN
   136  	testCases := []struct {
   137  		Name     string
   138  		Input    *model.BasicCredentialDataInput
   139  		Expected *model.BasicCredentialData
   140  	}{
   141  		{
   142  			Name: "All properties given",
   143  			Input: &model.BasicCredentialDataInput{
   144  				Username: "user",
   145  				Password: "pass",
   146  			},
   147  			Expected: &model.BasicCredentialData{
   148  				Username: "user",
   149  				Password: "pass",
   150  			},
   151  		},
   152  		{
   153  			Name:     "Empty",
   154  			Input:    &model.BasicCredentialDataInput{},
   155  			Expected: &model.BasicCredentialData{},
   156  		},
   157  		{
   158  			Name:     "Nil",
   159  			Input:    nil,
   160  			Expected: nil,
   161  		},
   162  	}
   163  
   164  	for i, testCase := range testCases {
   165  		t.Run(fmt.Sprintf("%d: %s", i, testCase.Name), func(t *testing.T) {
   166  			// WHEN
   167  			result := testCase.Input.ToBasicCredentialData()
   168  
   169  			// then
   170  			assert.Equal(t, testCase.Expected, result)
   171  		})
   172  	}
   173  }
   174  
   175  func TestOAuthCredentialDataInput_ToOAuthCredentialData(t *testing.T) {
   176  	// GIVEN
   177  	testCases := []struct {
   178  		Name     string
   179  		Input    *model.OAuthCredentialDataInput
   180  		Expected *model.OAuthCredentialData
   181  	}{
   182  		{
   183  			Name: "All properties given",
   184  			Input: &model.OAuthCredentialDataInput{
   185  				URL:          "test",
   186  				ClientID:     "id",
   187  				ClientSecret: "secret",
   188  			},
   189  			Expected: &model.OAuthCredentialData{
   190  				URL:          "test",
   191  				ClientID:     "id",
   192  				ClientSecret: "secret",
   193  			},
   194  		},
   195  		{
   196  			Name:     "Empty",
   197  			Input:    &model.OAuthCredentialDataInput{},
   198  			Expected: &model.OAuthCredentialData{},
   199  		},
   200  		{
   201  			Name:     "Nil",
   202  			Input:    nil,
   203  			Expected: nil,
   204  		},
   205  	}
   206  
   207  	for i, testCase := range testCases {
   208  		t.Run(fmt.Sprintf("%d: %s", i, testCase.Name), func(t *testing.T) {
   209  			// WHEN
   210  			result := testCase.Input.ToOAuthCredentialData()
   211  
   212  			// then
   213  			assert.Equal(t, testCase.Expected, result)
   214  		})
   215  	}
   216  }
   217  
   218  func TestCredentialRequestAuthInput_ToCredentialRequestAuth(t *testing.T) {
   219  	// GIVEN
   220  	testCases := []struct {
   221  		Name     string
   222  		Input    *model.CredentialRequestAuthInput
   223  		Expected *model.CredentialRequestAuth
   224  	}{
   225  		{
   226  			Name: "All properties given",
   227  			Input: &model.CredentialRequestAuthInput{
   228  				Csrf: &model.CSRFTokenCredentialRequestAuthInput{
   229  					TokenEndpointURL: "foo.bar",
   230  				},
   231  			},
   232  			Expected: &model.CredentialRequestAuth{
   233  				Csrf: &model.CSRFTokenCredentialRequestAuth{
   234  					TokenEndpointURL: "foo.bar",
   235  				},
   236  			},
   237  		},
   238  		{
   239  			Name:     "Empty",
   240  			Input:    &model.CredentialRequestAuthInput{},
   241  			Expected: &model.CredentialRequestAuth{},
   242  		},
   243  		{
   244  			Name:     "Nil",
   245  			Input:    nil,
   246  			Expected: nil,
   247  		},
   248  	}
   249  
   250  	for i, testCase := range testCases {
   251  		t.Run(fmt.Sprintf("%d: %s", i, testCase.Name), func(t *testing.T) {
   252  			// WHEN
   253  			result := testCase.Input.ToCredentialRequestAuth()
   254  
   255  			// then
   256  			assert.Equal(t, testCase.Expected, result)
   257  		})
   258  	}
   259  }
   260  
   261  func TestCSRFTokenCredentialRequestAuthInput_ToCSRFTokenCredentialRequestAuth(t *testing.T) {
   262  	// GIVEN
   263  	testCases := []struct {
   264  		Name     string
   265  		Input    *model.CSRFTokenCredentialRequestAuthInput
   266  		Expected *model.CSRFTokenCredentialRequestAuth
   267  	}{
   268  		{
   269  			Name: "All properties given",
   270  			Input: &model.CSRFTokenCredentialRequestAuthInput{
   271  				Credential: &model.CredentialDataInput{
   272  					Basic: &model.BasicCredentialDataInput{
   273  						Username: "test",
   274  					},
   275  				},
   276  				TokenEndpointURL: "foo.bar",
   277  				AdditionalQueryParams: map[string][]string{
   278  					"key": {"value1", "value2"},
   279  				},
   280  				AdditionalHeaders: map[string][]string{
   281  					"header": {"value1", "value2"},
   282  				},
   283  			},
   284  			Expected: &model.CSRFTokenCredentialRequestAuth{
   285  				Credential: model.CredentialData{
   286  					Basic: &model.BasicCredentialData{
   287  						Username: "test",
   288  					},
   289  				},
   290  				TokenEndpointURL: "foo.bar",
   291  				AdditionalQueryParams: map[string][]string{
   292  					"key": {"value1", "value2"},
   293  				},
   294  				AdditionalHeaders: map[string][]string{
   295  					"header": {"value1", "value2"},
   296  				},
   297  			},
   298  		},
   299  		{
   300  			Name:     "Empty",
   301  			Input:    &model.CSRFTokenCredentialRequestAuthInput{},
   302  			Expected: &model.CSRFTokenCredentialRequestAuth{},
   303  		},
   304  		{
   305  			Name:     "Nil",
   306  			Input:    nil,
   307  			Expected: nil,
   308  		},
   309  	}
   310  
   311  	for i, testCase := range testCases {
   312  		t.Run(fmt.Sprintf("%d: %s", i, testCase.Name), func(t *testing.T) {
   313  			// WHEN
   314  			result := testCase.Input.ToCSRFTokenCredentialRequestAuth()
   315  
   316  			// then
   317  			assert.Equal(t, testCase.Expected, result)
   318  		})
   319  	}
   320  }