/******************************************************************************* * Copyright (c) 2013 Tasktop Technologies and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Tasktop Technologies - initial API and implementation *******************************************************************************/ package org.eclipse.mylyn.gerrit.tests.core.client.rest; import java.io.File; import java.io.IOException; import java.util.Map; import junit.framework.TestCase; import org.eclipse.mylyn.commons.sdk.util.CommonTestUtil; import org.eclipse.mylyn.internal.gerrit.core.client.JSonSupport; import org.eclipse.mylyn.internal.gerrit.core.client.rest.ProjectInfo; import org.junit.Test; import com.google.gson.reflect.TypeToken; public class ProjectInfoTest extends TestCase { @Test public void testFromEmptyJson() throws Exception { ProjectInfo projectInfo = parseFile("testdata/EmptyWithMagic.json"); assertNotNull(projectInfo); assertNull(projectInfo.getKind()); assertNull(projectInfo.getId()); assertNull(projectInfo.getName()); assertNull(projectInfo.getParent()); assertNull(projectInfo.getDescription()); } @Test public void testFromInvalid() throws Exception { ProjectInfo projectInfo = parseFile("testdata/InvalidWithMagic.json"); assertNotNull(projectInfo); assertNull(projectInfo.getKind()); assertNull(projectInfo.getId()); assertNull(projectInfo.getName()); assertNull(projectInfo.getParent()); assertNull(projectInfo.getDescription()); } @Test public void testFromSingleProject() throws Exception { ProjectInfo projectInfo = parseFile("testdata/ProjectInfo_project.json"); assertNotNull(projectInfo); assertEquals("gerritcodereview#project", projectInfo.getKind()); assertEquals("plugins%2Freplication", projectInfo.getId()); assertEquals("plugins/replication", projectInfo.getName()); assertEquals("Public-Plugins", projectInfo.getParent()); assertEquals("Copies to other servers using the Git protocol", projectInfo.getDescription()); } @Test public void testFromProjects() throws Exception { File file = CommonTestUtil.getFile(this, "testdata/ProjectInfo_projects.json"); TypeToken<Map<String, ProjectInfo>> resultType = new TypeToken<Map<String, ProjectInfo>>() { }; String content = CommonTestUtil.read(file); Map<String, ProjectInfo> projects = new JSonSupport().parseResponse(content, resultType.getType()); assertNotNull(projects); assertEquals(4, projects.size()); assertProjectInfo(projects.get("external/bison"), "external%2Fbison", "GNU parser generator"); assertProjectInfo(projects.get("external/gcc"), "external%2Fgcc", null /* no description */); assertProjectInfo(projects.get("external/openssl"), "external%2Fopenssl", "encryption\ncrypto routines"); assertProjectInfo(projects.get("test"), "test", "\u003chtml\u003e is escaped"); } private ProjectInfo parseFile(String path) throws IOException { File file = CommonTestUtil.getFile(this, path); String content = CommonTestUtil.read(file); return new JSonSupport().parseResponse(content, ProjectInfo.class); } private static void assertProjectInfo(ProjectInfo project, String id, String desc) { assertNotNull(project); assertEquals("gerritcodereview#project", project.getKind()); assertEquals(id, project.getId()); assertNull(project.getName()); assertNull(project.getParent()); assertEquals(desc, project.getDescription()); } }