2525import com .google .auth .oauth2 .AccessToken ;
2626import java .time .Instant ;
2727import java .time .temporal .ChronoUnit ;
28+ import java .util .Map ;
29+ import org .apache .iceberg .CatalogProperties ;
2830import org .apache .iceberg .exceptions .BadRequestException ;
2931import org .apache .iceberg .exceptions .RESTException ;
3032import org .apache .iceberg .gcp .GCPProperties ;
4547
4648public class OAuth2RefreshCredentialsHandlerTest {
4749 private static final int PORT = 3333 ;
48- private static final String URI = String .format ("http://127.0.0.1:%d/v1/credentials" , PORT );
50+ private static final String CREDENTIALS_URI =
51+ String .format ("http://127.0.0.1:%d/v1/credentials" , PORT );
52+ private static final String CATALOG_URI = String .format ("http://127.0.0.1:%d/v1/" , PORT );
53+ private static final Map <String , String > PROPERTIES =
54+ ImmutableMap .of (
55+ GCPProperties .GCS_OAUTH2_REFRESH_CREDENTIALS_ENDPOINT ,
56+ CREDENTIALS_URI ,
57+ CatalogProperties .URI ,
58+ CATALOG_URI );
4959 private static ClientAndServer mockServer ;
5060
5161 @ BeforeAll
@@ -65,18 +75,33 @@ public void before() {
6575
6676 @ Test
6777 public void invalidOrMissingUri () {
68- assertThatThrownBy (() -> OAuth2RefreshCredentialsHandler .create (ImmutableMap .of ()))
78+ assertThatThrownBy (
79+ () ->
80+ OAuth2RefreshCredentialsHandler .create (
81+ ImmutableMap .of (CatalogProperties .URI , CATALOG_URI )))
6982 .isInstanceOf (IllegalArgumentException .class )
7083 .hasMessage ("Invalid credentials endpoint: null" );
7184
85+ assertThatThrownBy (
86+ () ->
87+ OAuth2RefreshCredentialsHandler .create (
88+ ImmutableMap .of (
89+ GCPProperties .GCS_OAUTH2_REFRESH_CREDENTIALS_ENDPOINT , CREDENTIALS_URI )))
90+ .isInstanceOf (IllegalArgumentException .class )
91+ .hasMessage ("Invalid catalog endpoint: null" );
92+
7293 assertThatThrownBy (
7394 () ->
7495 OAuth2RefreshCredentialsHandler .create (
7596 ImmutableMap .of (
76- GCPProperties .GCS_OAUTH2_REFRESH_CREDENTIALS_ENDPOINT , "invalid uri" ))
97+ GCPProperties .GCS_OAUTH2_REFRESH_CREDENTIALS_ENDPOINT ,
98+ "invalid uri" ,
99+ CatalogProperties .URI ,
100+ CATALOG_URI ))
77101 .refreshAccessToken ())
78102 .isInstanceOf (RESTException .class )
79- .hasMessageStartingWith ("Failed to create request URI from base invalid uri" );
103+ .hasMessageStartingWith (
104+ "Failed to create request URI from base %sinvalid uri" , CATALOG_URI );
80105 }
81106
82107 @ Test
@@ -87,9 +112,7 @@ public void badRequest() {
87112 HttpResponse mockResponse = HttpResponse .response ().withStatusCode (400 );
88113 mockServer .when (mockRequest ).respond (mockResponse );
89114
90- OAuth2RefreshCredentialsHandler handler =
91- OAuth2RefreshCredentialsHandler .create (
92- ImmutableMap .of (GCPProperties .GCS_OAUTH2_REFRESH_CREDENTIALS_ENDPOINT , URI ));
115+ OAuth2RefreshCredentialsHandler handler = OAuth2RefreshCredentialsHandler .create (PROPERTIES );
93116
94117 assertThatThrownBy (handler ::refreshAccessToken )
95118 .isInstanceOf (BadRequestException .class )
@@ -108,9 +131,7 @@ public void noGcsCredentialInResponse() {
108131 .withStatusCode (200 );
109132 mockServer .when (mockRequest ).respond (mockResponse );
110133
111- OAuth2RefreshCredentialsHandler handler =
112- OAuth2RefreshCredentialsHandler .create (
113- ImmutableMap .of (GCPProperties .GCS_OAUTH2_REFRESH_CREDENTIALS_ENDPOINT , URI ));
134+ OAuth2RefreshCredentialsHandler handler = OAuth2RefreshCredentialsHandler .create (PROPERTIES );
114135
115136 assertThatThrownBy (handler ::refreshAccessToken )
116137 .isInstanceOf (IllegalStateException .class )
@@ -134,9 +155,7 @@ public void noGcsToken() {
134155 .withStatusCode (200 );
135156 mockServer .when (mockRequest ).respond (mockResponse );
136157
137- OAuth2RefreshCredentialsHandler handler =
138- OAuth2RefreshCredentialsHandler .create (
139- ImmutableMap .of (GCPProperties .GCS_OAUTH2_REFRESH_CREDENTIALS_ENDPOINT , URI ));
158+ OAuth2RefreshCredentialsHandler handler = OAuth2RefreshCredentialsHandler .create (PROPERTIES );
140159
141160 assertThatThrownBy (handler ::refreshAccessToken )
142161 .isInstanceOf (IllegalStateException .class )
@@ -160,9 +179,7 @@ public void tokenWithoutExpiration() {
160179 .withStatusCode (200 );
161180 mockServer .when (mockRequest ).respond (mockResponse );
162181
163- OAuth2RefreshCredentialsHandler handler =
164- OAuth2RefreshCredentialsHandler .create (
165- ImmutableMap .of (GCPProperties .GCS_OAUTH2_REFRESH_CREDENTIALS_ENDPOINT , URI ));
182+ OAuth2RefreshCredentialsHandler handler = OAuth2RefreshCredentialsHandler .create (PROPERTIES );
166183
167184 assertThatThrownBy (handler ::refreshAccessToken )
168185 .isInstanceOf (IllegalStateException .class )
@@ -191,9 +208,7 @@ public void tokenWithExpiration() {
191208 .withStatusCode (200 );
192209 mockServer .when (mockRequest ).respond (mockResponse );
193210
194- OAuth2RefreshCredentialsHandler handler =
195- OAuth2RefreshCredentialsHandler .create (
196- ImmutableMap .of (GCPProperties .GCS_OAUTH2_REFRESH_CREDENTIALS_ENDPOINT , URI ));
211+ OAuth2RefreshCredentialsHandler handler = OAuth2RefreshCredentialsHandler .create (PROPERTIES );
197212
198213 AccessToken accessToken = handler .refreshAccessToken ();
199214 assertThat (accessToken .getTokenValue ())
@@ -253,9 +268,7 @@ public void multipleGcsCredentials() {
253268 .withStatusCode (200 );
254269 mockServer .when (mockRequest ).respond (mockResponse );
255270
256- OAuth2RefreshCredentialsHandler handler =
257- OAuth2RefreshCredentialsHandler .create (
258- ImmutableMap .of (GCPProperties .GCS_OAUTH2_REFRESH_CREDENTIALS_ENDPOINT , URI ));
271+ OAuth2RefreshCredentialsHandler handler = OAuth2RefreshCredentialsHandler .create (PROPERTIES );
259272
260273 assertThatThrownBy (handler ::refreshAccessToken )
261274 .isInstanceOf (IllegalStateException .class )
0 commit comments