blob: ceab55d3991a36b49c580f0c2c1d4dbd5dc91d78 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.usergrid.rest.management.organizations;
import com.sun.jersey.api.client.UniformInterfaceException;
import org.apache.usergrid.rest.test.resource2point0.AbstractRestIT;
import org.apache.usergrid.rest.test.resource2point0.model.Application;
import org.apache.usergrid.rest.test.resource2point0.model.Entity;
import org.apache.usergrid.rest.test.resource2point0.model.Organization;
import org.apache.usergrid.rest.test.resource2point0.model.Token;
import org.junit.Ignore;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.UUID;
import static junit.framework.TestCase.assertNotNull;
import static org.junit.Assert.assertEquals;
/**
* Tests for admin emails with + signs create accounts correctly, and can get tokens in both the POST and GET forms of
* the api
*
* @author tnine
*/
public class AdminEmailEncodingIT extends AbstractRestIT {
private static Logger log = LoggerFactory.getLogger(AdminEmailEncodingIT.class);
/**
* Ensure that '+' characters in email addresses are handled properly
*
* @throws Exception
*/
@Test
public void getTokenPlus() throws Exception {
doTest("+");
}
/**
* Ensure that '_' characters in email addresses are handled properly
*
* @throws Exception
*/
@Test
public void getTokenUnderscore() throws Exception {
doTest("_");
}
/**
* Ensure that '-' characters in email addresses are handled properly
*
* @throws Exception
*/
@Test
public void getTokenDash() throws Exception {
doTest("-");
}
/**
* Ensure that "'" characters in email addresses are handled properly
*
* @throws Exception
*/
@Test
@Ignore //This fails. I'm not sure if it is by design, but a single quote is valid in an email address
public void getTokenQuote() throws Exception {
doTest("'");
}
/**
* Given an organization name and an arbitrary character or string,
* ensure that an organization and admin user can be created when
* the given string is a part of the admin email address
*
* @param symbol
* @throws UniformInterfaceException
*/
private void doTest(String symbol) throws UniformInterfaceException {
String unique = UUID.randomUUID().toString();
String org = "org_getTokenDash" + unique;
String app = "app_getTokenDash" + unique;
//Username and password
String username = "testuser" + unique;
String password = "password" + unique;
//create an email address containing 'symbol'
String email = String.format("test%suser%s@usergrid.com", symbol, unique);
//create the organization entity
Organization orgPayload = new Organization(org, username, email, username, password, null);
//post the organization entity
Organization organization = clientSetup.getRestClient().management().orgs().post(orgPayload);
assertNotNull(organization);
//Retrieve an authorization token using the credentials created above
Token tokenReturned = clientSetup.getRestClient().management().token()
.post(false,Token.class,new Token("password", username, password),null);
assertNotNull(tokenReturned);
//Instruct the test framework to use the new token
this.app().token().setToken(tokenReturned);
//Create an application within the organization
clientSetup.getRestClient().management().orgs().org( organization.getName() ).app().post(new Application(app));
//retrieve the new management user by username and ensure the username and email address matches the input
Entity me = clientSetup.getRestClient().management().users().entity(username).get();
assertEquals(email, me.get("email"));
assertEquals(username, me.get("username"));
//retrieve the new management user by email and ensure the username and email address matches the input
me = clientSetup.getRestClient().management().users().entity(email).get();
assertEquals(email, me.get("email"));
assertEquals(username, me.get("username"));
}
}