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  }