/**
* =============================================================================
*
* ORCID (R) Open Source
* http://orcid.org
*
* Copyright (c) 2012-2014 ORCID, Inc.
* Licensed under an MIT-Style License (MIT)
* http://orcid.org/open-source-license
*
* This copyright and license information (including a link to the full license)
* shall be included in its entirety in all copies or substantial portion of
* the software.
*
* =============================================================================
*/
package org.orcid.frontend.web.controllers;
/**
* @author Angel Montenegro (amontenegro) Date: 29/08/2013
*/
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.orcid.core.manager.EncryptionManager;
import org.orcid.core.manager.OrcidProfileManager;
import org.orcid.frontend.web.util.BaseControllerTest;
import org.orcid.persistence.dao.ProfileDao;
import org.orcid.pojo.ajaxForm.Client;
import org.orcid.pojo.ajaxForm.RedirectUri;
import org.orcid.pojo.ajaxForm.Text;
import org.orcid.test.OrcidJUnit4ClassRunner;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.transaction.annotation.Transactional;
@RunWith(OrcidJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(locations = { "classpath:orcid-core-context.xml", "classpath:orcid-frontend-web-servlet.xml", "classpath:statistics-core-context.xml" })
public class GroupAdministratorControllerTest extends BaseControllerTest {
@Resource
GroupAdministratorController controller;
@Resource
private ProfileDao profileDao;
@Resource
protected OrcidProfileManager orcidProfileManager;
@Resource
private EncryptionManager encryptionManager;
@Before
public void init() {
assertNotNull(controller);
assertNotNull(profileDao);
}
@Test
@Transactional("transactionManager")
@Rollback(true)
public void emptyClientTest(){
Client client = controller.getClient();
client = controller.createClient(client);
assertNotNull(client);
List<String> errors = client.getErrors();
assertEquals(4, errors.size());
assertTrue(errors.contains(controller.getMessage("manage.developer_tools.group.error.display_name.empty")));
assertTrue(errors.contains(controller.getMessage("manage.developer_tools.group.error.website.empty")));
assertTrue(errors.contains(controller.getMessage("manage.developer_tools.group.error.short_description.empty")));
assertTrue(errors.contains(controller.getMessage("common.invalid_url")));
}
@Test
public void testInvalidName() {
Client client = controller.getClient();
client.setRedirectUris(new ArrayList<RedirectUri>());
client.setDisplayName(Text.valueOf("This is a <a>invalid</a> name"));
client.setShortDescription(Text.valueOf("This is a valid description"));
client.setWebsite(Text.valueOf("http://www.orcid.org"));
client = controller.createClient(client);
assertNotNull(client);
assertEquals(1, client.getErrors().size());
assertEquals(controller.getMessage("manage.developer_tools.group.error.display_name.html"), client.getErrors().get(0));
}
@Test
public void testInvalidDescription() {
Client client = controller.getClient();
client.setRedirectUris(new ArrayList<RedirectUri>());
client.setDisplayName(Text.valueOf("This is a valid name"));
client.setShortDescription(Text.valueOf("This is a <a>invalid</a> description"));
client.setWebsite(Text.valueOf("http://www.orcid.org"));
client = controller.createClient(client);
assertNotNull(client);
assertEquals(1, client.getErrors().size());
assertEquals(controller.getMessage("manage.developer_tools.group.error.short_description.html"), client.getErrors().get(0));
}
@Test
public void testInvalidWebsite() {
Client client = controller.getClient();
client.setRedirectUris(new ArrayList<RedirectUri>());
client.setDisplayName(Text.valueOf("This is a valid name"));
client.setShortDescription(Text.valueOf("This is a valid description"));
client.setWebsite(Text.valueOf("http:://orcid.org"));
client = controller.createClient(client);
assertNotNull(client);
assertEquals(1, client.getErrors().size());
assertEquals(controller.getMessage("common.invalid_url"), client.getErrors().get(0));
}
@Test
@Transactional("transactionManager")
@Rollback(true)
public void invalidClientTest() {
//Test invalid fields
Client client = controller.getClient();
String _151chars = new String();
for(int i = 0; i < 151; i++) _151chars += "a";
client.setDisplayName(Text.valueOf(_151chars));
client.setShortDescription(Text.valueOf("description"));
client.setWebsite(Text.valueOf("http://site.com"));
client = controller.createClient(client);
List<String> errors = client.getErrors();
assertEquals(2, errors.size());
assertTrue(errors.contains(controller.getMessage("manage.developer_tools.group.error.display_name.150")));
assertTrue(errors.contains(controller.getMessage("common.invalid_url")));
//Test invalid redirect uris
client = controller.getClient();
client.setDisplayName(Text.valueOf("Name"));
client.setShortDescription(Text.valueOf("Description"));
client.setWebsite(Text.valueOf("http://mysite.com"));
List<RedirectUri> redirectUris = new ArrayList<RedirectUri>();
RedirectUri one = new RedirectUri();
one.setType(Text.valueOf("default"));
one.setValue(new Text());
redirectUris.add(one);
client.setRedirectUris(redirectUris);
client = controller.createClient(client);
errors = client.getErrors();
assertEquals(1, errors.size());
assertTrue(errors.contains(controller.getMessage("common.invalid_url")));
RedirectUri two = new RedirectUri();
two.setType(Text.valueOf("grant-read-wizard"));
two.setValue(new Text());
redirectUris = new ArrayList<RedirectUri>();
redirectUris.add(two);
client.setRedirectUris(redirectUris);
client = controller.createClient(client);
errors = client.getErrors();
assertEquals(2, errors.size());
assertTrue(errors.contains(controller.getMessage("common.invalid_url")));
assertTrue(errors.contains(controller.getMessage("manage.developer_tools.group.error.empty_scopes")));
}
}