github.com/aliyun/credentials-go@v1.4.7/credentials/instance_provider_test.go (about) 1 package credentials 2 3 import ( 4 "os" 5 "testing" 6 7 "github.com/alibabacloud-go/tea/tea" 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func TestInstanceCredentialsProvider(t *testing.T) { 12 p := newInstanceCredentialsProvider() 13 originEcsMetadata := os.Getenv(ENVEcsMetadata) 14 os.Setenv(ENVEcsMetadata, "") 15 defer func() { 16 os.Setenv(ENVEcsMetadata, originEcsMetadata) 17 }() 18 c, err := p.resolve() 19 assert.NotNil(t, c) 20 assert.Nil(t, err) 21 22 os.Setenv(ENVEcsMetadata, "role_name") 23 c, err = p.resolve() 24 assert.Nil(t, err) 25 assert.Equal(t, "role_name", tea.StringValue(c.RoleName)) 26 assert.Equal(t, "ecs_ram_role", tea.StringValue(c.Type)) 27 28 os.Setenv(ENVEcsMetadataIMDSv2Enable, "1") 29 c, err = p.resolve() 30 assert.Nil(t, err) 31 assert.Equal(t, "role_name", tea.StringValue(c.RoleName)) 32 assert.Equal(t, "ecs_ram_role", tea.StringValue(c.Type)) 33 34 os.Setenv(ENVEcsMetadataIMDSv2Enable, "1") 35 c, err = p.resolve() 36 assert.Nil(t, err) 37 assert.Equal(t, "role_name", tea.StringValue(c.RoleName)) 38 assert.Equal(t, "ecs_ram_role", tea.StringValue(c.Type)) 39 assert.False(t, tea.BoolValue(c.EnableIMDSv2)) 40 41 os.Setenv(ENVEcsMetadataIMDSv2Enable, "false") 42 c, err = p.resolve() 43 assert.Nil(t, err) 44 assert.Equal(t, "role_name", tea.StringValue(c.RoleName)) 45 assert.Equal(t, "ecs_ram_role", tea.StringValue(c.Type)) 46 assert.False(t, tea.BoolValue(c.EnableIMDSv2)) 47 48 os.Setenv(ENVEcsMetadataIMDSv2Enable, "true") 49 c, err = p.resolve() 50 assert.Nil(t, err) 51 assert.Equal(t, "role_name", tea.StringValue(c.RoleName)) 52 assert.Equal(t, "ecs_ram_role", tea.StringValue(c.Type)) 53 assert.True(t, tea.BoolValue(c.EnableIMDSv2)) 54 55 os.Unsetenv(ENVEcsMetadata) 56 c, err = p.resolve() 57 assert.Nil(t, c) 58 assert.Nil(t, err) 59 }