1 package config
2
3 import (
4 "context"
5 "os"
6 "path/filepath"
7 "runtime"
8 "testing"
9
10 "github.com/aws/aws-sdk-go-v2/internal/awstesting"
11 )
12
13 func setupEnvForProcesscredsConfigFile() {
14 filename := "proc_creds_config.ini"
15 if runtime.GOOS == "windows" {
16 filename = "proc_creds_config_win.ini"
17 }
18
19 os.Setenv("AWS_CONFIG_FILE", filepath.Join("testdata", filename))
20 os.Setenv("AWS_SHARED_CREDENTIALS_FILE", filepath.Join("testdata", "empty_creds_config"))
21 }
22
23 func setupEnvForProcesscredsCredentialsFile() {
24 filename := "proc_creds_credentials.ini"
25 if runtime.GOOS == "windows" {
26 filename = "proc_creds_credentials_win.ini"
27 }
28
29 os.Setenv("AWS_SHARED_CREDENTIALS_FILE", filepath.Join("testdata", filename))
30 }
31
32 func TestProcessCredentialsProvider_FromConfig(t *testing.T) {
33 restoreEnv := awstesting.StashEnv()
34 defer awstesting.PopEnv(restoreEnv)
35
36 setupEnvForProcesscredsConfigFile()
37
38 config, err := LoadDefaultConfig(context.Background(), WithRegion("region"))
39 if err != nil {
40 t.Fatalf("error loading default config: %v", err)
41 }
42
43 v, err := config.Credentials.Retrieve(context.Background())
44 if err != nil {
45 t.Errorf("error getting credentials: %v", err)
46 }
47
48 if e, a := "accessKey", v.AccessKeyID; e != a {
49 t.Errorf("expected %v, got %v", e, a)
50 }
51
52 if e, a := "secret", v.SecretAccessKey; e != a {
53 t.Errorf("expected %v, got %v", e, a)
54 }
55
56 if e, a := "tokenDefault", v.SessionToken; e != a {
57 t.Errorf("expected %v, got %v", e, a)
58 }
59
60 }
61
62 func TestProcessCredentialsProvider_FromConfigWithProfile(t *testing.T) {
63 restoreEnv := awstesting.StashEnv()
64 defer awstesting.PopEnv(restoreEnv)
65
66 os.Setenv("AWS_PROFILE", "not_expire")
67 setupEnvForProcesscredsConfigFile()
68
69 config, err := LoadDefaultConfig(context.Background(), WithRegion("region"))
70 if err != nil {
71 t.Fatalf("error loading default config: %v", err)
72 }
73
74 v, err := config.Credentials.Retrieve(context.Background())
75 if err != nil {
76 t.Errorf("error getting credentials: %v", err)
77 }
78
79 if e, a := "nonDefaultToken", v.SessionToken; e != a {
80 t.Errorf("expected %v, got %v", e, a)
81 }
82
83 }
84
85 func TestProcessCredentialsProvider_FromConfigWithStaticCreds(t *testing.T) {
86 restoreEnv := awstesting.StashEnv()
87 defer awstesting.PopEnv(restoreEnv)
88
89 os.Setenv("AWS_PROFILE", "not_alone")
90 setupEnvForProcesscredsConfigFile()
91
92 config, err := LoadDefaultConfig(context.Background(), WithRegion("region"))
93 if err != nil {
94 t.Fatalf("error loading default config: %v", err)
95 }
96
97 v, err := config.Credentials.Retrieve(context.Background())
98 if err != nil {
99 t.Errorf("error getting credentials: %v", err)
100 }
101
102 if e, a := "notFromCredProcAccess", v.AccessKeyID; e != a {
103 t.Errorf("expected %v, got %v", e, a)
104 }
105
106 if e, a := "notFromCredProcSecret", v.SecretAccessKey; e != a {
107 t.Errorf("expected %v, got %v", e, a)
108 }
109
110 }
111
112 func TestProcessCredentialsProvider_FromCredentials(t *testing.T) {
113 restoreEnv := awstesting.StashEnv()
114 defer awstesting.PopEnv(restoreEnv)
115
116 setupEnvForProcesscredsCredentialsFile()
117
118 config, err := LoadDefaultConfig(context.Background(), WithRegion("region"))
119 if err != nil {
120 t.Fatalf("error loading default config: %v", err)
121 }
122
123 v, err := config.Credentials.Retrieve(context.Background())
124 if err != nil {
125 t.Errorf("error getting credentials: %v", err)
126 }
127
128 if e, a := "accessKey", v.AccessKeyID; e != a {
129 t.Errorf("expected %v, got %v", e, a)
130 }
131
132 if e, a := "secret", v.SecretAccessKey; e != a {
133 t.Errorf("expected %v, got %v", e, a)
134 }
135
136 if e, a := "tokenDefault", v.SessionToken; e != a {
137 t.Errorf("expected %v, got %v", e, a)
138 }
139
140 }
141
142 func TestProcessCredentialsProvider_FromCredentialsWithProfile(t *testing.T) {
143 restoreEnv := awstesting.StashEnv()
144 defer awstesting.PopEnv(restoreEnv)
145
146 os.Setenv("AWS_PROFILE", "not_expire")
147 setupEnvForProcesscredsCredentialsFile()
148
149 config, err := LoadDefaultConfig(context.Background(), WithRegion("region"))
150 if err != nil {
151 t.Fatalf("error loading default config: %v", err)
152 }
153
154 v, err := config.Credentials.Retrieve(context.Background())
155 if err != nil {
156 t.Errorf("error getting credentials: %v", err)
157 }
158
159 if e, a := "nonDefaultToken", v.SessionToken; e != a {
160 t.Errorf("expected %v, got %v", e, a)
161 }
162
163 }
164
165 func TestProcessCredentialsProvider_FromCredentialsWithStaticCreds(t *testing.T) {
166 restoreEnv := awstesting.StashEnv()
167 defer awstesting.PopEnv(restoreEnv)
168
169 os.Setenv("AWS_PROFILE", "not_alone")
170 setupEnvForProcesscredsCredentialsFile()
171
172 config, err := LoadDefaultConfig(context.Background(), WithRegion("region"))
173 if err != nil {
174 t.Fatalf("error loading default config: %v", err)
175 }
176
177 v, err := config.Credentials.Retrieve(context.Background())
178 if err != nil {
179 t.Errorf("error getting credentials: %v", err)
180 }
181
182 if e, a := "notFromCredProcAccess", v.AccessKeyID; e != a {
183 t.Errorf("expected %v, got %v", e, a)
184 }
185
186 if e, a := "notFromCredProcSecret", v.SecretAccessKey; e != a {
187 t.Errorf("expected %v, got %v", e, a)
188 }
189 }
190
View as plain text