/*
* 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.Arrays.stream;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.instanceOf;
import static org.hamcrest.Matchers.is;
import org.mule.runtime.api.meta.model.connection.ConnectionProviderModel;
import org.mule.runtime.api.meta.model.parameter.ParameterModel;
import java.util.List;
import java.util.Optional;
public class AbstractSoapExtensionDeclarationTestCase {
SoapExtensionModelLoader loader = new SoapExtensionModelLoader();
void assertConnectionProvider(ConnectionProviderModel provider,
String name,
String description,
ParameterProber... probers) {
List<ParameterModel> parameterModels = provider.getAllParameterModels();
assertThat(provider.getName(), is(name));
assertThat(provider.getDescription(), is(description));
// the `3` is added because the SDK adds the infrastructure parameters for pooling connection providers.
assertThat(parameterModels, hasSize(probers.length + 3));
assertParameters(parameterModels, probers);
}
void assertParameters(List<ParameterModel> parameterModels, ParameterProber... probers) {
if (!parameterModels.isEmpty()) {
stream(probers).forEach(prober -> {
String name = prober.getName();
Optional<ParameterModel> parameter = parameterModels.stream().filter(p -> name.equals(p.getName())).findAny();
assertParameter(parameter.orElseThrow(() -> new RuntimeException("parameter [" + name + "] not found")), prober);
});
}
}
void assertParameter(ParameterModel param, ParameterProber prober) {
assertThat(param.getName(), is(prober.getName()));
assertThat(param.getType(), instanceOf(prober.getType()));
assertThat(param.getDefaultValue(), is(prober.getDefaultValue()));
assertThat(param.isRequired(), is(prober.isRequired()));
}
}