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  }