diff --git a/changelog.md b/changelog.md
index 940c5d48..6b536a67 100644
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,11 @@
# Changelog
+## v1.4.4
+
+### Sept 04, 2024
+
+- Early access header tests
+
## v1.4.3
### July 08, 2024
diff --git a/pom.xml b/pom.xml
index cb50d2f0..fc1aae58 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
cms
jar
contentstack-management-java
- 1.4.3
+ 1.4.4
Contentstack Java Management SDK for Content Management API, Contentstack is a headless CMS with an
API-first approach
@@ -91,11 +91,11 @@
3.1.8
2.10.0
2.10.0
- 5.0.0-alpha.12
+ 4.12.0
0.8.7
1.18.32
5.10.1
- 5.8.0-M1
+ 5.10.1
2.10.1
3.3
1.5
@@ -132,9 +132,20 @@
com.squareup.okhttp3
logging-interceptor
- ${logging.version}
+ ${okhttp.version}
compile
+
+ com.squareup.okhttp3
+ okhttp
+ ${okhttp.version}
+
+
+ com.squareup.okhttp3
+ mockwebserver
+ ${okhttp.version}
+ test
+
org.jetbrains
annotations
diff --git a/src/test/java/com/contentstack/cms/ContentstackUnitTest.java b/src/test/java/com/contentstack/cms/ContentstackUnitTest.java
index eaca866e..6386cf22 100644
--- a/src/test/java/com/contentstack/cms/ContentstackUnitTest.java
+++ b/src/test/java/com/contentstack/cms/ContentstackUnitTest.java
@@ -1,9 +1,15 @@
package com.contentstack.cms;
+import com.contentstack.cms.core.AuthInterceptor;
import com.contentstack.cms.organization.Organization;
import com.contentstack.cms.stack.Stack;
import okhttp3.Headers;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
import okhttp3.ResponseBody;
+import okhttp3.mockwebserver.MockResponse;
+import okhttp3.mockwebserver.MockWebServer;
+import okhttp3.mockwebserver.RecordedRequest;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import retrofit2.Response;
@@ -262,5 +268,66 @@ public void testEmptyOrganizationUid() {
Assertions.assertThrows(IllegalStateException.class, () -> client.organization(emptyOrganizationUid));
}
+ @Test
+ public void testEarlyAccessHeader() throws IOException, InterruptedException {
+ MockWebServer mockWebServer = new MockWebServer();
+ mockWebServer.enqueue(new MockResponse().setBody("{}"));
+
+ AuthInterceptor authInterceptor = new AuthInterceptor();
+ authInterceptor.setEarlyAccess(new String[]{"Taxonomy"});
+
+ OkHttpClient client = new OkHttpClient.Builder()
+ .addInterceptor(authInterceptor)
+ .build();
+
+ Request request = new Request.Builder()
+ .url(mockWebServer.url("/"))
+ .build();
+
+ client.newCall(request).execute();
+ RecordedRequest recordedRequest = mockWebServer.takeRequest();
+ String earlyAccessHeader = recordedRequest.getHeader("x-header-ea");
+
+ Assertions.assertNotNull(earlyAccessHeader);
+ Assertions.assertEquals("Taxonomy", earlyAccessHeader);
+
+ mockWebServer.shutdown();
+ }
+ @Test
+ public void testEarlyAccessMultipleHeader() throws IOException, InterruptedException {
+ MockWebServer mockWebServer = new MockWebServer();
+ mockWebServer.enqueue(new MockResponse().setBody("{}"));
+
+ AuthInterceptor authInterceptor = new AuthInterceptor();
+ authInterceptor.setEarlyAccess(new String[]{"Taxonomy","Teams"});
+
+ OkHttpClient client = new OkHttpClient.Builder()
+ .addInterceptor(authInterceptor)
+ .build();
+
+ Request request = new Request.Builder()
+ .url(mockWebServer.url("/"))
+ .build();
+
+ client.newCall(request).execute();
+ RecordedRequest recordedRequest = mockWebServer.takeRequest();
+ String earlyAccessHeader = recordedRequest.getHeader("x-header-ea");
+
+ Assertions.assertNotNull(earlyAccessHeader);
+ Assertions.assertEquals("Taxonomy, Teams", earlyAccessHeader);
+
+ mockWebServer.shutdown();
+ }
+
+ @Test
+ public void testEarlyAccessHeaderEmpty() {
+ String[] emptyEarlyAccessFeatures = {};
+ Contentstack client = new Contentstack.Builder()
+ .earlyAccess(emptyEarlyAccessFeatures)
+ .build();
+
+ Assertions.assertNotNull(client.earlyAccess);
+ Assertions.assertEquals(0, client.earlyAccess.length);
+ }
}