/* * 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.runtime.module.extension.soap.internal.loader; import static java.util.Collections.emptySet; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.hasSize; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.isOneOf; import static org.mule.metadata.api.utils.MetadataTypeUtils.getTypeId; import static org.mule.runtime.api.dsl.DslResolvingContext.getDefault; import static org.mule.runtime.core.config.MuleManifest.getProductVersion; import static org.mule.runtime.extension.api.annotation.Extension.DEFAULT_CONFIG_DESCRIPTION; import static org.mule.runtime.extension.api.annotation.Extension.DEFAULT_CONFIG_NAME; import static org.mule.runtime.module.extension.internal.loader.java.DefaultJavaExtensionModelLoader.TYPE_PROPERTY_NAME; import static org.mule.runtime.module.extension.internal.loader.java.DefaultJavaExtensionModelLoader.VERSION; import org.mule.metadata.api.model.ObjectType; import org.mule.metadata.api.model.StringType; import org.mule.runtime.api.meta.model.ExtensionModel; import org.mule.runtime.api.meta.model.SubTypesModel; import org.mule.runtime.api.meta.model.config.ConfigurationModel; import org.mule.runtime.api.meta.model.connection.ConnectionProviderModel; import org.mule.runtime.extension.api.soap.MessageDispatcherProvider; import org.mule.runtime.module.extension.soap.internal.runtime.connection.transport.DefaultHttpMessageDispatcherProvider; import org.mule.test.ram.DefaultPortalGunDispatcherProvider; import org.mule.test.ram.MiniverseDispatcherProvider; import org.mule.test.ram.RickAndMortyExtension; import java.util.HashMap; import java.util.List; import java.util.Map; import org.junit.Test; public class SoapExtensionWithCustomTransportsDeclarationTestCase extends AbstractSoapExtensionDeclarationTestCase { @Test public void assertSoapExtensionModel() { Map<String, Object> params = new HashMap<>(); params.put(TYPE_PROPERTY_NAME, RickAndMortyExtension.class.getName()); params.put(VERSION, getProductVersion()); ExtensionModel model = loader.loadExtensionModel(RickAndMortyExtension.class.getClassLoader(), getDefault(emptySet()), params); assertThat(model.getConfigurationModels(), hasSize(1)); ConfigurationModel configuration = model.getConfigurationModels().get(0); assertThat(configuration.getName(), is(DEFAULT_CONFIG_NAME)); assertThat(configuration.getDescription(), is(DEFAULT_CONFIG_DESCRIPTION)); assertThat(configuration.getOperationModels(), hasSize(1)); assertSubtypes(model); List<ConnectionProviderModel> providers = configuration.getConnectionProviders(); assertThat(providers, hasSize(1)); assertConnectionProvider(providers.get(0), "rick-and-morty-connection", "", new ParameterProber("wsdlUrl", StringType.class), new ParameterProber("port", StringType.class), new ParameterProber("service", StringType.class), new ParameterProber("customTransport", ObjectType.class)); } private void assertSubtypes(ExtensionModel model) { SubTypesModel subtypes = model.getSubTypes().iterator().next(); assertThat(getTypeId(subtypes.getBaseType()).get(), is(MessageDispatcherProvider.class.getName())); subtypes.getSubTypes().forEach(subtype -> { assertThat(getTypeId(subtype).get(), isOneOf(DefaultHttpMessageDispatcherProvider.class.getName(), DefaultPortalGunDispatcherProvider.class.getName(), MiniverseDispatcherProvider.class.getName())); }); } }