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

     1  package graphql_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/kyma-incubator/compass/components/director/pkg/graphql"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func TestUnmarshalBasicAuth(t *testing.T) {
    13  	// GIVEN
    14  	a := &graphql.Auth{}
    15  	// WHEN
    16  	err := a.UnmarshalJSON([]byte(`{
    17  		"credential": {
    18  			"username": "aaa",
    19  			"password": "bbb"
    20  		},
    21  		"additionalHeaders": {
    22  			"scopes": ["read", "write"]
    23  		}
    24  	}`))
    25  	// THEN
    26  	require.NoError(t, err)
    27  	require.NotNil(t, a.AdditionalHeaders)
    28  	scopes := a.AdditionalHeaders["scopes"]
    29  	assert.Len(t, scopes, 2)
    30  	assert.Contains(t, scopes, "read")
    31  	assert.Contains(t, scopes, "write")
    32  	basic, ok := a.Credential.(*graphql.BasicCredentialData)
    33  	require.True(t, ok)
    34  	assert.Equal(t, "aaa", basic.Username)
    35  	assert.Equal(t, "bbb", basic.Password)
    36  }
    37  
    38  func TestUnmarshalOAuth(t *testing.T) {
    39  	// GIVEN
    40  	a := &graphql.Auth{}
    41  	// WHEN
    42  	err := a.UnmarshalJSON([]byte(`{
    43    		"credential": {
    44  			"url":"oauth.url",
    45  			"clientId": "client-id",
    46  			"clientSecret":"client-secret"
    47  		},
    48  		"additionalHeaders": {
    49  			"scopes": ["read", "write"]
    50  		}
    51  	}`))
    52  	// THEN
    53  	require.NoError(t, err)
    54  	require.NotNil(t, a.AdditionalHeaders)
    55  	scopes := a.AdditionalHeaders["scopes"]
    56  	assert.Len(t, scopes, 2)
    57  	assert.Contains(t, scopes, "read")
    58  	assert.Contains(t, scopes, "write")
    59  	oauth, ok := a.Credential.(*graphql.OAuthCredentialData)
    60  	require.True(t, ok)
    61  	assert.Equal(t, "oauth.url", oauth.URL)
    62  	assert.Equal(t, "client-id", oauth.ClientID)
    63  	assert.Equal(t, "client-secret", oauth.ClientSecret)
    64  }
    65  
    66  func TestUnmarshalCertificateOAuth(t *testing.T) {
    67  	// GIVEN
    68  	a := &graphql.Auth{}
    69  	// WHEN
    70  	err := a.UnmarshalJSON([]byte(`{
    71    		"credential": {
    72  			"url":"oauth.url",
    73  			"clientId": "client-id",
    74  			"certificate":"certificate-data"
    75  		},
    76  		"additionalHeaders": {
    77  			"scopes": ["read", "write"]
    78  		}
    79  	}`))
    80  	// THEN
    81  	require.NoError(t, err)
    82  	require.NotNil(t, a.AdditionalHeaders)
    83  	scopes := a.AdditionalHeaders["scopes"]
    84  	assert.Len(t, scopes, 2)
    85  	assert.Contains(t, scopes, "read")
    86  	assert.Contains(t, scopes, "write")
    87  	oauth, ok := a.Credential.(*graphql.CertificateOAuthCredentialData)
    88  	require.True(t, ok)
    89  	assert.Equal(t, "oauth.url", oauth.URL)
    90  	assert.Equal(t, "client-id", oauth.ClientID)
    91  	assert.Equal(t, "certificate-data", oauth.Certificate)
    92  }
    93  
    94  func TestUnmarshalCSRFBasicAuth(t *testing.T) {
    95  	// GIVEN
    96  	a := &graphql.CSRFTokenCredentialRequestAuth{}
    97  	// WHEN
    98  	err := a.UnmarshalJSON([]byte(`{
    99  		"credential": {
   100  			"username": "aaa",
   101  			"password": "bbb"
   102  		},
   103  		"additionalHeaders": {
   104  			"scopes": ["read", "write"]
   105  		}
   106  	}`))
   107  	// THEN
   108  	require.NoError(t, err)
   109  	require.NotNil(t, a.AdditionalHeaders)
   110  	scopes := a.AdditionalHeaders["scopes"]
   111  	assert.Len(t, scopes, 2)
   112  	assert.Contains(t, scopes, "read")
   113  	assert.Contains(t, scopes, "write")
   114  	basic, ok := a.Credential.(*graphql.BasicCredentialData)
   115  	require.True(t, ok)
   116  	assert.Equal(t, "aaa", basic.Username)
   117  	assert.Equal(t, "bbb", basic.Password)
   118  }
   119  
   120  func TestUnmarshalCSRFOAuth(t *testing.T) {
   121  	// GIVEN
   122  	a := &graphql.CSRFTokenCredentialRequestAuth{}
   123  	// WHEN
   124  	err := a.UnmarshalJSON([]byte(`{
   125    		"credential": {
   126  			"url":"oauth.url",
   127  			"clientId": "client-id",
   128  			"clientSecret":"client-secret"
   129  		},
   130  		"additionalHeaders": {
   131  			"scopes": ["read", "write"]
   132  		}
   133  	}`))
   134  	// THEN
   135  	require.NoError(t, err)
   136  	require.NotNil(t, a.AdditionalHeaders)
   137  	scopes := a.AdditionalHeaders["scopes"]
   138  	assert.Len(t, scopes, 2)
   139  	assert.Contains(t, scopes, "read")
   140  	assert.Contains(t, scopes, "write")
   141  	oauth, ok := a.Credential.(*graphql.OAuthCredentialData)
   142  	require.True(t, ok)
   143  	assert.Equal(t, "oauth.url", oauth.URL)
   144  	assert.Equal(t, "client-id", oauth.ClientID)
   145  	assert.Equal(t, "client-secret", oauth.ClientSecret)
   146  }