github.phpd.cn/hashicorp/packer@v1.3.2/builder/amazon/common/errors_test.go (about) 1 package common 2 3 import ( 4 "fmt" 5 "strings" 6 "testing" 7 8 "github.com/aws/aws-sdk-go/aws" 9 "github.com/aws/aws-sdk-go/service/sts" 10 11 "github.com/aws/aws-sdk-go/aws/awserr" 12 ) 13 14 type mockSTS struct { 15 } 16 17 func (m *mockSTS) DecodeAuthorizationMessage(input *sts.DecodeAuthorizationMessageInput) (*sts.DecodeAuthorizationMessageOutput, error) { 18 return &sts.DecodeAuthorizationMessageOutput{ 19 DecodedMessage: aws.String(`{ 20 "allowed": false, 21 "explicitDeny": true, 22 "matchedStatements": {} 23 }`), 24 }, nil 25 } 26 27 func TestErrorsParsing_RequestFailure(t *testing.T) { 28 29 ae := awserr.New("UnauthorizedOperation", 30 `You are not authorized to perform this operation. Encoded authorization failure message: D9Q7oicjOMr9l2CC-NPP1FiZXK9Ijia1k-3l0siBFCcrK3oSuMFMkBIO5TNj0HdXE-WfwnAcdycFOohfKroNO6toPJEns8RFVfy_M_IjNGmrEFJ6E62pnmBW0OLrMsXxR9FQE4gB4gJzSM0AD6cV6S3FOfqYzWBRX-sQdOT4HryGkFNRoFBr9Xbp-tRwiadwkbdHdfnV9fbRkXmnwCdULml16NBSofC4ZPepLMKmIB5rKjwk-m179UUh2XA-J5no0si6XcRo5GbHQB5QfCIwSHL4vsro2wLZUd16-8OWKyr3tVlTbQe0ERZskqRqRQ5E28QuiBCVV6XstUyo-T4lBSr75Fgnyr3wCO-dS3b_5Ns3WzA2JD4E2AJOAStXIU8IH5YuKkAg7C-dJMuBMPpmKCBEXhNoHDwCyOo5PsV3xMlc0jSb0qYGpfst_TDDtejcZfn7NssUjxVq9qkdH-OXz2gPoQB-hX8ycmZCL5UZwKc3TCLUr7TGnudHjmnMrE9cUo-yTCWfyHPLprhiYhTCKW18EikJ0O1EKI3FJ_b4F19_jFBPARjSwQc7Ut6MNCVzrPdZGYSF6acj5gPaxdy9uSkVQwWXK7Pd5MFP7EBDE1_DgYbzodgwDO2PXeVFUbSLBHKWo_ebZS9ZX2nYPcGss_sYaly0ZVSIJXp7G58B5BoFVhvVH6jYnF9XiAOjMltuP_ycu1pQP1lki500RY3baLvfeYeAsB38XZHKEgWZzq7Fei-uh89q0cjJTmlVyrfRU3q6`, 31 fmt.Errorf("You can't do it!!")) 32 rf := awserr.NewRequestFailure(ae, 400, "abc-def-123-456") 33 34 result := decodeAWSError(&mockSTS{}, rf) 35 if result == nil { 36 t.Error("Expected resulting error") 37 } 38 if !strings.Contains(result.Error(), "Authorization failure message:") { 39 t.Error("Expected authorization failure message") 40 } 41 } 42 43 func TestErrorsParsing_NonAuthorizationFailure(t *testing.T) { 44 45 ae := awserr.New("BadRequest", 46 `You did something wrong. Try again`, 47 fmt.Errorf("Request was no good.")) 48 rf := awserr.NewRequestFailure(ae, 400, "abc-def-123-456") 49 50 result := decodeAWSError(&mockSTS{}, rf) 51 if result == nil { 52 t.Error("Expected resulting error") 53 } 54 if result != rf { 55 t.Error("Expected original error to be returned unchanged") 56 } 57 } 58 59 func TestErrorsParsing_NonAWSError(t *testing.T) { 60 61 err := fmt.Errorf("Random error occurred") 62 63 result := decodeAWSError(&mockSTS{}, err) 64 if result == nil { 65 t.Error("Expected resulting error") 66 } 67 if result != err { 68 t.Error("Expected original error to be returned unchanged") 69 } 70 }