github.com/aavshr/aws-sdk-go@v1.41.3/aws/credentials/shared_credentials_provider_test.go (about)

     1  package credentials
     2  
     3  import (
     4  	"os"
     5  	"path/filepath"
     6  	"testing"
     7  
     8  	"github.com/aavshr/aws-sdk-go/internal/sdktesting"
     9  	"github.com/aavshr/aws-sdk-go/internal/shareddefaults"
    10  )
    11  
    12  func TestSharedCredentialsProvider(t *testing.T) {
    13  	restoreEnvFn := sdktesting.StashEnv()
    14  	defer restoreEnvFn()
    15  
    16  	p := SharedCredentialsProvider{Filename: "example.ini", Profile: ""}
    17  	creds, err := p.Retrieve()
    18  	if err != nil {
    19  		t.Errorf("expect nil, got %v", err)
    20  	}
    21  
    22  	if e, a := "accessKey", creds.AccessKeyID; e != a {
    23  		t.Errorf("expect %v, got %v", e, a)
    24  	}
    25  	if e, a := "secret", creds.SecretAccessKey; e != a {
    26  		t.Errorf("expect %v, got %v", e, a)
    27  	}
    28  	if e, a := "token", creds.SessionToken; e != a {
    29  		t.Errorf("expect %v, got %v", e, a)
    30  	}
    31  }
    32  
    33  func TestSharedCredentialsProviderIsExpired(t *testing.T) {
    34  	restoreEnvFn := sdktesting.StashEnv()
    35  	defer restoreEnvFn()
    36  
    37  	p := SharedCredentialsProvider{Filename: "example.ini", Profile: ""}
    38  
    39  	if !p.IsExpired() {
    40  		t.Errorf("Expect creds to be expired before retrieve")
    41  	}
    42  
    43  	_, err := p.Retrieve()
    44  	if err != nil {
    45  		t.Errorf("expect nil, got %v", err)
    46  	}
    47  
    48  	if p.IsExpired() {
    49  		t.Errorf("Expect creds to not be expired after retrieve")
    50  	}
    51  }
    52  
    53  func TestSharedCredentialsProviderWithAWS_SHARED_CREDENTIALS_FILE(t *testing.T) {
    54  	restoreEnvFn := sdktesting.StashEnv()
    55  	defer restoreEnvFn()
    56  
    57  	os.Setenv("AWS_SHARED_CREDENTIALS_FILE", "example.ini")
    58  	p := SharedCredentialsProvider{}
    59  	creds, err := p.Retrieve()
    60  
    61  	if err != nil {
    62  		t.Errorf("expect nil, got %v", err)
    63  	}
    64  
    65  	if e, a := "accessKey", creds.AccessKeyID; e != a {
    66  		t.Errorf("expect %v, got %v", e, a)
    67  	}
    68  	if e, a := "secret", creds.SecretAccessKey; e != a {
    69  		t.Errorf("expect %v, got %v", e, a)
    70  	}
    71  	if e, a := "token", creds.SessionToken; e != a {
    72  		t.Errorf("expect %v, got %v", e, a)
    73  	}
    74  }
    75  
    76  func TestSharedCredentialsProviderWithAWS_SHARED_CREDENTIALS_FILEAbsPath(t *testing.T) {
    77  	restoreEnvFn := sdktesting.StashEnv()
    78  	defer restoreEnvFn()
    79  
    80  	wd, err := os.Getwd()
    81  	if err != nil {
    82  		t.Errorf("expect no error, got %v", err)
    83  	}
    84  	os.Setenv("AWS_SHARED_CREDENTIALS_FILE", filepath.Join(wd, "example.ini"))
    85  	p := SharedCredentialsProvider{}
    86  	creds, err := p.Retrieve()
    87  	if err != nil {
    88  		t.Errorf("expect nil, got %v", err)
    89  	}
    90  
    91  	if e, a := "accessKey", creds.AccessKeyID; e != a {
    92  		t.Errorf("expect %v, got %v", e, a)
    93  	}
    94  	if e, a := "secret", creds.SecretAccessKey; e != a {
    95  		t.Errorf("expect %v, got %v", e, a)
    96  	}
    97  	if e, a := "token", creds.SessionToken; e != a {
    98  		t.Errorf("expect %v, got %v", e, a)
    99  	}
   100  }
   101  
   102  func TestSharedCredentialsProviderWithAWS_PROFILE(t *testing.T) {
   103  	restoreEnvFn := sdktesting.StashEnv()
   104  	defer restoreEnvFn()
   105  
   106  	os.Setenv("AWS_PROFILE", "no_token")
   107  
   108  	p := SharedCredentialsProvider{Filename: "example.ini", Profile: ""}
   109  	creds, err := p.Retrieve()
   110  	if err != nil {
   111  		t.Errorf("expect nil, got %v", err)
   112  	}
   113  
   114  	if e, a := "accessKey", creds.AccessKeyID; e != a {
   115  		t.Errorf("expect %v, got %v", e, a)
   116  	}
   117  	if e, a := "secret", creds.SecretAccessKey; e != a {
   118  		t.Errorf("expect %v, got %v", e, a)
   119  	}
   120  	if v := creds.SessionToken; len(v) != 0 {
   121  		t.Errorf("Expect no token, %v", v)
   122  	}
   123  }
   124  
   125  func TestSharedCredentialsProviderWithoutTokenFromProfile(t *testing.T) {
   126  	restoreEnvFn := sdktesting.StashEnv()
   127  	defer restoreEnvFn()
   128  
   129  	p := SharedCredentialsProvider{Filename: "example.ini", Profile: "no_token"}
   130  	creds, err := p.Retrieve()
   131  	if err != nil {
   132  		t.Errorf("expect nil, got %v", err)
   133  	}
   134  
   135  	if e, a := "accessKey", creds.AccessKeyID; e != a {
   136  		t.Errorf("expect %v, got %v", e, a)
   137  	}
   138  	if e, a := "secret", creds.SecretAccessKey; e != a {
   139  		t.Errorf("expect %v, got %v", e, a)
   140  	}
   141  	if v := creds.SessionToken; len(v) != 0 {
   142  		t.Errorf("Expect no token, %v", v)
   143  	}
   144  }
   145  
   146  func TestSharedCredentialsProviderColonInCredFile(t *testing.T) {
   147  	restoreEnvFn := sdktesting.StashEnv()
   148  	defer restoreEnvFn()
   149  
   150  	p := SharedCredentialsProvider{Filename: "example.ini", Profile: "with_colon"}
   151  	creds, err := p.Retrieve()
   152  	if err != nil {
   153  		t.Errorf("expect nil, got %v", err)
   154  	}
   155  
   156  	if e, a := "accessKey", creds.AccessKeyID; e != a {
   157  		t.Errorf("expect %v, got %v", e, a)
   158  	}
   159  	if e, a := "secret", creds.SecretAccessKey; e != a {
   160  		t.Errorf("expect %v, got %v", e, a)
   161  	}
   162  	if v := creds.SessionToken; len(v) != 0 {
   163  		t.Errorf("Expect no token, %v", v)
   164  	}
   165  }
   166  
   167  func TestSharedCredentialsProvider_DefaultFilename(t *testing.T) {
   168  	restoreEnvFn := sdktesting.StashEnv()
   169  	defer restoreEnvFn()
   170  
   171  	os.Setenv("USERPROFILE", "profile_dir")
   172  	os.Setenv("HOME", "home_dir")
   173  
   174  	// default filename and profile
   175  	p := SharedCredentialsProvider{}
   176  
   177  	filename, err := p.filename()
   178  
   179  	if err != nil {
   180  		t.Fatalf("expect no error, got %v", err)
   181  	}
   182  
   183  	if e, a := shareddefaults.SharedCredentialsFilename(), filename; e != a {
   184  		t.Errorf("expect %q filename, got %q", e, a)
   185  	}
   186  }
   187  
   188  func BenchmarkSharedCredentialsProvider(b *testing.B) {
   189  	restoreEnvFn := sdktesting.StashEnv()
   190  	defer restoreEnvFn()
   191  
   192  	p := SharedCredentialsProvider{Filename: "example.ini", Profile: ""}
   193  	_, err := p.Retrieve()
   194  	if err != nil {
   195  		b.Fatal(err)
   196  	}
   197  
   198  	b.ResetTimer()
   199  	for i := 0; i < b.N; i++ {
   200  		_, err := p.Retrieve()
   201  		if err != nil {
   202  			b.Fatal(err)
   203  		}
   204  	}
   205  }