/****************************************************************************** * Copyright (c) 2011 GitHub Inc. * 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: * Kevin Sawicki (GitHub Inc.) - initial API and implementation *****************************************************************************/ package org.eclipse.egit.github.core.tests.live; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import java.io.IOException; import java.util.Collections; import java.util.List; import org.eclipse.egit.github.core.Blob; import org.eclipse.egit.github.core.Commit; import org.eclipse.egit.github.core.Reference; import org.eclipse.egit.github.core.RepositoryId; import org.eclipse.egit.github.core.Tree; import org.eclipse.egit.github.core.TreeEntry; import org.eclipse.egit.github.core.client.IGitHubConstants; import org.eclipse.egit.github.core.service.DataService; import org.eclipse.egit.github.core.util.EncodingUtils; import org.junit.Test; /** * Unit tests of {@link DataService} */ public class DataTest extends LiveTest { /** * Create and fetch blob * * @throws Exception */ @Test public void createAndFetchBlob() throws Exception { checkUser(); assertNotNull("Repo is required for test", writableRepo); RepositoryId repo = RepositoryId.create(client.getUser(), writableRepo); DataService service = new DataService(client); Blob blob = new Blob(); blob.setContent("test content"); blob.setEncoding(Blob.ENCODING_UTF8); String sha = service.createBlob(repo, blob); assertNotNull(sha); Blob fetch = service.getBlob(repo, sha); assertNotNull(fetch); assertEquals(blob.getContent(), new String(EncodingUtils.fromBase64(fetch.getContent()), IGitHubConstants.CHARSET_UTF8)); assertEquals(Blob.ENCODING_BASE64, fetch.getEncoding()); } /** * Create and fetch tree * * @throws Exception */ @Test public void createAndFetchTree() throws Exception { checkUser(); assertNotNull("Repo is required for test", writableRepo); RepositoryId repo = RepositoryId.create(client.getUser(), writableRepo); DataService service = new DataService(client); TreeEntry entry = new TreeEntry(); entry.setPath("test.txt"); entry.setSha("0000000000000000000000000000000000000000"); entry.setType("blob"); Tree tree = service.createTree(repo, Collections.singleton(entry)); assertNotNull(tree); assertNotNull(tree.getSha()); assertNotNull(tree.getUrl()); assertNotNull(tree.getTree()); assertEquals(1, tree.getTree().size()); assertEquals(entry.getPath(), tree.getTree().get(0).getPath()); assertEquals(entry.getSha(), tree.getTree().get(0).getSha()); assertEquals(entry.getType(), tree.getTree().get(0).getType()); Tree fetched = service.getTree(repo, tree.getSha()); assertNotNull(fetched); assertEquals(tree.getSha(), fetched.getSha()); assertEquals(tree.getUrl(), fetched.getUrl()); } /** * Create and fetch commit * * @throws Exception */ @Test public void createAndFetchCommit() throws Exception { checkUser(); assertNotNull("Repo is required for test", writableRepo); RepositoryId repo = RepositoryId.create(client.getUser(), writableRepo); DataService service = new DataService(client); Commit commit = new Commit(); commit.setMessage("commit message"); commit.setTree(new Tree() .setSha("0000000000000000000000000000000000000000")); Commit created = service.createCommit(repo, commit); assertNotNull(created); assertNotNull(created.getSha()); Commit fetched = service.getCommit(repo, created.getSha()); assertNotNull(fetched); assertEquals(created.getSha(), fetched.getSha()); assertEquals(created.getMessage(), fetched.getMessage()); } /** * Test fetching references * * @throws IOException */ @Test public void fetchReferences() throws IOException { checkUser(); assertNotNull("Repo is required for test", writableRepo); RepositoryId repo = RepositoryId.create(client.getUser(), writableRepo); DataService service = new DataService(client); List<Reference> refs = service.getReferences(repo); assertNotNull(refs); assertFalse(refs.isEmpty()); for (Reference ref : refs) { assertNotNull(ref); assertNotNull(ref.getRef()); assertNotNull(ref.getUrl()); assertNotNull(ref.getObject()); assertNotNull(ref.getObject().getSha()); Reference fetched = service.getReference(repo, ref.getRef()); assertNotNull(fetched); assertEquals(ref.getRef(), fetched.getRef()); assertEquals(ref.getUrl(), fetched.getUrl()); } } }