@@ -31,6 +31,7 @@ public void arnWithBasicResource_ParsesCorrectly() {
31
31
assertThat (arn .region ()).hasValue ("us-east-1" );
32
32
assertThat (arn .accountId ()).hasValue ("12345678910" );
33
33
assertThat (arn .resourceAsString ()).isEqualTo ("myresource" );
34
+ System .out .println (arn .resource ());
34
35
}
35
36
36
37
@ Test
@@ -64,6 +65,14 @@ public void arnWithResourceTypeAndResource_ParsesCorrectly() {
64
65
assertThat (arn .service ()).isEqualTo ("s3" );
65
66
assertThat (arn .region ()).hasValue ("us-east-1" );
66
67
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" );
67
76
}
68
77
69
78
@ Test
@@ -74,6 +83,12 @@ public void arnWithResourceTypeAndResourceAndQualifier_ParsesCorrectly() {
74
83
assertThat (arn .service ()).isEqualTo ("s3" );
75
84
assertThat (arn .region ()).hasValue ("us-east-1" );
76
85
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" );
77
92
}
78
93
79
94
@ Test
@@ -84,7 +99,20 @@ public void arnWithResourceTypeAndResource_SlashSplitter_ParsesCorrectly() {
84
99
assertThat (arn .service ()).isEqualTo ("s3" );
85
100
assertThat (arn .region ()).hasValue ("us-east-1" );
86
101
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
+ }
88
116
89
117
@ Test
90
118
public void oneArnEqualsEquivalentArn () {
@@ -110,6 +138,30 @@ public void arnFromBuilder_ParsesCorrectly() {
110
138
assertThat (arn .region ()).hasValue ("us-east-1" );
111
139
assertThat (arn .accountId ()).hasValue ("123456789012" );
112
140
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" );
113
165
}
114
166
115
167
@ Test
@@ -134,6 +186,17 @@ public void arnWithoutAccountId_ParsesCorrectly() {
134
186
assertThat (arn .resourceAsString ()).isEqualTo ("myresource" );
135
187
}
136
188
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
+
137
200
@ Test
138
201
public void toBuilder () {
139
202
Arn oneArn = Arn .builder ()
0 commit comments