/* * 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 org.apache.usergrid.rest.test.resource.AbstractRestIT; import org.apache.usergrid.rest.test.resource.model.Application; import org.apache.usergrid.rest.test.resource.model.Entity; import org.apache.usergrid.rest.test.resource.model.Organization; import org.apache.usergrid.rest.test.resource.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 final 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 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 Exception */ private void doTest(String symbol) throws Exception { 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")); } }