/*
* Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/
package org.mule.test.module.extension.metadata;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
import static org.mule.runtime.api.component.location.Location.builder;
import org.mule.runtime.api.metadata.MetadataKey;
import org.mule.runtime.api.metadata.MetadataKeysContainer;
import org.mule.runtime.api.metadata.resolving.MetadataResult;
import org.mule.runtime.core.internal.metadata.MuleMetadataService;
import org.mule.test.module.extension.AbstractExtensionFunctionalTestCase;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import org.junit.Test;
public class ConfigMetadataKeysTestCase extends AbstractExtensionFunctionalTestCase {
private MuleMetadataService metadataManager;
@Override
protected String getConfigFile() {
return "vegan-config.xml";
}
@Override
protected void doSetUp() throws Exception {
super.doSetUp();
metadataManager = muleContext.getRegistry().lookupObject(MuleMetadataService.class);
}
@Test
public void getMetadataKeysForConfig() throws Exception {
final MetadataResult<MetadataKeysContainer> metadataKeysResult =
metadataManager.getMetadataKeys(builder().globalName("apple").build());
assertThat(metadataKeysResult.isSuccess(), is(true));
final Map<String, Set<MetadataKey>> metadataKeys = getKeyMapFromContainer(metadataKeysResult);
assertThat(metadataKeys.size(), is(2));
assertThat(metadataKeys.get("AppleKeys").size(), is(1));
assertThat(metadataKeys.get("HarvestedKeys").size(), is(1));
}
@Test
public void getMetadataKeysForConfigWithoutResolvers() throws Exception {
final MetadataResult<MetadataKeysContainer> metadataKeysResult =
metadataManager.getMetadataKeys(builder().globalName("banana").build());
assertThat(metadataKeysResult.isSuccess(), is(true));
final Map<String, Set<MetadataKey>> metadataKeys = getKeyMapFromContainer(metadataKeysResult);
assertThat(metadataKeys.isEmpty(), is(true));
}
private Map<String, Set<MetadataKey>> getKeyMapFromContainer(MetadataResult<MetadataKeysContainer> metadataKeysResult) {
return metadataKeysResult.get()
.getCategories()
.stream()
.collect(Collectors.toMap(resolver -> resolver, resolver -> metadataKeysResult.get().getKeys(resolver).get()));
}
}