| /** |
| * Created by ApigeeCorporation on 12/4/14. |
| */ |
| /* |
| * 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.test.resource2point0; |
| |
| |
| import java.io.IOException; |
| |
| import org.apache.usergrid.corepersistence.util.CpNamingUtils; |
| import org.apache.usergrid.rest.test.resource2point0.model.ApiResponse; |
| import org.apache.usergrid.rest.test.resource2point0.model.Application; |
| import org.apache.usergrid.rest.test.resource2point0.model.Credentials; |
| import org.apache.usergrid.rest.test.resource2point0.model.Entity; |
| import org.apache.usergrid.rest.test.resource2point0.model.Token; |
| import org.junit.rules.TestRule; |
| import org.junit.runner.Description; |
| import org.junit.runners.model.Statement; |
| |
| import org.apache.usergrid.persistence.index.utils.UUIDUtils; |
| import org.apache.usergrid.rest.test.resource2point0.model.Organization; |
| import org.slf4j.Logger; |
| import org.slf4j.LoggerFactory; |
| |
| import javax.ws.rs.core.MediaType; |
| |
| |
| /** |
| * This class is used to setup the client rule that will setup the RestClient and create default applications. |
| */ |
| public class ClientSetup implements TestRule { |
| |
| private Logger logger = LoggerFactory.getLogger( ClientSetup.class ); |
| |
| RestClient restClient; |
| |
| protected String username; |
| protected String password; |
| protected String orgName; |
| protected String appName; |
| protected String appUuid; |
| protected Token superuserToken; |
| protected String superuserName = "superuser"; |
| protected String superuserPassword = "superpassword"; |
| protected Credentials clientCredentials; |
| |
| protected Organization organization; |
| protected Application application; |
| |
| |
| public ClientSetup (String serverUrl) { |
| |
| restClient = new RestClient( serverUrl ); |
| } |
| |
| public Statement apply( Statement base, Description description ) { |
| return statement( base, description ); |
| } |
| |
| |
| private Statement statement( final Statement base, final Description description ) { |
| return new Statement() { |
| @Override |
| public void evaluate() throws Throwable { |
| before( description ); |
| try { |
| base.evaluate(); |
| } |
| finally { |
| cleanup(); |
| } |
| } |
| }; |
| } |
| |
| |
| protected void cleanup() { |
| // might want to do something here later |
| } |
| |
| |
| protected void before( Description description ) throws IOException { |
| String testClass = description.getTestClass().getName(); |
| String methodName = description.getMethodName(); |
| String name = testClass + "." + methodName; |
| |
| try { |
| restClient.superuserSetup(); |
| superuserToken = restClient.management().token().get(superuserName, superuserPassword); |
| } catch ( Exception e ) { |
| if ( logger.isDebugEnabled() ) { |
| logger.debug( "Error creating superuser, may already exist", e ); |
| } else { |
| logger.warn( "Error creating superuser, may already exist"); |
| } |
| } |
| |
| username = "user_"+name + UUIDUtils.newTimeUUID(); |
| password = username; |
| orgName = "org_"+name+UUIDUtils.newTimeUUID(); |
| appName = "app_"+name+UUIDUtils.newTimeUUID(); |
| |
| organization = restClient.management().orgs() |
| .post( new Organization( orgName, username, username + "@usergrid.com", username, |
| username, null ) ); |
| |
| restClient.management().token().get(username,password); |
| |
| // refreshIndex(); |
| clientCredentials = restClient.management().orgs().organization( orgName ).credentials().get(Credentials.class); |
| //refreshIndex(); |
| |
| |
| ApiResponse appResponse = restClient.management().orgs().organization(organization.getName()).app().post(new Application(appName)); |
| appUuid = ( String ) appResponse.getEntities().get( 0 ).get( "uuid" ); |
| refreshIndex(); |
| |
| } |
| |
| public String getUsername(){return username;} |
| |
| public String getEmail(){return username+"@usergrid.com";} |
| |
| public String getPassword(){return password;} |
| |
| public Organization getOrganization(){return organization;} |
| |
| public String getOrganizationName(){return orgName;} |
| |
| public String getAppName() {return appName;} |
| |
| public String getAppUuid() { |
| return appUuid; |
| } |
| |
| public Token getSuperuserToken() { |
| return superuserToken; |
| } |
| |
| public String getSuperuserName() { |
| return superuserName; |
| } |
| |
| public String getSuperuserPassword() { |
| return superuserPassword; |
| } |
| |
| public Credentials getClientCredentials() { |
| return clientCredentials; |
| } |
| |
| public void refreshIndex() { |
| this.restClient.refreshIndex(getOrganizationName(),getAppName(), CpNamingUtils.getManagementApplicationId().getUuid().toString()); |
| |
| if(!CpNamingUtils.getManagementApplicationId().getUuid().toString().equals(getAppUuid())) { |
| this.restClient.refreshIndex(getOrganizationName(), getAppName(), getAppUuid()); |
| } |
| } |
| |
| public RestClient getRestClient(){ |
| return restClient; |
| } |
| } |