@@ -31,6 +31,7 @@ public void arnWithBasicResource_ParsesCorrectly() {
3131 assertThat (arn .region ()).hasValue ("us-east-1" );
3232 assertThat (arn .accountId ()).hasValue ("12345678910" );
3333 assertThat (arn .resourceAsString ()).isEqualTo ("myresource" );
34+ System .out .println (arn .resource ());
3435 }
3536
3637 @ Test
@@ -64,6 +65,14 @@ public void arnWithResourceTypeAndResource_ParsesCorrectly() {
6465 assertThat (arn .service ()).isEqualTo ("s3" );
6566 assertThat (arn .region ()).hasValue ("us-east-1" );
6667 assertThat (arn .resourceAsString ()).isEqualTo ("bucket:foobar" );
68+
69+ verifyArnResource (arn .resource ());
70+ }
71+
72+ private void verifyArnResource (ArnResource arnResource ) {
73+ assertThat (arnResource .resource ()).isEqualTo ("foobar" );
74+ assertThat (arnResource .resourceType ()).isPresent ();
75+ assertThat (arnResource .resourceType ().get ()).isEqualTo ("bucket" );
6776 }
6877
6978 @ Test
@@ -74,6 +83,12 @@ public void arnWithResourceTypeAndResourceAndQualifier_ParsesCorrectly() {
7483 assertThat (arn .service ()).isEqualTo ("s3" );
7584 assertThat (arn .region ()).hasValue ("us-east-1" );
7685 assertThat (arn .resourceAsString ()).isEqualTo ("bucket:foobar:1" );
86+
87+
88+ ArnResource arnResource = arn .resource ();
89+ verifyArnResource (arnResource );
90+ assertThat (arnResource .qualifier ()).isPresent ();
91+ assertThat (arnResource .qualifier ().get ()).isEqualTo ("1" );
7792 }
7893
7994 @ Test
@@ -84,7 +99,20 @@ public void arnWithResourceTypeAndResource_SlashSplitter_ParsesCorrectly() {
8499 assertThat (arn .service ()).isEqualTo ("s3" );
85100 assertThat (arn .region ()).hasValue ("us-east-1" );
86101 assertThat (arn .resourceAsString ()).isEqualTo ("bucket/foobar" );
87- }
102+ verifyArnResource (arn .resource ());
103+ }
104+
105+ @ Test
106+ public void arnWithResourceTypeAndResourceAndQualifier_SlashSplitter_ParsesCorrectly () {
107+ String arnString = "arn:aws:s3:us-east-1:12345678910:bucket/foobar/1" ;
108+ Arn arn = Arn .fromString (arnString );
109+ assertThat (arn .partition ()).isEqualTo ("aws" );
110+ assertThat (arn .service ()).isEqualTo ("s3" );
111+ assertThat (arn .region ()).hasValue ("us-east-1" );
112+ assertThat (arn .resourceAsString ()).isEqualTo ("bucket/foobar/1" );
113+ verifyArnResource (arn .resource ());
114+ assertThat (arn .resource ().qualifier ().get ()).isEqualTo ("1" );
115+ }
88116
89117 @ Test
90118 public void oneArnEqualsEquivalentArn () {
@@ -110,6 +138,30 @@ public void arnFromBuilder_ParsesCorrectly() {
110138 assertThat (arn .region ()).hasValue ("us-east-1" );
111139 assertThat (arn .accountId ()).hasValue ("123456789012" );
112140 assertThat (arn .resourceAsString ()).isEqualTo ("bucket:foobar:1" );
141+ verifyArnResource (arn .resource ());
142+ assertThat (arn .resource ().qualifier ()).isPresent ();
143+ assertThat (arn .resource ().qualifier ().get ()).isEqualTo ("1" );
144+ }
145+
146+ @ Test
147+ public void arnResourceWithColonAndSlash_ParsesOnFirstSplitter () {
148+ String resourceWithColonAndSlash = "object:foobar/myobjectname:1" ;
149+ Arn arn = Arn .builder ()
150+ .partition ("aws" )
151+ .service ("s3" )
152+ .region ("us-east-1" )
153+ .accountId ("123456789012" )
154+ .resource (resourceWithColonAndSlash )
155+ .build ();
156+ assertThat (arn .partition ()).isEqualTo ("aws" );
157+ assertThat (arn .service ()).isEqualTo ("s3" );
158+ assertThat (arn .region ()).hasValue ("us-east-1" );
159+ assertThat (arn .accountId ()).hasValue ("123456789012" );
160+ assertThat (arn .resourceAsString ()).isEqualTo (resourceWithColonAndSlash );
161+
162+ assertThat (arn .resource ().resource ()).isEqualTo ("foobar/myobjectname" );
163+ assertThat (arn .resource ().qualifier ()).hasValue ("1" );
164+ assertThat (arn .resource ().resourceType ()).hasValue ("object" );
113165 }
114166
115167 @ Test
@@ -134,6 +186,17 @@ public void arnWithoutAccountId_ParsesCorrectly() {
134186 assertThat (arn .resourceAsString ()).isEqualTo ("myresource" );
135187 }
136188
189+ @ Test
190+ public void arnResourceContainingDots_ParsesCorrectly () {
191+ String arnString = "arn:aws:s3:us-east-1:12345678910:myresource:foobar.1" ;
192+ Arn arn = Arn .fromString (arnString );
193+ assertThat (arn .partition ()).isEqualTo ("aws" );
194+ assertThat (arn .service ()).isEqualTo ("s3" );
195+ assertThat (arn .region ()).hasValue ("us-east-1" );
196+ assertThat (arn .accountId ()).hasValue ("12345678910" );
197+ assertThat (arn .resourceAsString ()).isEqualTo ("myresource:foobar.1" );
198+ }
199+
137200 @ Test
138201 public void toBuilder () {
139202 Arn oneArn = Arn .builder ()
0 commit comments