package in.partake.controller.api.account; import in.partake.controller.api.APIControllerTest; import in.partake.model.dto.UserOpenIDLink; import in.partake.model.fixture.TestDataProvider; import in.partake.resource.UserErrorCode; import java.util.ArrayList; import java.util.List; import java.util.UUID; import junit.framework.Assert; import org.junit.Test; import in.partake.controller.ActionProxy; public class RemoveOpenIDAPITest extends APIControllerTest { @Test public void testToRemoveOpenID() throws Exception { ActionProxy proxy = getActionProxy(POST, "/api/account/removeOpenID"); loginAs(proxy, TestDataProvider.DEFAULT_USER_ID); addFormParameter(proxy, "identifier", TestDataProvider.DEFAULT_USER_OPENID_IDENTIFIER); addValidSessionTokenToParameter(proxy); proxy.execute(); assertResultOK(proxy); // Check the OpenID has been really removed. List<UserOpenIDLink> links = loadOpenIDIdentifiers(DEFAULT_USER_ID); Assert.assertNotNull(links); List<UUID> ids = new ArrayList<UUID>(); for (UserOpenIDLink link : links) ids.add(link.getId()); Assert.assertFalse(ids.contains(DEFAULT_USER_OPENID_ID)); } @Test public void testToRemoveOpenIDWithoutIdentifier() throws Exception { ActionProxy proxy = getActionProxy(POST, "/api/account/removeOpenID"); loginAs(proxy, TestDataProvider.DEFAULT_USER_ID); addValidSessionTokenToParameter(proxy); proxy.execute(); assertResultInvalid(proxy, UserErrorCode.MISSING_OPENID); } @Test public void testToRemoveOpenIDWithoutLogin() throws Exception { ActionProxy proxy = getActionProxy(POST, "/api/account/removeOpenID"); // When not login, should fail. addFormParameter(proxy, "identifier", TestDataProvider.DEFAULT_USER_OPENID_IDENTIFIER); addValidSessionTokenToParameter(proxy); proxy.execute(); assertResultLoginRequired(proxy); } @Test public void testToRemoveOpenIDWithInvalidLogin() throws Exception { ActionProxy proxy = getActionProxy(POST, "/api/account/removeOpenID"); loginAs(proxy, TestDataProvider.DEFAULT_ANOTHER_USER_ID); addFormParameter(proxy, "identifier", TestDataProvider.DEFAULT_USER_OPENID_IDENTIFIER); addValidSessionTokenToParameter(proxy); proxy.execute(); assertResultInvalid(proxy, UserErrorCode.INVALID_OPENID); } @Test public void testToRemoveOpenIDWithInvalidSessionToken() throws Exception { ActionProxy proxy = getActionProxy(POST, "/api/account/removeOpenID"); // Check CSRF prevention works. loginAs(proxy, TestDataProvider.DEFAULT_USER_ID); addFormParameter(proxy, "identifier", TestDataProvider.DEFAULT_USER_OPENID_IDENTIFIER); addInvalidSessionTokenToParameter(proxy); proxy.execute(); assertResultInvalid(proxy, UserErrorCode.INVALID_SECURITY_CSRF); } }