11package com .contentstack .sdk ;
22
3+ import com .contentstack .sdk .Config .ContentstackRegion ;
34import okhttp3 .ConnectionPool ;
5+ import org .json .JSONObject ;
46import org .junit .jupiter .api .Assertions ;
5- import org .junit .jupiter .api .BeforeAll ;
7+ import org .junit .jupiter .api .BeforeEach ;
68import org .junit .jupiter .api .Test ;
79
810import java .net .InetSocketAddress ;
911import java .net .Proxy ;
12+ import java .util .concurrent .TimeUnit ;
1013import java .util .logging .Level ;
1114import java .util .logging .Logger ;
1215
16+ import static org .junit .jupiter .api .Assertions .*;
17+
1318/**
14- * The type Config testcase .
19+ * Comprehensive unit tests for Config class .
1520 */
1621public class TestConfig {
1722
1823 private static final Logger logger = Logger .getLogger (TestConfig .class .getName ());
19- private static Config config ;
20-
24+ private Config config ;
2125
22- @ BeforeAll
23- public static void setUp () {
26+ @ BeforeEach
27+ public void setUp () {
2428 logger .setLevel (Level .FINE );
2529 config = new Config ();
2630 }
2731
28-
2932 @ Test
3033 void testNullProxy () {
31- Assertions .assertNotNull (config .getProxy ());
34+ Assertions .assertNull (config .getProxy ());
3235 }
3336
3437 @ Test
3538 void testsSetProxy () {
3639 java .net .Proxy proxy = new Proxy (Proxy .Type .HTTP , new InetSocketAddress ("sl.shaileshmishra.io" , 80 ));
3740 config .setProxy (proxy );
3841 Proxy newProxy = config .getProxy ();
42+ Assertions .assertNotNull (newProxy );
3943 Assertions .assertNotNull (newProxy .address ().toString ());
4044 }
4145
@@ -54,5 +58,345 @@ void testsTags() {
5458 Assertions .assertNotNull (joinedTags );
5559 }
5660
61+ // ========== CONNECTION POOL TESTS ==========
62+
63+ @ Test
64+ void testConnectionPoolWithCustomParameters () {
65+ ConnectionPool customPool = config .connectionPool (10 , 300 , TimeUnit .SECONDS );
66+
67+ assertNotNull (customPool );
68+ assertNotNull (config .connectionPool );
69+ assertEquals (customPool , config .connectionPool );
70+ }
71+
72+ @ Test
73+ void testConnectionPoolWithMinutes () {
74+ ConnectionPool pool = config .connectionPool (5 , 5 , TimeUnit .MINUTES );
75+
76+ assertNotNull (pool );
77+ assertNotNull (config .connectionPool );
78+ }
79+
80+ @ Test
81+ void testConnectionPoolWithHours () {
82+ ConnectionPool pool = config .connectionPool (20 , 1 , TimeUnit .HOURS );
83+
84+ assertNotNull (pool );
85+ }
86+
87+ @ Test
88+ void testConnectionPoolWithMilliseconds () {
89+ ConnectionPool pool = config .connectionPool (3 , 30000 , TimeUnit .MILLISECONDS );
90+
91+ assertNotNull (pool );
92+ }
93+
94+ @ Test
95+ void testConnectionPoolMultipleTimes () {
96+ ConnectionPool pool1 = config .connectionPool (5 , 5 , TimeUnit .MINUTES );
97+ ConnectionPool pool2 = config .connectionPool (10 , 10 , TimeUnit .MINUTES );
98+
99+ assertNotNull (pool1 );
100+ assertNotNull (pool2 );
101+ assertNotEquals (pool1 , pool2 );
102+ assertEquals (pool2 , config .connectionPool );
103+ }
104+
105+ // ========== REGION TESTS ==========
106+
107+ @ Test
108+ void testGetDefaultRegion () {
109+ ContentstackRegion region = config .getRegion ();
110+
111+ assertNotNull (region );
112+ assertEquals (ContentstackRegion .US , region );
113+ }
114+
115+ @ Test
116+ void testSetRegion () {
117+ ContentstackRegion newRegion = config .setRegion (ContentstackRegion .EU );
118+
119+ assertNotNull (newRegion );
120+ assertEquals (ContentstackRegion .EU , newRegion );
121+ assertEquals (ContentstackRegion .EU , config .getRegion ());
122+ }
123+
124+ @ Test
125+ void testSetRegionAzureNA () {
126+ ContentstackRegion region = config .setRegion (ContentstackRegion .AZURE_NA );
127+
128+ assertEquals (ContentstackRegion .AZURE_NA , region );
129+ assertEquals (ContentstackRegion .AZURE_NA , config .getRegion ());
130+ }
131+
132+ @ Test
133+ void testSetRegionAzureEU () {
134+ ContentstackRegion region = config .setRegion (ContentstackRegion .AZURE_EU );
135+
136+ assertEquals (ContentstackRegion .AZURE_EU , region );
137+ }
138+
139+ @ Test
140+ void testSetRegionGcpNA () {
141+ config .setRegion (ContentstackRegion .GCP_NA );
142+
143+ assertEquals (ContentstackRegion .GCP_NA , config .getRegion ());
144+ }
145+
146+ @ Test
147+ void testSetRegionGcpEU () {
148+ config .setRegion (ContentstackRegion .GCP_EU );
149+
150+ assertEquals (ContentstackRegion .GCP_EU , config .getRegion ());
151+ }
152+
153+ @ Test
154+ void testSetRegionAU () {
155+ config .setRegion (ContentstackRegion .AU );
156+
157+ assertEquals (ContentstackRegion .AU , config .getRegion ());
158+ }
159+
160+ @ Test
161+ void testSetRegionMultipleTimes () {
162+ config .setRegion (ContentstackRegion .EU );
163+ assertEquals (ContentstackRegion .EU , config .getRegion ());
164+
165+ config .setRegion (ContentstackRegion .AZURE_NA );
166+ assertEquals (ContentstackRegion .AZURE_NA , config .getRegion ());
167+
168+ config .setRegion (ContentstackRegion .GCP_EU );
169+ assertEquals (ContentstackRegion .GCP_EU , config .getRegion ());
170+ }
171+
172+ // ========== LIVE PREVIEW TESTS ==========
173+
174+ @ Test
175+ void testEnableLivePreviewTrue () {
176+ Config result = config .enableLivePreview (true );
177+
178+ assertNotNull (result );
179+ assertEquals (config , result ); // Should return this for chaining
180+ assertTrue (config .enableLivePreview );
181+ }
182+
183+ @ Test
184+ void testEnableLivePreviewFalse () {
185+ Config result = config .enableLivePreview (false );
186+
187+ assertNotNull (result );
188+ assertFalse (config .enableLivePreview );
189+ }
190+
191+ @ Test
192+ void testEnableLivePreviewChaining () {
193+ Config result = config .enableLivePreview (true )
194+ .setLivePreviewHost ("preview.contentstack.io" );
195+
196+ assertNotNull (result );
197+ assertEquals (config , result );
198+ assertTrue (config .enableLivePreview );
199+ }
200+
201+ @ Test
202+ void testSetLivePreviewHost () {
203+ Config result = config .setLivePreviewHost ("custom-preview.example.com" );
204+
205+ assertNotNull (result );
206+ assertEquals (config , result );
207+ assertEquals ("custom-preview.example.com" , config .livePreviewHost );
208+ }
209+
210+ @ Test
211+ void testSetLivePreviewHostWithDefaultValue () {
212+ Config result = config .setLivePreviewHost ("preview.contentstack.io" );
213+
214+ assertNotNull (result );
215+ assertEquals ("preview.contentstack.io" , config .livePreviewHost );
216+ }
217+
218+ @ Test
219+ void testSetLivePreviewHostMultipleTimes () {
220+ config .setLivePreviewHost ("host1.example.com" );
221+ assertEquals ("host1.example.com" , config .livePreviewHost );
222+
223+ config .setLivePreviewHost ("host2.example.com" );
224+ assertEquals ("host2.example.com" , config .livePreviewHost );
225+ }
226+
227+ @ Test
228+ void testSetLivePreviewEntry () {
229+ JSONObject entry = new JSONObject ();
230+ entry .put ("uid" , "entry_uid_123" );
231+ entry .put ("title" , "Preview Entry" );
232+
233+ Config result = config .setLivePreviewEntry (entry );
234+
235+ assertNotNull (result );
236+ assertEquals (config , result );
237+ assertNotNull (config .livePreviewEntry );
238+ assertEquals ("entry_uid_123" , config .livePreviewEntry .opt ("uid" ));
239+ assertEquals ("Preview Entry" , config .livePreviewEntry .opt ("title" ));
240+ }
241+
242+ @ Test
243+ void testSetLivePreviewEntryWithEmptyObject () {
244+ JSONObject emptyEntry = new JSONObject ();
245+
246+ Config result = config .setLivePreviewEntry (emptyEntry );
247+
248+ assertNotNull (result );
249+ assertNotNull (config .livePreviewEntry );
250+ assertTrue (config .livePreviewEntry .isEmpty ());
251+ }
252+
253+ @ Test
254+ void testSetLivePreviewEntryChaining () {
255+ JSONObject entry = new JSONObject ();
256+ entry .put ("content_type" , "blog_post" );
257+
258+ Config result = config .enableLivePreview (true )
259+ .setLivePreviewHost ("preview.example.com" )
260+ .setLivePreviewEntry (entry );
261+
262+ assertNotNull (result );
263+ assertTrue (config .enableLivePreview );
264+ assertEquals ("preview.example.com" , config .livePreviewHost );
265+ assertEquals ("blog_post" , config .livePreviewEntry .opt ("content_type" ));
266+ }
267+
268+ // ========== PREVIEW TOKEN TESTS ==========
269+
270+ @ Test
271+ void testSetPreviewToken () {
272+ Config result = config .setPreviewToken ("preview_token_12345" );
273+
274+ assertNotNull (result );
275+ assertEquals (config , result );
276+ assertEquals ("preview_token_12345" , config .previewToken );
277+ }
278+
279+ @ Test
280+ void testSetPreviewTokenChaining () {
281+ Config result = config .setPreviewToken ("token_abc" )
282+ .enableLivePreview (true );
283+
284+ assertNotNull (result );
285+ assertEquals ("token_abc" , config .previewToken );
286+ assertTrue (config .enableLivePreview );
287+ }
288+
289+ @ Test
290+ void testSetPreviewTokenMultipleTimes () {
291+ config .setPreviewToken ("token1" );
292+ assertEquals ("token1" , config .previewToken );
293+
294+ config .setPreviewToken ("token2" );
295+ assertEquals ("token2" , config .previewToken );
296+ }
297+
298+ // ========== MANAGEMENT TOKEN TESTS ==========
299+
300+ @ Test
301+ void testSetManagementToken () {
302+ Config result = config .setManagementToken ("management_token_xyz" );
303+
304+ assertNotNull (result );
305+ assertEquals (config , result );
306+ assertEquals ("management_token_xyz" , config .managementToken );
307+ }
308+
309+ @ Test
310+ void testSetManagementTokenChaining () {
311+ Config result = config .setManagementToken ("mgmt_token" )
312+ .setPreviewToken ("preview_token" );
313+
314+ assertNotNull (result );
315+ assertEquals ("mgmt_token" , config .managementToken );
316+ assertEquals ("preview_token" , config .previewToken );
317+ }
318+
319+ @ Test
320+ void testSetManagementTokenMultipleTimes () {
321+ config .setManagementToken ("token_a" );
322+ assertEquals ("token_a" , config .managementToken );
323+
324+ config .setManagementToken ("token_b" );
325+ assertEquals ("token_b" , config .managementToken );
326+ }
327+
328+ // ========== COMPREHENSIVE CHAINING TESTS ==========
329+
330+ @ Test
331+ void testCompleteConfigurationChaining () {
332+ JSONObject liveEntry = new JSONObject ();
333+ liveEntry .put ("uid" , "entry_123" );
334+
335+ Config result = config
336+ .enableLivePreview (true )
337+ .setLivePreviewHost ("preview.contentstack.io" )
338+ .setLivePreviewEntry (liveEntry )
339+ .setPreviewToken ("preview_token" )
340+ .setManagementToken ("management_token" );
341+
342+ assertNotNull (result );
343+ assertEquals (config , result );
344+ assertTrue (config .enableLivePreview );
345+ assertEquals ("preview.contentstack.io" , config .livePreviewHost );
346+ assertNotNull (config .livePreviewEntry );
347+ assertEquals ("preview_token" , config .previewToken );
348+ assertEquals ("management_token" , config .managementToken );
349+ }
350+
351+ @ Test
352+ void testHostAndVersionGetters () {
353+ String host = config .getHost ();
354+ String version = config .getVersion ();
355+
356+ assertNotNull (host );
357+ assertNotNull (version );
358+ assertEquals ("cdn.contentstack.io" , host );
359+ assertEquals ("v3" , version );
360+ }
361+
362+ @ Test
363+ void testSetHost () {
364+ config .setHost ("custom.contentstack.io" );
365+
366+ assertEquals ("custom.contentstack.io" , config .getHost ());
367+ }
368+
369+ @ Test
370+ void testSetHostWithEmptyString () {
371+ String originalHost = config .getHost ();
372+ config .setHost ("" );
373+
374+ // Empty string should not change the host
375+ assertEquals (originalHost , config .getHost ());
376+ }
377+
378+ @ Test
379+ void testSetHostWithNull () {
380+ String originalHost = config .getHost ();
381+ config .setHost (null );
382+
383+ // Null should not change the host
384+ assertEquals (originalHost , config .getHost ());
385+ }
57386
387+ @ Test
388+ void testBranchGetterAndSetter () {
389+ config .setBranch ("development" );
390+
391+ assertEquals ("development" , config .getBranch ());
392+ }
393+
394+ @ Test
395+ void testEarlyAccessGetterAndSetter () {
396+ String [] earlyAccessHeaders = {"Taxonomy" , "Teams" };
397+ Config result = config .setEarlyAccess (earlyAccessHeaders );
398+
399+ assertNotNull (result );
400+ assertArrayEquals (earlyAccessHeaders , config .getEarlyAccess ());
401+ }
58402}
0 commit comments