package org.pac4j.oauth.profile.converter;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import org.junit.Test;
import org.pac4j.core.util.TestsConstants;
import org.pac4j.oauth.profile.JsonHelper;
import org.pac4j.oauth.profile.facebook.FacebookObject;
import java.util.ArrayList;
import java.util.List;
import static org.junit.Assert.*;
/**
* Tests the {@link JsonConverter}.
*
* @author Jerome Leleu
* @since 1.9.0
*/
public final class JsonConverterTests implements TestsConstants {
private final static JsonConverter OBJECT_CONVERTER = new JsonConverter(FacebookObject.class);
private final static JsonConverter LIST_CONVERTER = new JsonConverter(List.class, new TypeReference<List<FacebookObject>>(){});
private final static String ONE_JSON = "{ \"id\": \"x\", \"name\": \"y\" }";
private final static String JSON = "[" + ONE_JSON + "]";
@Test
public void testNull() {
assertNull(OBJECT_CONVERTER.convert(null));
assertNull(LIST_CONVERTER.convert(null));
}
@Test
public void testBadType() {
assertNull(OBJECT_CONVERTER.convert(1));
assertNull(LIST_CONVERTER.convert(1));
}
@Test
public void testString() {
final FacebookObject object = (FacebookObject) OBJECT_CONVERTER.convert(ONE_JSON);
assertNotNull(object);
assertEquals("x", object.getId());
assertEquals("y", object.getName());
}
@Test
public void testJsonNode() {
final JsonNode node = JsonHelper.getFirstNode(ONE_JSON);
final FacebookObject object = (FacebookObject) OBJECT_CONVERTER.convert(node);
assertNotNull(object);
assertEquals("x", object.getId());
assertEquals("y", object.getName());
}
@Test
public void testObject() {
assertNotNull(OBJECT_CONVERTER.convert(new FacebookObject()));
}
@Test
public void testStringForListConverter() {
final List<FacebookObject> objects = (List<FacebookObject>) LIST_CONVERTER.convert(JSON);
assertNotNull(objects);
assertEquals(1, objects.size());
final FacebookObject object = objects.get(0);
assertEquals("x", object.getId());
assertEquals("y", object.getName());
}
@Test
public void testJsonNodeForListConverter() {
final JsonNode node = JsonHelper.getFirstNode(JSON);
final List<FacebookObject> objects = (List<FacebookObject>) LIST_CONVERTER.convert(node);
assertNotNull(objects);
assertEquals(1, objects.size());
final FacebookObject object = objects.get(0);
assertEquals("x", object.getId());
assertEquals("y", object.getName());
}
@Test
public void testListObjectForListConverter() {
final List<FacebookObject> list = new ArrayList<>();
list.add(new FacebookObject());
final List<FacebookObject> objects = (List<FacebookObject>) LIST_CONVERTER.convert(list);
assertNotNull(objects);
assertEquals(1, objects.size());
assertNotNull(objects.get(0));
}
}