|
34 | 34 | import java.util.Calendar;
|
35 | 35 | import java.util.List;
|
36 | 36 |
|
| 37 | +import org.apache.sling.api.resource.Resource; |
37 | 38 | import org.apache.sling.caconfig.ConfigurationBuilder;
|
38 | 39 | import org.apache.sling.caconfig.management.ConfigurationManager;
|
39 | 40 | import org.apache.sling.hamcrest.ResourceMatchers;
|
@@ -113,25 +114,6 @@ void testSimpleConfig() {
|
113 | 114 | assertEquals(5, config.intParam());
|
114 | 115 | }
|
115 | 116 |
|
116 |
| - @Test |
117 |
| - void testSimpleConfig_Disabled() { |
118 |
| - context.registerInjectActivateService(PagePersistenceStrategy.class, "enabled", false); |
119 |
| - |
120 |
| - // write config |
121 |
| - writeConfiguration(context, contentPage.getPath(), SimpleConfig.class.getName(), |
122 |
| - "stringParam", "value1", |
123 |
| - "intParam", 123); |
124 |
| - |
125 |
| - // assert storage in page in /conf |
126 |
| - Page configPage = context.pageManager().getPage("/conf/test/site1/sling:configs/" + SimpleConfig.class.getName()); |
127 |
| - assertNull(configPage); |
128 |
| - |
129 |
| - // read config |
130 |
| - SimpleConfig config = contentPage.getContentResource().adaptTo(ConfigurationBuilder.class).as(SimpleConfig.class); |
131 |
| - assertEquals("value1", config.stringParam()); |
132 |
| - assertEquals(123, config.intParam()); |
133 |
| - } |
134 |
| - |
135 | 117 | @Test
|
136 | 118 | void testListConfig() {
|
137 | 119 | context.registerInjectActivateService(PagePersistenceStrategy.class, "enabled", true);
|
@@ -453,4 +435,82 @@ void testListConfig_ResourceType() {
|
453 | 435 |
|
454 | 436 | }
|
455 | 437 |
|
| 438 | + @Test |
| 439 | + void testSimpleConfig_Disabled() { |
| 440 | + context.registerInjectActivateService(PagePersistenceStrategy.class, "enabled", false); |
| 441 | + doTestSimpleConfig_DisabledOrDenied(); |
| 442 | + } |
| 443 | + |
| 444 | + @Test |
| 445 | + void testSimpleConfig_Denied() { |
| 446 | + context.registerInjectActivateService(PagePersistenceStrategy.class, "enabled", true, |
| 447 | + "configNameDenyList", new String[] { SimpleConfig.class.getName() }); |
| 448 | + doTestSimpleConfig_DisabledOrDenied(); |
| 449 | + } |
| 450 | + |
| 451 | + void doTestSimpleConfig_DisabledOrDenied() { |
| 452 | + // write config |
| 453 | + writeConfiguration(context, contentPage.getPath(), SimpleConfig.class.getName(), |
| 454 | + "stringParam", "value1", |
| 455 | + "intParam", 123); |
| 456 | + |
| 457 | + // assert storage in page in /conf |
| 458 | + Page configPage = context.pageManager().getPage("/conf/test/site1/sling:configs/" + SimpleConfig.class.getName()); |
| 459 | + assertNull(configPage); |
| 460 | + |
| 461 | + // read config |
| 462 | + SimpleConfig config = contentPage.getContentResource().adaptTo(ConfigurationBuilder.class).as(SimpleConfig.class); |
| 463 | + assertEquals("value1", config.stringParam()); |
| 464 | + assertEquals(123, config.intParam()); |
| 465 | + |
| 466 | + // delete |
| 467 | + ConfigurationManager configManager = context.getService(ConfigurationManager.class); |
| 468 | + configManager.deleteConfiguration(contentPage.getContentResource(), SimpleConfig.class.getName()); |
| 469 | + config = contentPage.getContentResource().adaptTo(ConfigurationBuilder.class).as(SimpleConfig.class); |
| 470 | + assertNull(config.stringParam()); |
| 471 | + assertEquals(5, config.intParam()); |
| 472 | + } |
| 473 | + |
| 474 | + @Test |
| 475 | + void testListConfig_Disabled() { |
| 476 | + context.registerInjectActivateService(PagePersistenceStrategy.class, "enabled", false); |
| 477 | + doTestListConfig_DisabledOrDenied(); |
| 478 | + } |
| 479 | + |
| 480 | + @Test |
| 481 | + void testListConfig_Denied() { |
| 482 | + context.registerInjectActivateService(PagePersistenceStrategy.class, "enabled", true, |
| 483 | + "configNameDenyList", new String[] { ListConfig.class.getName() }); |
| 484 | + doTestListConfig_DisabledOrDenied(); |
| 485 | + } |
| 486 | + |
| 487 | + void doTestListConfig_DisabledOrDenied() { |
| 488 | + // write config |
| 489 | + writeConfigurationCollection(context, contentPage.getPath(), ListConfig.class.getName(), List.of( |
| 490 | + ImmutableValueMap.of("stringParam", "value1", "intParam", 123), |
| 491 | + ImmutableValueMap.of("stringParam", "value2", "intParam", 234)), |
| 492 | + ImmutableValueMap.of("sling:configCollectionInherit", true)); |
| 493 | + |
| 494 | + // assert storage in page in /conf |
| 495 | + Resource parentResource = context.resourceResolver().getResource("/conf/test/site1/sling:configs/" + ListConfig.class.getName()); |
| 496 | + assertNotNull(parentResource); |
| 497 | + assertTrue(parentResource.getValueMap().get("sling:configCollectionInherit", false)); |
| 498 | + |
| 499 | + Resource configResource1 = context.resourceResolver().getResource("/conf/test/site1/sling:configs/" + ListConfig.class.getName() + "/item0"); |
| 500 | + assertThat(configResource1, ResourceMatchers.props("stringParam", "value1", "intParam", 123)); |
| 501 | + |
| 502 | + Resource configResource2 = context.resourceResolver().getResource("/conf/test/site1/sling:configs/" + ListConfig.class.getName() + "/item1"); |
| 503 | + assertThat(configResource2, ResourceMatchers.props("stringParam", "value2", "intParam", 234)); |
| 504 | + |
| 505 | + // read config |
| 506 | + List<ListConfig> configs = List.copyOf(contentPage.getContentResource().adaptTo(ConfigurationBuilder.class).asCollection(ListConfig.class)); |
| 507 | + assertEquals(2, configs.size()); |
| 508 | + ListConfig config1 = configs.get(0); |
| 509 | + assertEquals("value1", config1.stringParam()); |
| 510 | + assertEquals(123, config1.intParam()); |
| 511 | + ListConfig config2 = configs.get(1); |
| 512 | + assertEquals("value2", config2.stringParam()); |
| 513 | + assertEquals(234, config2.intParam()); |
| 514 | + } |
| 515 | + |
456 | 516 | }
|
0 commit comments