/****************************************************************************** * 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 static org.junit.Assert.assertNotSame; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.util.List; import org.eclipse.egit.github.core.Key; import org.eclipse.egit.github.core.RepositoryId; import org.eclipse.egit.github.core.client.RequestException; import org.eclipse.egit.github.core.service.DeployKeyService; import org.junit.Test; /** * Unit tests of {@link DeployKeyService} */ public class DeployKeyTest extends LiveTest { /** * Create, fetch, and delete repository deploy key * * @throws Exception */ @Test public void createFetchDeleteKey() throws Exception { checkUser(); assertNotNull("Repo is required for test", writableRepo); RepositoryId repo = RepositoryId.create(client.getUser(), writableRepo); DeployKeyService service = new DeployKeyService(client); Key key = new Key(); key.setTitle("key" + System.currentTimeMillis()); key.setKey("ssh-rsa " + System.nanoTime()); Key created = service.createKey(repo, key); assertNotNull(created); assertEquals(key.getTitle(), created.getTitle()); assertEquals(key.getKey(), created.getKey()); assertNotNull(created.getUrl()); assertTrue(created.getId() > 0); Key fetch = service.getKey(repo, created.getId()); assertNotNull(fetch); assertEquals(created.getTitle(), fetch.getTitle()); assertEquals(created.getKey(), fetch.getKey()); assertEquals(created.getUrl(), fetch.getUrl()); assertEquals(created.getId(), fetch.getId()); Key found = null; List<Key> keys = service.getKeys(repo); assertNotNull(keys); assertFalse(keys.isEmpty()); for (Key possible : service.getKeys(repo)) { if (created.getId() == possible.getId()) { found = possible; break; } } assertNotNull(found); assertEquals(created.getTitle(), found.getTitle()); assertEquals(created.getKey(), found.getKey()); assertEquals(created.getUrl(), found.getUrl()); assertEquals(created.getId(), found.getId()); service.deleteKey(repo, created.getId()); try { service.getKey(repo, created.getId()); fail("Request exception not thrown"); } catch (RequestException e) { assertEquals(404, e.getStatus()); } } /** * Create, edit and delete a deploy key * * @throws Exception */ @Test public void createEditDeleteKey() throws Exception { checkUser(); assertNotNull("Repo is required for test", writableRepo); RepositoryId repo = RepositoryId.create(client.getUser(), writableRepo); DeployKeyService service = new DeployKeyService(client); Key key = new Key(); key.setTitle("key" + System.currentTimeMillis()); key.setKey("ssh-rsa " + System.nanoTime()); Key created = service.createKey(repo, key); assertNotNull(created); assertEquals(key.getTitle(), created.getTitle()); assertEquals(key.getKey(), created.getKey()); assertNotNull(created.getUrl()); assertTrue(created.getId() > 0); Key fetch = service.getKey(repo, created.getId()); assertNotNull(fetch); assertEquals(created.getTitle(), fetch.getTitle()); assertEquals(created.getKey(), fetch.getKey()); assertEquals(created.getUrl(), fetch.getUrl()); assertEquals(created.getId(), fetch.getId()); fetch.setTitle("new title"); Key edited = service.editKey(repo, fetch); assertNotNull(edited); assertNotSame(fetch, edited); assertEquals(fetch.getTitle(), edited.getTitle()); assertEquals(fetch.getKey(), edited.getKey()); assertEquals(fetch.getUrl(), edited.getUrl()); assertEquals(fetch.getId(), edited.getId()); service.deleteKey(repo, created.getId()); try { service.getKey(repo, created.getId()); fail("Request exception not thrown"); } catch (RequestException e) { assertEquals(404, e.getStatus()); } } }