File: errors_test.go

package info (click to toggle)
packer 1.6.6%2Bds2-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 33,156 kB
  • sloc: sh: 1,154; python: 619; makefile: 251; ruby: 205; xml: 97
file content (70 lines) | stat: -rw-r--r-- 2,515 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package common

import (
	"fmt"
	"strings"
	"testing"

	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/service/sts"

	"github.com/aws/aws-sdk-go/aws/awserr"
)

type mockSTS struct {
}

func (m *mockSTS) DecodeAuthorizationMessage(input *sts.DecodeAuthorizationMessageInput) (*sts.DecodeAuthorizationMessageOutput, error) {
	return &sts.DecodeAuthorizationMessageOutput{
		DecodedMessage: aws.String(`{
			"allowed": false,
			"explicitDeny": true,
			"matchedStatements": {}
		}`),
	}, nil
}

func TestErrorsParsing_RequestFailure(t *testing.T) {

	ae := awserr.New("UnauthorizedOperation",
		`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`,
		fmt.Errorf("You can't do it!!"))
	rf := awserr.NewRequestFailure(ae, 400, "abc-def-123-456")

	result := decodeAWSError(&mockSTS{}, rf)
	if result == nil {
		t.Error("Expected resulting error")
	}
	if !strings.Contains(result.Error(), "Authorization failure message:") {
		t.Error("Expected authorization failure message")
	}
}

func TestErrorsParsing_NonAuthorizationFailure(t *testing.T) {

	ae := awserr.New("BadRequest",
		`You did something wrong. Try again`,
		fmt.Errorf("Request was no good."))
	rf := awserr.NewRequestFailure(ae, 400, "abc-def-123-456")

	result := decodeAWSError(&mockSTS{}, rf)
	if result == nil {
		t.Error("Expected resulting error")
	}
	if result != rf {
		t.Error("Expected original error to be returned unchanged")
	}
}

func TestErrorsParsing_NonAWSError(t *testing.T) {

	err := fmt.Errorf("Random error occurred")

	result := decodeAWSError(&mockSTS{}, err)
	if result == nil {
		t.Error("Expected resulting error")
	}
	if result != err {
		t.Error("Expected original error to be returned unchanged")
	}
}