github.com/aavshr/aws-sdk-go@v1.41.3/internal/s3shared/arn/accesspoint_arn_test.go (about) 1 //go:build go1.7 2 // +build go1.7 3 4 package arn 5 6 import ( 7 "reflect" 8 "strings" 9 "testing" 10 11 "github.com/aavshr/aws-sdk-go/aws/arn" 12 ) 13 14 func TestParseAccessPointResource(t *testing.T) { 15 cases := map[string]struct { 16 ARN arn.ARN 17 ExpectErr string 18 ExpectARN AccessPointARN 19 }{ 20 "region not set": { 21 ARN: arn.ARN{ 22 Partition: "aws", 23 Service: "s3", 24 AccountID: "012345678901", 25 Resource: "accesspoint/myendpoint", 26 }, 27 ExpectErr: "region not set", 28 }, 29 "account-id not set": { 30 ARN: arn.ARN{ 31 Partition: "aws", 32 Service: "s3", 33 Region: "us-west-2", 34 Resource: "accesspoint/myendpoint", 35 }, 36 ExpectErr: "account-id not set", 37 }, 38 "resource-id not set": { 39 ARN: arn.ARN{ 40 Partition: "aws", 41 Service: "s3", 42 Region: "us-west-2", 43 AccountID: "012345678901", 44 Resource: "accesspoint", 45 }, 46 ExpectErr: "resource-id not set", 47 }, 48 "resource-id empty": { 49 ARN: arn.ARN{ 50 Partition: "aws", 51 Service: "s3", 52 Region: "us-west-2", 53 AccountID: "012345678901", 54 Resource: "accesspoint:", 55 }, 56 ExpectErr: "resource-id not set", 57 }, 58 "resource not supported": { 59 ARN: arn.ARN{ 60 Partition: "aws", 61 Service: "s3", 62 Region: "us-west-2", 63 AccountID: "012345678901", 64 Resource: "accesspoint/endpoint/object/key", 65 }, 66 ExpectErr: "sub resource not supported", 67 }, 68 "valid resource-id": { 69 ARN: arn.ARN{ 70 Partition: "aws", 71 Service: "s3", 72 Region: "us-west-2", 73 AccountID: "012345678901", 74 Resource: "accesspoint/endpoint", 75 }, 76 ExpectARN: AccessPointARN{ 77 ARN: arn.ARN{ 78 Partition: "aws", 79 Service: "s3", 80 Region: "us-west-2", 81 AccountID: "012345678901", 82 Resource: "accesspoint/endpoint", 83 }, 84 AccessPointName: "endpoint", 85 }, 86 }, 87 } 88 89 for name, c := range cases { 90 t.Run(name, func(t *testing.T) { 91 resParts := SplitResource(c.ARN.Resource) 92 a, err := ParseAccessPointResource(c.ARN, resParts[1:]) 93 94 if len(c.ExpectErr) == 0 && err != nil { 95 t.Fatalf("expect no error but got %v", err) 96 } else if len(c.ExpectErr) != 0 && err == nil { 97 t.Fatalf("expect error %q, but got nil", c.ExpectErr) 98 } else if len(c.ExpectErr) != 0 && err != nil { 99 if e, a := c.ExpectErr, err.Error(); !strings.Contains(a, e) { 100 t.Fatalf("expect error %q, got %q", e, a) 101 } 102 return 103 } 104 105 if e, a := c.ExpectARN, a; !reflect.DeepEqual(e, a) { 106 t.Errorf("expect %v, got %v", e, a) 107 } 108 }) 109 } 110 }