package org.jboss.resteasy.test.injection;
import org.jboss.resteasy.core.StringParameterInjector;
import org.jboss.resteasy.spi.ResteasyProviderFactory;
import org.jboss.resteasy.test.injection.resource.StringParameterInjectorGenericType;
import org.jboss.resteasy.test.injection.resource.StringParameterInjectorInjected;
import org.jboss.resteasy.test.injection.resource.StringParameterInjectorType;
import org.junit.Test;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.lang.reflect.Type;
import java.util.List;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
/**
* @tpSubChapter Injection tests
* @tpChapter Unit tests
* @tpTestCaseDetails Test for org.jboss.resteasy.annotations.Decorator class.
* @tpSince RESTEasy 3.0.16
*/
public class StringParameterInjectorTest {
private static final String MY_SPECIAL_STRING = "MySpecialString";
/**
* @tpTestDetails Unmarshaller test
* @tpSince RESTEasy 3.0.16
*/
@Test
public void shouldInjectForAnnotationConfiguredUnmarshaller() throws Exception {
ResteasyProviderFactory.pushContext(StringParameterInjectorInjected.class, new StringParameterInjectorInjected(MY_SPECIAL_STRING));
Field declaredField = StringParameterInjectorType.class.getDeclaredField("name");
StringParameterInjector injector = new StringParameterInjector(String.class, String.class, "name",
StringParameterInjectorType.class, null, declaredField,
declaredField.getAnnotations(), new ResteasyProviderFactory());
assertSame("Ignored annotation missing", MY_SPECIAL_STRING, injector.extractValue("ignored"));
}
/**
* @tpTestDetails Instantiation test
* @tpSince RESTEasy 3.0.16
*/
@Test
public void instantiation() throws Exception {
final Type type = StringParameterInjectorGenericType.class.getDeclaredMethod("returnSomething").getGenericReturnType();
final StringParameterInjector injector = new StringParameterInjector(
List.class, type, "ignored", String.class, null, null,
new Annotation[0], new ResteasyProviderFactory());
final Object result = injector.extractValue("");
assertNotNull("Injector should not return null", result);
}
}