diff options
author | Christof Rabensteiner <christof.rabensteiner@iaik.tugraz.at> | 2019-05-15 09:16:04 +0200 |
---|---|---|
committer | Christof Rabensteiner <christof.rabensteiner@iaik.tugraz.at> | 2019-05-15 09:16:04 +0200 |
commit | 87f4be0b8834e6090137f2db2154bf50bcfcf646 (patch) | |
tree | 31a8e0183f94f231adba381a655b54a3b48039f2 /src/test/java/at | |
parent | e70ec39488c0688d8144fa529d58d60ae9564fbd (diff) | |
download | moa-zs-87f4be0b8834e6090137f2db2154bf50bcfcf646.tar.gz moa-zs-87f4be0b8834e6090137f2db2154bf50bcfcf646.tar.bz2 moa-zs-87f4be0b8834e6090137f2db2154bf50bcfcf646.zip |
Integrate Config Profiles + Refactoring
Config Profile Integration:
- Merge generated Configs from ConfigProfileGenerator with the default
Config; Reason: Merging profile Configs with default Config asap
ensures that profile Configs are "as complete as possible" while
allowing profile Configs to "on-demand"-override values from the
default Config.
- Adapt Augmenter to work with Config profiles: Select a Config on the
basis of on msg:DeliveryRequest/Config/ProfileId, fall back to 'default'
Config.
- Schema change: Make ProfileID optional.
Refactoring:
- Move Config-merging code from Augmenter into dedicated
'ConfigProfileMerger' class.
- ConfigProfileGenerator: Clarify stream pipeline and comply with
coding standard w.r.t. constant members.
- Add Augmenter test cases for profile selection.
Diffstat (limited to 'src/test/java/at')
-rw-r--r-- | src/test/java/at/gv/egiz/moazs/DeliveryRequestAugmenterTest.java | 130 |
1 files changed, 86 insertions, 44 deletions
diff --git a/src/test/java/at/gv/egiz/moazs/DeliveryRequestAugmenterTest.java b/src/test/java/at/gv/egiz/moazs/DeliveryRequestAugmenterTest.java index a555bb9..a79efaf 100644 --- a/src/test/java/at/gv/egiz/moazs/DeliveryRequestAugmenterTest.java +++ b/src/test/java/at/gv/egiz/moazs/DeliveryRequestAugmenterTest.java @@ -1,10 +1,13 @@ package at.gv.egiz.moazs; +import at.gv.egiz.moazs.preprocess.ConfigProfileMerger; import at.gv.egiz.moazs.preprocess.DeliveryRequestAugmenter; import at.gv.zustellung.app2mzs.xsd.ConfigType; import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType; import org.junit.Test; +import java.util.Map; + import static at.gv.zustellung.app2mzs.xsd.ConfigType.configTypeBuilder; import static at.gv.zustellung.app2mzs.xsd.DeliveryRequestType.deliveryRequestTypeBuilder; import static at.gv.zustellung.app2mzs.xsd.ServerType.serverTypeBuilder; @@ -14,52 +17,90 @@ public class DeliveryRequestAugmenterTest { private final String msgUrl = "http://mzs"; -// @Test -// public void augmentPrimaryWithoutConfig() { -// var fallback = createConfig(msgUrl, false); -// var augmenter = new DeliveryRequestAugmenter(fallback, mzsMarshaller, deliveryRequestConfigs); -// -// var actual = augmenter.augment(createRequest(null)).getConfig(); -// -// assertThat(actual).isEqualToComparingFieldByFieldRecursively(fallback); -// } -// -// @Test -// public void augmentPrimaryWithEmptyConfig() { -// var fallback = createConfig(msgUrl, false); -// var augmenter = new DeliveryRequestAugmenter(fallback, mzsMarshaller, deliveryRequestConfigs); -// var primary = createConfig(null, null); -// -// var actual = augmenter.augment(createRequest(primary)).getConfig(); -// -// assertThat(actual).isEqualToComparingFieldByFieldRecursively(fallback); -// } -// -// @Test -// public void overrideFallbacksUrlWithPrimary() { -// var fallback = createConfig("http://fallback.url", false); -// var primary = createConfig("http://primary.url", null); -// var augmenter = new DeliveryRequestAugmenter(fallback, mzsMarshaller, deliveryRequestConfigs); -// -// var actual = augmenter.augment(createRequest(primary)).getConfig(); -// -// var expected = createConfig("http://primary.url", false); -// assertThat(actual).isEqualToComparingFieldByFieldRecursively(expected); -// } -// -// @Test -// public void overrideFallbacksTvnzQueryWithPrimary() { -// var fallback = createConfig(msgUrl, false); -// var primary = createConfig(null, true); -// var augmenter = new DeliveryRequestAugmenter(fallback, mzsMarshaller, deliveryRequestConfigs); -// -// var actual = augmenter.augment(createRequest(primary)).getConfig(); -// -// var expected = createConfig(msgUrl, true); -// assertThat(actual).isEqualToComparingFieldByFieldRecursively(expected); -// } + @Test + public void augmentPrimaryWithoutConfig() { + var fallback = createConfig(msgUrl, false); + var augmenter = createAugmenter(fallback); + + var actual = augmenter.augment(createRequest(null)).getConfig(); + + assertThat(actual).isEqualToComparingFieldByFieldRecursively(fallback); + } + + @Test + public void augmentPrimaryWithEmptyConfig() { + var fallback = createConfig(msgUrl, false); + var augmenter = createAugmenter(fallback); + var primary = createConfig(null, null); + + var actual = augmenter.augment(createRequest(primary)).getConfig(); + + assertThat(actual).isEqualToComparingFieldByFieldRecursively(fallback); + } + + @Test + public void overrideUrlWithPrimary() { + var fallback = createConfig("http://fallback.url", false); + var primary = createConfig("http://primary.url", null); + var augmenter = createAugmenter(fallback); + + var actual = augmenter.augment(createRequest(primary)).getConfig(); + + var expected = createConfig("http://primary.url", false); + assertThat(actual).isEqualToComparingFieldByFieldRecursively(expected); + } + + @Test + public void overrideTvnzQueryWithPrimary() { + var fallback = createConfig(msgUrl, false); + var primary = createConfig(null, true); + var augmenter = createAugmenter(fallback); + + var actual = augmenter.augment(createRequest(primary)).getConfig(); + + var expected = createConfig(msgUrl, true); + assertThat(actual).isEqualToComparingFieldByFieldRecursively(expected); + } + + @Test + public void selectConfigByProfileId() { + var defaultConfig = createConfig("http://default.url" , false); + var selectableConfig = createConfig("http://selected.url", false); + var augmenter = createAugmenter(Map.of("default", defaultConfig, "selectable-profile-id", selectableConfig)); + + var requestConfig = createConfig(null, null, "selectable-profile-id"); + var actual = augmenter.augment(createRequest(requestConfig)).getConfig(); + + assertThat(actual).isEqualToComparingFieldByFieldRecursively(selectableConfig); + } + + @Test + public void selectConfigByProfileIdAndOverrideMsgUrl() { + var defaultConfig = createConfig("http://default.url" , false); + var selectableConfig = createConfig("http://selected.url", true); + var augmenter = createAugmenter(Map.of("default", defaultConfig, "selectable-profile-id", selectableConfig)); + + var requestConfig = createConfig("http://override.url", null, "selectable-profile-id"); + var actual = augmenter.augment(createRequest(requestConfig)).getConfig(); + + var expected = createConfig("http://override.url", true); + assertThat(actual).isEqualToComparingFieldByFieldRecursively(expected); + } + + private DeliveryRequestAugmenter createAugmenter(ConfigType fallback) { + return new DeliveryRequestAugmenter(Map.of("default", fallback), new ConfigProfileMerger()); + } + + private DeliveryRequestAugmenter createAugmenter(Map<String, ConfigType> profiles) { + return new DeliveryRequestAugmenter(profiles, new ConfigProfileMerger()); + } + private ConfigType createConfig(String url, Boolean performTnvz) { + return createConfig(url, performTnvz, null); + } + + private ConfigType createConfig(String url, Boolean performTnvz, String profileId) { var server = serverTypeBuilder() .withZUSEUrlID(url) @@ -68,6 +109,7 @@ public class DeliveryRequestAugmenterTest { return configTypeBuilder() .withServer(server) .withPerformQueryPersonRequest(performTnvz) + .withProfileID(profileId) .build(); } |