mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
				
	
	
		
			82 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Go
		
	
	
	
| package pluginproxy
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/grafana/grafana/pkg/plugins"
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| 	"github.com/stretchr/testify/require"
 | |
| )
 | |
| 
 | |
| func TestApplyRoute_interpolateAuthParams(t *testing.T) {
 | |
| 	tokenAuth := &plugins.JWTTokenAuth{
 | |
| 		Url: "https://login.server.com/{{.JsonData.tenantId}}/oauth2/token",
 | |
| 		Scopes: []string{
 | |
| 			"https://www.testapi.com/auth/Read.All",
 | |
| 			"https://www.testapi.com/auth/Write.All",
 | |
| 		},
 | |
| 		Params: map[string]string{
 | |
| 			"token_uri":    "{{.JsonData.tokenUri}}",
 | |
| 			"client_email": "{{.JsonData.clientEmail | orEmpty}}",
 | |
| 			"private_key":  "{{.SecureJsonData.privateKey | orEmpty}}",
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	validData := templateData{
 | |
| 		JsonData: map[string]interface{}{
 | |
| 			"clientEmail": "test@test.com",
 | |
| 			"tokenUri":    "login.url.com/token",
 | |
| 			"tenantId":    "f09c86ac",
 | |
| 		},
 | |
| 		SecureJsonData: map[string]string{
 | |
| 			"privateKey": "testkey",
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	emptyData := templateData{
 | |
| 		JsonData:       map[string]interface{}{},
 | |
| 		SecureJsonData: map[string]string{},
 | |
| 	}
 | |
| 
 | |
| 	t.Run("should interpolate JWTTokenAuth struct using given JsonData", func(t *testing.T) {
 | |
| 		interpolated, err := interpolateAuthParams(tokenAuth, validData)
 | |
| 		require.NoError(t, err)
 | |
| 		require.NotNil(t, interpolated)
 | |
| 
 | |
| 		assert.Equal(t, "https://login.server.com/f09c86ac/oauth2/token", interpolated.Url)
 | |
| 
 | |
| 		assert.Equal(t, 2, len(interpolated.Scopes))
 | |
| 		assert.Equal(t, "https://www.testapi.com/auth/Read.All", interpolated.Scopes[0])
 | |
| 		assert.Equal(t, "https://www.testapi.com/auth/Write.All", interpolated.Scopes[1])
 | |
| 
 | |
| 		assert.Equal(t, "login.url.com/token", interpolated.Params["token_uri"])
 | |
| 		assert.Equal(t, "test@test.com", interpolated.Params["client_email"])
 | |
| 		assert.Equal(t, "testkey", interpolated.Params["private_key"])
 | |
| 	})
 | |
| 
 | |
| 	t.Run("should return Nil if given JWTTokenAuth is Nil", func(t *testing.T) {
 | |
| 		interpolated, err := interpolateAuthParams(nil, validData)
 | |
| 		require.NoError(t, err)
 | |
| 		require.Nil(t, interpolated)
 | |
| 	})
 | |
| 
 | |
| 	t.Run("when plugin data is empty", func(t *testing.T) {
 | |
| 		interpolated, err := interpolateAuthParams(tokenAuth, emptyData)
 | |
| 		require.NoError(t, err)
 | |
| 		require.NotNil(t, interpolated)
 | |
| 
 | |
| 		t.Run("template expressions in url should resolve to <no value>", func(t *testing.T) {
 | |
| 			assert.Equal(t, "https://login.server.com/<no value>/oauth2/token", interpolated.Url)
 | |
| 		})
 | |
| 
 | |
| 		t.Run("template expressions in params resolve to <no value>", func(t *testing.T) {
 | |
| 			assert.Equal(t, "<no value>", interpolated.Params["token_uri"])
 | |
| 		})
 | |
| 
 | |
| 		t.Run("template expressions with orEmpty should resolve to empty string", func(t *testing.T) {
 | |
| 			assert.Equal(t, "", interpolated.Params["client_email"])
 | |
| 			assert.Equal(t, "", interpolated.Params["private_key"])
 | |
| 		})
 | |
| 	})
 | |
| }
 |