36 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
| package auth
 | |
| 
 | |
| import (
 | |
| 	"strings"
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/stretchr/testify/require"
 | |
| )
 | |
| 
 | |
| func TestAWSIAMTokenGenerator(t *testing.T) {
 | |
| 	// Set up the environment, so we don't make any external calls to AWS
 | |
| 	t.Setenv("AWS_CONFIG_FILE", "file_not_exists")
 | |
| 	t.Setenv("AWS_SHARED_CREDENTIALS_FILE", "file_not_exists")
 | |
| 	t.Setenv("AWS_ENDPOINT_URL", "http://localhost:9999/aws")
 | |
| 	t.Setenv("AWS_ACCESS_KEY_ID", "access_key")
 | |
| 	t.Setenv("AWS_SECRET_ACCESS_KEY", "secret_key")
 | |
| 	t.Setenv("AWS_REGION", "us-east-1")
 | |
| 
 | |
| 	tokenGenerator, err := New("elasticache", "test-cluster", "test-user")
 | |
| 	require.NotNil(t, tokenGenerator)
 | |
| 	require.NoError(t, err)
 | |
| 
 | |
| 	token, err := tokenGenerator.GenerateToken()
 | |
| 	require.NoError(t, err)
 | |
| 	require.NotEmpty(t, token)
 | |
| 	require.Contains(t, token, "X-Amz-Algorithm", "signed token should contain algorithm attribute")
 | |
| 	require.Contains(t, token, "User=test-user", "signed token should contain user parameter")
 | |
| 	require.Contains(t, token, "X-Amz-Credential", "signed token should contain credential attribute")
 | |
| 	require.Contains(t, token, "X-Amz-Date", "signed token should contain date attribute")
 | |
| 	require.Contains(t, token, "X-Amz-Expires", "signed token should contain expires attribute")
 | |
| 	require.Contains(t, token, "X-Amz-SignedHeaders", "signed token should contain signed headers attribute")
 | |
| 	require.Contains(t, token, "X-Amz-Signature", "signed token should contain signature attribute")
 | |
| 	require.Contains(t, token, "Action=connect", "signed token should contain connect action")
 | |
| 	require.False(t, strings.HasPrefix(token, "http://"), "token should not have http:// scheme")
 | |
| }
 |