| 1 |  |  | package providers | 
            
                                                        
            
                                    
            
            
                | 2 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 3 |  |  | import ( | 
            
                                                        
            
                                    
            
            
                | 4 |  |  | 	"os" | 
            
                                                        
            
                                    
            
            
                | 5 |  |  | 	"path" | 
            
                                                        
            
                                    
            
            
                | 6 |  |  | 	"testing" | 
            
                                                        
            
                                    
            
            
                | 7 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 8 |  |  | 	"github.com/aliyun/credentials-go/credentials/internal/utils" | 
            
                                                        
            
                                    
            
            
                | 9 |  |  | 	"github.com/stretchr/testify/assert" | 
            
                                                        
            
                                    
            
            
                | 10 |  |  | 	"gopkg.in/ini.v1" | 
            
                                                        
            
                                    
            
            
                | 11 |  |  | ) | 
            
                                                        
            
                                    
            
            
                | 12 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 13 |  |  | var inistr = ` | 
            
                                                        
            
                                    
            
            
                | 14 |  |  | [default] | 
            
                                                        
            
                                    
            
            
                | 15 |  |  | enable = true | 
            
                                                        
            
                                    
            
            
                | 16 |  |  | type = access_key | 
            
                                                        
            
                                    
            
            
                | 17 |  |  | access_key_id = foo | 
            
                                                        
            
                                    
            
            
                | 18 |  |  | access_key_secret = bar | 
            
                                                        
            
                                    
            
            
                | 19 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 20 |  |  | [notype] | 
            
                                                        
            
                                    
            
            
                | 21 |  |  | access_key_id = foo | 
            
                                                        
            
                                    
            
            
                | 22 |  |  | access_key_secret = bar | 
            
                                                        
            
                                    
            
            
                | 23 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 24 |  |  | [noak] | 
            
                                                        
            
                                    
            
            
                | 25 |  |  | type = access_key | 
            
                                                        
            
                                    
            
            
                | 26 |  |  | access_key_secret = bar | 
            
                                                        
            
                                    
            
            
                | 27 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 28 |  |  | [emptyak] | 
            
                                                        
            
                                    
            
            
                | 29 |  |  | type = access_key | 
            
                                                        
            
                                    
            
            
                | 30 |  |  | access_key_id = | 
            
                                                        
            
                                    
            
            
                | 31 |  |  | access_key_secret = bar | 
            
                                                        
            
                                    
            
            
                | 32 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 33 |  |  | [ecs] | 
            
                                                        
            
                                    
            
            
                | 34 |  |  | type = ecs_ram_role | 
            
                                                        
            
                                    
            
            
                | 35 |  |  | role_name = EcsRamRoleTest | 
            
                                                        
            
                                    
            
            
                | 36 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 37 |  |  | [noecs] | 
            
                                                        
            
                                    
            
            
                | 38 |  |  | type = ecs_ram_role | 
            
                                                        
            
                                    
            
            
                | 39 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 40 |  |  | [emptyecs] | 
            
                                                        
            
                                    
            
            
                | 41 |  |  | type = ecs_ram_role | 
            
                                                        
            
                                    
            
            
                | 42 |  |  | role_name = | 
            
                                                        
            
                                    
            
            
                | 43 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 44 |  |  | [ram] | 
            
                                                        
            
                                    
            
            
                | 45 |  |  | type = ram_role_arn | 
            
                                                        
            
                                    
            
            
                | 46 |  |  | access_key_id = foo | 
            
                                                        
            
                                    
            
            
                | 47 |  |  | access_key_secret = bar | 
            
                                                        
            
                                    
            
            
                | 48 |  |  | role_arn = role_arn | 
            
                                                        
            
                                    
            
            
                | 49 |  |  | role_session_name = session_name | 
            
                                                        
            
                                    
            
            
                | 50 |  |  | policy = {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"} | 
            
                                                        
            
                                    
            
            
                | 51 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 52 |  |  | [noram] | 
            
                                                        
            
                                    
            
            
                | 53 |  |  | type = ram_role_arn | 
            
                                                        
            
                                    
            
            
                | 54 |  |  | access_key_secret = bar | 
            
                                                        
            
                                    
            
            
                | 55 |  |  | role_arn = role_arn | 
            
                                                        
            
                                    
            
            
                | 56 |  |  | role_session_name = session_name | 
            
                                                        
            
                                    
            
            
                | 57 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 58 |  |  | [emptyram] | 
            
                                                        
            
                                    
            
            
                | 59 |  |  | type = ram_role_arn | 
            
                                                        
            
                                    
            
            
                | 60 |  |  | access_key_id = | 
            
                                                        
            
                                    
            
            
                | 61 |  |  | access_key_secret = bar | 
            
                                                        
            
                                    
            
            
                | 62 |  |  | role_arn = role_arn | 
            
                                                        
            
                                    
            
            
                | 63 |  |  | role_session_name = session_name | 
            
                                                        
            
                                    
            
            
                | 64 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 65 |  |  | [rsa] | 
            
                                                        
            
                                    
            
            
                | 66 |  |  | type = rsa_key_pair | 
            
                                                        
            
                                    
            
            
                | 67 |  |  | public_key_id = publicKeyId | 
            
                                                        
            
                                    
            
            
                | 68 |  |  | private_key_file = ./pk.pem | 
            
                                                        
            
                                    
            
            
                | 69 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 70 |  |  | [norsa] | 
            
                                                        
            
                                    
            
            
                | 71 |  |  | type = rsa_key_pair | 
            
                                                        
            
                                    
            
            
                | 72 |  |  | public_key_id = publicKeyId | 
            
                                                        
            
                                    
            
            
                | 73 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 74 |  |  | [emptyrsa] | 
            
                                                        
            
                                    
            
            
                | 75 |  |  | type = rsa_key_pair | 
            
                                                        
            
                                    
            
            
                | 76 |  |  | public_key_id = publicKeyId | 
            
                                                        
            
                                    
            
            
                | 77 |  |  | private_key_file = | 
            
                                                        
            
                                    
            
            
                | 78 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 79 |  |  | [error_rsa] | 
            
                                                        
            
                                    
            
            
                | 80 |  |  | type = rsa_key_pair | 
            
                                                        
            
                                    
            
            
                | 81 |  |  | public_key_id = publicKeyId | 
            
                                                        
            
                                    
            
            
                | 82 |  |  | private_key_file = ./pk_error.pem | 
            
                                                        
            
                                    
            
            
                | 83 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 84 |  |  | [error_type] | 
            
                                                        
            
                                    
            
            
                | 85 |  |  | type = error_type | 
            
                                                        
            
                                    
            
            
                | 86 |  |  | public_key_id = publicKeyId | 
            
                                                        
            
                                    
            
            
                | 87 |  |  | private_key_file = ./pk_error.pem | 
            
                                                        
            
                                    
            
            
                | 88 |  |  | ` | 
            
                                                        
            
                                    
            
            
                | 89 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 90 |  |  | func TestProfileCredentialsProviderBuilder(t *testing.T) { | 
            
                                                        
            
                                    
            
            
                | 91 |  |  | 	rollback := utils.Memory("ALIBABA_CLOUD_PROFILE") | 
            
                                                        
            
                                    
            
            
                | 92 |  |  | 	defer rollback() | 
            
                                                        
            
                                    
            
            
                | 93 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 94 |  |  | 	// profile name from specified | 
            
                                                        
            
                                    
            
            
                | 95 |  |  | 	provider, err := NewProfileCredentialsProviderBuilder().WithProfileName("custom").Build() | 
            
                                                        
            
                                    
            
            
                | 96 |  |  | 	assert.Nil(t, err) | 
            
                                                        
            
                                    
            
            
                | 97 |  |  | 	assert.Equal(t, "custom", provider.profileName) | 
            
                                                        
            
                                    
            
            
                | 98 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 99 |  |  | 	// profile name from env | 
            
                                                        
            
                                    
            
            
                | 100 |  |  | 	os.Setenv("ALIBABA_CLOUD_PROFILE", "profile_from_env") | 
            
                                                        
            
                                    
            
            
                | 101 |  |  | 	provider, err = NewProfileCredentialsProviderBuilder().Build() | 
            
                                                        
            
                                    
            
            
                | 102 |  |  | 	assert.Nil(t, err) | 
            
                                                        
            
                                    
            
            
                | 103 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 104 |  |  | 	assert.Equal(t, "profile_from_env", provider.profileName) | 
            
                                                        
            
                                    
            
            
                | 105 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 106 |  |  | 	// profile name from default | 
            
                                                        
            
                                    
            
            
                | 107 |  |  | 	os.Setenv("ALIBABA_CLOUD_PROFILE", "") | 
            
                                                        
            
                                    
            
            
                | 108 |  |  | 	provider, err = NewProfileCredentialsProviderBuilder().Build() | 
            
                                                        
            
                                    
            
            
                | 109 |  |  | 	assert.Nil(t, err) | 
            
                                                        
            
                                    
            
            
                | 110 |  |  | 	assert.Equal(t, "default", provider.profileName) | 
            
                                                        
            
                                    
            
            
                | 111 |  |  | } | 
            
                                                        
            
                                    
            
            
                | 112 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 113 |  |  | func TestProfileCredentialsProvider_getCredentialsProvider(t *testing.T) { | 
            
                                                        
            
                                    
            
            
                | 114 |  |  | 	provider, err := NewProfileCredentialsProviderBuilder().WithProfileName("custom").Build() | 
            
                                                        
            
                                    
            
            
                | 115 |  |  | 	assert.Nil(t, err) | 
            
                                                        
            
                                    
            
            
                | 116 |  |  | 	_, err = provider.getCredentialsProvider(ini.Empty()) | 
            
                                                        
            
                                    
            
            
                | 117 |  |  | 	assert.NotNil(t, err) | 
            
                                                        
            
                                    
            
            
                | 118 |  |  | 	assert.EqualError(t, err, "ERROR: Can not load sectionsection \"custom\" does not exist") | 
            
                                                        
            
                                    
            
            
                | 119 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 120 |  |  | 	file, err := ini.Load([]byte(inistr)) | 
            
                                                        
            
                                    
            
            
                | 121 |  |  | 	assert.Nil(t, err) | 
            
                                                        
            
                                    
            
            
                | 122 |  |  | 	assert.NotNil(t, file) | 
            
                                                        
            
                                    
            
            
                | 123 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 124 |  |  | 	// no type | 
            
                                                        
            
                                    
            
            
                | 125 |  |  | 	provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("notype").Build() | 
            
                                                        
            
                                    
            
            
                | 126 |  |  | 	assert.Nil(t, err) | 
            
                                                        
            
                                    
            
            
                | 127 |  |  | 	_, err = provider.getCredentialsProvider(file) | 
            
                                                        
            
                                    
            
            
                | 128 |  |  | 	assert.NotNil(t, err) | 
            
                                                        
            
                                    
            
            
                | 129 |  |  | 	assert.EqualError(t, err, "ERROR: Can not find credential typeerror when getting key of section \"notype\": key \"type\" not exists") | 
            
                                                        
            
                                    
            
            
                | 130 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 131 |  |  | 	// no ak | 
            
                                                        
            
                                    
            
            
                | 132 |  |  | 	provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("noak").Build() | 
            
                                                        
            
                                    
            
            
                | 133 |  |  | 	assert.Nil(t, err) | 
            
                                                        
            
                                    
            
            
                | 134 |  |  | 	_, err = provider.getCredentialsProvider(file) | 
            
                                                        
            
                                    
            
            
                | 135 |  |  | 	assert.NotNil(t, err) | 
            
                                                        
            
                                    
            
            
                | 136 |  |  | 	assert.EqualError(t, err, "ERROR: Failed to get value") | 
            
                                                        
            
                                    
            
            
                | 137 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 138 |  |  | 	// value is empty | 
            
                                                        
            
                                    
            
            
                | 139 |  |  | 	provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("emptyak").Build() | 
            
                                                        
            
                                    
            
            
                | 140 |  |  | 	assert.Nil(t, err) | 
            
                                                        
            
                                    
            
            
                | 141 |  |  | 	_, err = provider.getCredentialsProvider(file) | 
            
                                                        
            
                                    
            
            
                | 142 |  |  | 	assert.NotNil(t, err) | 
            
                                                        
            
                                    
            
            
                | 143 |  |  | 	assert.EqualError(t, err, "ERROR: Value can't be empty") | 
            
                                                        
            
                                    
            
            
                | 144 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 145 |  |  | 	// static ak provider | 
            
                                                        
            
                                    
            
            
                | 146 |  |  | 	provider, err = NewProfileCredentialsProviderBuilder().Build() | 
            
                                                        
            
                                    
            
            
                | 147 |  |  | 	assert.Nil(t, err) | 
            
                                                        
            
                                    
            
            
                | 148 |  |  | 	cp, err := provider.getCredentialsProvider(file) | 
            
                                                        
            
                                    
            
            
                | 149 |  |  | 	assert.Nil(t, err) | 
            
                                                        
            
                                    
            
            
                | 150 |  |  | 	akcp, ok := cp.(*StaticAKCredentialsProvider) | 
            
                                                        
            
                                    
            
            
                | 151 |  |  | 	assert.True(t, ok) | 
            
                                                        
            
                                    
            
            
                | 152 |  |  | 	cc, err := akcp.GetCredentials() | 
            
                                                        
            
                                    
            
            
                | 153 |  |  | 	assert.Nil(t, err) | 
            
                                                        
            
                                    
            
            
                | 154 |  |  | 	assert.Equal(t, &Credentials{AccessKeyId: "foo", AccessKeySecret: "bar", SecurityToken: "", ProviderName: "static_ak"}, cc) | 
            
                                                        
            
                                    
            
            
                | 155 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 156 |  |  | 	// ecs_ram_role without rolename | 
            
                                                        
            
                                    
            
            
                | 157 |  |  | 	provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("noecs").Build() | 
            
                                                        
            
                                    
            
            
                | 158 |  |  | 	assert.Nil(t, err) | 
            
                                                        
            
                                    
            
            
                | 159 |  |  | 	_, err = provider.getCredentialsProvider(file) | 
            
                                                        
            
                                    
            
            
                | 160 |  |  | 	assert.EqualError(t, err, "ERROR: Failed to get value") | 
            
                                                        
            
                                    
            
            
                | 161 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 162 |  |  | 	// ecs_ram_role with rolename | 
            
                                                        
            
                                    
            
            
                | 163 |  |  | 	provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("ecs").Build() | 
            
                                                        
            
                                    
            
            
                | 164 |  |  | 	assert.Nil(t, err) | 
            
                                                        
            
                                    
            
            
                | 165 |  |  | 	cp, err = provider.getCredentialsProvider(file) | 
            
                                                        
            
                                    
            
            
                | 166 |  |  | 	assert.Nil(t, err) | 
            
                                                        
            
                                    
            
            
                | 167 |  |  | 	_, ok = cp.(*ECSRAMRoleCredentialsProvider) | 
            
                                                        
            
                                    
            
            
                | 168 |  |  | 	assert.True(t, ok) | 
            
                                                        
            
                                    
            
            
                | 169 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 170 |  |  | 	// ram role arn without keys | 
            
                                                        
            
                                    
            
            
                | 171 |  |  | 	provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("noram").Build() | 
            
                                                        
            
                                    
            
            
                | 172 |  |  | 	assert.Nil(t, err) | 
            
                                                        
            
                                    
            
            
                | 173 |  |  | 	_, err = provider.getCredentialsProvider(file) | 
            
                                                        
            
                                    
            
            
                | 174 |  |  | 	assert.EqualError(t, err, "ERROR: Failed to get value") | 
            
                                                        
            
                                    
            
            
                | 175 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 176 |  |  | 	// ram role arn without values | 
            
                                                        
            
                                    
            
            
                | 177 |  |  | 	provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("emptyram").Build() | 
            
                                                        
            
                                    
            
            
                | 178 |  |  | 	assert.Nil(t, err) | 
            
                                                        
            
                                    
            
            
                | 179 |  |  | 	_, err = provider.getCredentialsProvider(file) | 
            
                                                        
            
                                    
            
            
                | 180 |  |  | 	assert.EqualError(t, err, "ERROR: Value can't be empty") | 
            
                                                        
            
                                    
            
            
                | 181 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 182 |  |  | 	// normal ram role arn | 
            
                                                        
            
                                    
            
            
                | 183 |  |  | 	provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("ram").Build() | 
            
                                                        
            
                                    
            
            
                | 184 |  |  | 	assert.Nil(t, err) | 
            
                                                        
            
                                    
            
            
                | 185 |  |  | 	cp, err = provider.getCredentialsProvider(file) | 
            
                                                        
            
                                    
            
            
                | 186 |  |  | 	assert.Nil(t, err) | 
            
                                                        
            
                                    
            
            
                | 187 |  |  | 	_, ok = cp.(*RAMRoleARNCredentialsProvider) | 
            
                                                        
            
                                    
            
            
                | 188 |  |  | 	assert.True(t, ok) | 
            
                                                        
            
                                    
            
            
                | 189 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 190 |  |  | 	// unsupported type | 
            
                                                        
            
                                    
            
            
                | 191 |  |  | 	provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("error_type").Build() | 
            
                                                        
            
                                    
            
            
                | 192 |  |  | 	assert.Nil(t, err) | 
            
                                                        
            
                                    
            
            
                | 193 |  |  | 	_, err = provider.getCredentialsProvider(file) | 
            
                                                        
            
                                    
            
            
                | 194 |  |  | 	assert.EqualError(t, err, "ERROR: Failed to get credential") | 
            
                                                        
            
                                    
            
            
                | 195 |  |  | } | 
            
                                                        
            
                                    
            
            
                | 196 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 197 |  |  | func TestProfileCredentialsProviderGetCredentials(t *testing.T) { | 
            
                                                        
            
                                    
            
            
                | 198 |  |  | 	rollback := utils.Memory("ALIBABA_CLOUD_CREDENTIALS_FILE") | 
            
                                                        
            
                                    
            
            
                | 199 |  |  | 	defer func() { | 
            
                                                        
            
                                    
            
            
                | 200 |  |  | 		getHomePath = utils.GetHomePath | 
            
                                                        
            
                                    
            
            
                | 201 |  |  | 		rollback() | 
            
                                                        
            
                                    
            
            
                | 202 |  |  | 	}() | 
            
                                                        
            
                                    
            
            
                | 203 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 204 |  |  | 	// testcase: empty home | 
            
                                                        
            
                                    
            
            
                | 205 |  |  | 	getHomePath = func() string { | 
            
                                                        
            
                                    
            
            
                | 206 |  |  | 		return "" | 
            
                                                        
            
                                    
            
            
                | 207 |  |  | 	} | 
            
                                                        
            
                                    
            
            
                | 208 |  |  | 	provider, err := NewProfileCredentialsProviderBuilder().WithProfileName("custom").Build() | 
            
                                                        
            
                                    
            
            
                | 209 |  |  | 	assert.Nil(t, err) | 
            
                                                        
            
                                    
            
            
                | 210 |  |  | 	_, err = provider.GetCredentials() | 
            
                                                        
            
                                    
            
            
                | 211 |  |  | 	assert.EqualError(t, err, "cannot found home dir") | 
            
                                                        
            
                                    
            
            
                | 212 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 213 |  |  | 	// testcase: invalid home | 
            
                                                        
            
                                    
            
            
                | 214 |  |  | 	getHomePath = func() string { | 
            
                                                        
            
                                    
            
            
                | 215 |  |  | 		return "/path/invalid/home/dir" | 
            
                                                        
            
                                    
            
            
                | 216 |  |  | 	} | 
            
                                                        
            
                                    
            
            
                | 217 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 218 |  |  | 	provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("custom").Build() | 
            
                                                        
            
                                    
            
            
                | 219 |  |  | 	assert.Nil(t, err) | 
            
                                                        
            
                                    
            
            
                | 220 |  |  | 	_, err = provider.GetCredentials() | 
            
                                                        
            
                                    
            
            
                | 221 |  |  | 	assert.EqualError(t, err, "ERROR: Can not open fileopen /path/invalid/home/dir/.alibabacloud/credentials: no such file or directory") | 
            
                                                        
            
                                    
            
            
                | 222 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 223 |  |  | 	// testcase: specify credentials file with env | 
            
                                                        
            
                                    
            
            
                | 224 |  |  | 	os.Setenv("ALIBABA_CLOUD_CREDENTIALS_FILE", "/path/to/credentials.invalid") | 
            
                                                        
            
                                    
            
            
                | 225 |  |  | 	provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("custom").Build() | 
            
                                                        
            
                                    
            
            
                | 226 |  |  | 	assert.Nil(t, err) | 
            
                                                        
            
                                    
            
            
                | 227 |  |  | 	_, err = provider.GetCredentials() | 
            
                                                        
            
                                    
            
            
                | 228 |  |  | 	assert.EqualError(t, err, "ERROR: Can not open fileopen /path/to/credentials.invalid: no such file or directory") | 
            
                                                        
            
                                    
            
            
                | 229 |  |  | 	os.Unsetenv("ALIBABA_CLOUD_CREDENTIALS_FILE") | 
            
                                                        
            
                                    
            
            
                | 230 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 231 |  |  | 	// get from credentials file | 
            
                                                        
            
                                    
            
            
                | 232 |  |  | 	getHomePath = func() string { | 
            
                                                        
            
                                    
            
            
                | 233 |  |  | 		wd, _ := os.Getwd() | 
            
                                                        
            
                                    
            
            
                | 234 |  |  | 		return path.Join(wd, "fixtures") | 
            
                                                        
            
                                    
            
            
                | 235 |  |  | 	} | 
            
                                                        
            
                                    
            
            
                | 236 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 237 |  |  | 	provider, err = NewProfileCredentialsProviderBuilder().WithProfileName("custom").Build() | 
            
                                                        
            
                                    
            
            
                | 238 |  |  | 	assert.Nil(t, err) | 
            
                                                        
            
                                    
            
            
                | 239 |  |  | 	_, err = provider.GetCredentials() | 
            
                                                        
            
                                    
            
            
                | 240 |  |  | 	assert.EqualError(t, err, "ERROR: Can not load sectionsection \"custom\" does not exist") | 
            
                                                        
            
                                    
            
            
                | 241 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 242 |  |  | 	provider, err = NewProfileCredentialsProviderBuilder().Build() | 
            
                                                        
            
                                    
            
            
                | 243 |  |  | 	assert.Nil(t, err) | 
            
                                                        
            
                                    
            
            
                | 244 |  |  | 	cc, err := provider.GetCredentials() | 
            
                                                        
            
                                    
            
            
                | 245 |  |  | 	assert.Nil(t, err) | 
            
                                                        
            
                                    
            
            
                | 246 |  |  | 	assert.Equal(t, &Credentials{AccessKeyId: "foo", AccessKeySecret: "bar", SecurityToken: "", ProviderName: "profile/static_ak"}, cc) | 
            
                                                        
            
                                    
            
            
                | 247 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 248 |  |  | 	// get credentials again | 
            
                                                        
            
                                    
            
            
                | 249 |  |  | 	cc, err = provider.GetCredentials() | 
            
                                                        
            
                                    
            
            
                | 250 |  |  | 	assert.Nil(t, err) | 
            
                                                        
            
                                    
            
            
                | 251 |  |  | 	assert.Equal(t, &Credentials{AccessKeyId: "foo", AccessKeySecret: "bar", SecurityToken: "", ProviderName: "profile/static_ak"}, cc) | 
            
                                                        
            
                                    
            
            
                | 252 |  |  | } | 
            
                                                        
            
                                    
            
            
                | 253 |  |  |  |