package in.partake.controller.api.user; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.notNullValue; import static org.hamcrest.Matchers.nullValue; import static org.junit.Assert.assertThat; import in.partake.controller.ActionProxy; import in.partake.controller.api.APIControllerTest; import in.partake.resource.UserErrorCode; import org.codehaus.jackson.JsonNode; import org.codehaus.jackson.node.ObjectNode; import org.junit.Test; public class GetUserAPITest extends APIControllerTest { @Test public void testGetUser() throws Exception { ActionProxy proxy = getActionProxy(GET, "/api/user/get?userId=" + DEFAULT_USER_ID); proxy.execute(); assertResultOK(proxy); ObjectNode obj = getJSON(proxy); assertThat(obj.get("id").asText(), is(DEFAULT_USER_ID)); // These values should not be public. assertThat(obj.get("twitterId"), is(nullValue())); assertThat(obj.get("lastLoginAt"), is(nullValue())); assertThat(obj.get("calendarId"), is(nullValue())); JsonNode twitter = obj.get("twitter"); assertThat(twitter, is(notNullValue())); assertThat(twitter.get("screenName").asText(), is(DEFAULT_TWITTER_SCREENNAME)); assertThat(twitter.get("profileImageURL").asText(), is("http://www.example.com/")); // These values should not be public. assertThat(twitter.get("accessToken"), is(nullValue())); assertThat(twitter.get("accessTokenSecret"), is(nullValue())); // We don't expose OpenID Linkage. assertThat(obj.get("openIDLinakge"), is(nullValue())); } @Test public void testGetUserWithInvalidUserId() throws Exception { ActionProxy proxy = getActionProxy(GET, "/api/user/get?userId=" + INVALID_USER_ID); proxy.execute(); assertResultInvalid(proxy, UserErrorCode.INVALID_USER_ID); } @Test public void testGetUserWithoutUserId() throws Exception { ActionProxy proxy = getActionProxy(GET, "/api/user/get"); proxy.execute(); assertResultInvalid(proxy, UserErrorCode.MISSING_USER_ID); } }