/******************************************************************************
* 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.assertTrue;
import java.util.List;
import org.eclipse.egit.github.core.Key;
import org.eclipse.egit.github.core.User;
import org.eclipse.egit.github.core.service.UserService;
import org.junit.Test;
/**
* Unit tests of {@link UserService}
*/
public class UserTest extends LiveTest {
/**
* Test fetching currently authenticated user
*
* @throws Exception
*/
@Test
public void fetchCurrentUser() throws Exception {
assertNotNull("Test requires user", client.getUser());
UserService service = new UserService(client);
User user = service.getUser();
assertNotNull(user);
assertEquals(client.getUser(), user.getLogin());
assertNotNull(user.getGravatarId());
assertNotNull(user.getAvatarUrl());
assertNotNull(user.getCreatedAt());
assertNotNull(user.getPlan());
}
/**
* Test fetching user by login name
*
* @throws Exception
*/
@Test
public void fetchExplicitUser() throws Exception {
assertNotNull("Test requires user", client.getUser());
UserService service = new UserService(client);
User user = service.getUser(client.getUser());
assertNotNull(user);
assertEquals(client.getUser(), user.getLogin());
assertNotNull(user.getGravatarId());
assertNotNull(user.getAvatarUrl());
assertNotNull(user.getCreatedAt());
}
/**
* Test fetching followers
*
* @throws Exception
*/
@Test
public void fetchFollowers() throws Exception {
assertNotNull("Test requires user", client.getUser());
UserService service = new UserService(client);
List<User> users = service.getFollowers();
assertNotNull(users);
assertFalse(users.isEmpty());
for (User user : users) {
assertNotNull(user.getId());
assertNotNull(user.getLogin());
}
}
/**
* Test fetching followed users
*
* @throws Exception
*/
@Test
public void fetchFollowing() throws Exception {
assertNotNull("Test requires user", client.getUser());
UserService service = new UserService(client);
List<User> users = service.getFollowing();
assertNotNull(users);
assertFalse(users.isEmpty());
for (User user : users) {
assertNotNull(user.getId());
assertNotNull(user.getLogin());
}
}
/**
* Test finding out if user is followed
*
* @throws Exception
*/
@Test
public void isFollowed() throws Exception {
assertNotNull("Test requires user", client.getUser());
UserService service = new UserService(client);
List<User> users = service.getFollowing();
assertNotNull(users);
assertFalse(users.isEmpty());
assertTrue(service.isFollowing(users.get(0).getLogin()));
assertFalse(service.isFollowing(client.getUser()));
}
/**
* Test adding, fetching, and deleting an e-mail address to a user account
*
* @throws Exception
*/
@Test
public void addFetchDeleteEmail() throws Exception {
checkUser();
String email1 = "first" + System.nanoTime() + "@email.com";
UserService service = new UserService(client);
List<String> emails = service.getEmails();
assertFalse(emails.contains(email1));
service.addEmail(email1);
emails = service.getEmails();
assertTrue(emails.contains(email1));
service.removeEmail(email1);
emails = service.getEmails();
assertFalse(emails.contains(email1));
}
/**
* Test adding, fetching, and deleting an e-mail addresses to a user account
*
* @throws Exception
*/
@Test
public void addFetchDeleteEmails() throws Exception {
checkUser();
String email1 = "first" + System.nanoTime() + "@email.com";
String email2 = "second" + System.nanoTime() + "@email.com";
UserService service = new UserService(client);
List<String> emails = service.getEmails();
assertFalse(emails.contains(email1));
assertFalse(emails.contains(email2));
service.addEmail(email1, email2);
emails = service.getEmails();
assertTrue(emails.contains(email1));
assertTrue(emails.contains(email2));
service.removeEmail(email1, email2);
emails = service.getEmails();
assertFalse(emails.contains(email1));
assertFalse(emails.contains(email2));
}
/**
* Test adding, fetching, and deleting a key to a user account
*
* @throws Exception
*/
@Test
public void addFetchDeleteKey() throws Exception {
checkUser();
Key key = new Key();
key.setTitle("key" + System.currentTimeMillis());
key.setKey("ssh-rsa " + System.nanoTime());
UserService service = new UserService(client);
Key created = service.createKey(key);
assertNotNull(created);
assertNotNull(created.getUrl());
assertEquals(key.getTitle(), created.getTitle());
assertEquals(key.getKey(), created.getKey());
Key fetched = service.getKey(created.getId());
assertNotNull(fetched);
assertEquals(created.getUrl(), fetched.getUrl());
assertEquals(key.getTitle(), fetched.getTitle());
assertEquals(key.getKey(), fetched.getKey());
service.deleteKey(created.getId());
}
}