/* * 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.extension.internal.loader.validation; import static java.util.Collections.emptySet; import static org.mule.runtime.api.dsl.DslResolvingContext.getDefault; import static org.mule.runtime.extension.internal.loader.XmlExtensionModelLoader.RESOURCE_XML; import org.apache.maven.model.validation.ModelValidator; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.mule.runtime.api.meta.model.ExtensionModel; import org.mule.runtime.extension.api.exception.IllegalModelDefinitionException; import org.mule.runtime.extension.internal.loader.ExtensionModelFactory; import org.mule.runtime.extension.internal.loader.XmlExtensionModelLoader; import org.mule.tck.junit4.AbstractMuleTestCase; import org.mule.tck.size.SmallTest; import java.util.HashMap; import java.util.Map; /** * Tests the defaults {@link ModelValidator}s provided by the {@link ExtensionModelFactory} * * @since 4.0 */ @SmallTest public class DefaultModelValidatorTestCase extends AbstractMuleTestCase { @Rule public ExpectedException exception = ExpectedException.none(); @Before public void setUp() { exception.expect(IllegalModelDefinitionException.class); } @Test public void repeatedParameterNamesThrowsException() { exception.expectMessage("repeated-parameter"); getExtensionModelFrom("validation/module-repeated-parameters.xml"); } @Test public void repeatedOperationNamesThrowsException() { exception.expectMessage("repeated-operation"); getExtensionModelFrom("validation/module-repeated-operations.xml"); } @Test public void forbiddenNamesThrowsException() { exception.expectMessage("operation-with-forbidden-names"); getExtensionModelFrom("validation/module-forbidden-name.xml"); } @Test public void parameterWithRequiredAndDefaultThrowsException() { exception.expectMessage("aWrongDefinedParameter"); getExtensionModelFrom("validation/module-parameter-required-default.xml"); } @Test public void propertyWithRequiredAndDefaultThrowsException() { exception.expectMessage("aWrongDefinedProperty"); getExtensionModelFrom("validation/module-property-required-default.xml"); } private ExtensionModel getExtensionModelFrom(String modulePath) { Map<String, Object> parameters = new HashMap<>(); parameters.put(RESOURCE_XML, modulePath); return new XmlExtensionModelLoader().loadExtensionModel(getClass().getClassLoader(), getDefault(emptySet()), parameters); } }