org.gitana.platform.client.TenantTeamTest.java Source code

Java tutorial

Introduction

Here is the source code for org.gitana.platform.client.TenantTeamTest.java

Source

/**
 * Copyright 2013 Gitana Software, Inc.
 *
 * Licensed 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.
 *
 * For more information, please contact Gitana Software, Inc. at this
 * address:
 *
 *   info@gitanasoftware.com
 */

package org.gitana.platform.client;

import com.fasterxml.jackson.databind.node.ObjectNode;

import org.gitana.platform.client.api.Client;
import org.gitana.platform.client.platform.Platform;
import org.gitana.platform.client.principal.DomainUser;
import org.gitana.platform.client.registrar.Registrar;
import org.gitana.platform.client.tenant.Tenant;
import org.gitana.platform.support.ResultMap;
import org.gitana.util.JsonUtil;
import org.junit.Test;

/**
 * @author uzi
 */
public class TenantTeamTest extends AbstractTestCase {
    @Test
    public void testTenantTeams() {
        /////////////////////////////////////////////////////////////////////////////////////////////
        //
        // authenticate as ADMIN
        //

        Gitana gitana = new Gitana();

        Platform platform = gitana.authenticate("admin", "admin");

        // create user #1
        DomainUser user1 = platform.readDomain("default").createUser("user1-" + System.currentTimeMillis(), "pw");
        // create user #2
        DomainUser user2 = platform.readDomain("default").createUser("user1-" + System.currentTimeMillis(), "pw");

        // default registrar
        Registrar registrar = platform.readRegistrar("default");

        // create a tenant for user #1
        Tenant tenant1 = registrar.createTenant(user1, "unlimited");

        // create a tenant for user #2
        Tenant tenant2 = registrar.createTenant(user2, "unlimited");

        // verify that user1's identity has multiple users (user1 in default and user1prime in tenant1 domain)
        ResultMap<ObjectNode> userObjects = user1.readIdentity().findPolicyUserObjects();
        assertEquals(2, userObjects.size());

        // verify we can find tenants with this user
        ResultMap<ObjectNode> tenantObjects = user1.readIdentity().findPolicyTenantObjects(registrar);
        assertEquals(1, tenantObjects.size());

        // verify we can pick out the account this user has on tenant1
        ObjectNode foundTenantObject = tenantObjects.values().iterator().next();
        assertEquals(tenant1.getId(), foundTenantObject.get(Tenant.FIELD_ID).textValue());
        ObjectNode user1inTenant1Object = user1.readIdentity()
                .findPolicyUserObjectForTenant(foundTenantObject.get(Tenant.FIELD_ID).textValue());
        assertNotNull(user1inTenant1Object);
        assertNotNull(userObjects.get(user1inTenant1Object.get(Tenant.FIELD_ID).textValue()));

        // user1 has two identities right now
        userObjects = user1.readIdentity().findPolicyUserObjects();
        assertEquals(2, userObjects.size());

        /////////////////////////////////////////////////////////////////////////////////////////////
        //
        // authenticate as USER 2 (to tenant2)
        //

        // now sign into the tenant
        ObjectNode defaultClientObject2 = tenant2.readDefaultAllocatedClientObject();
        assertNotNull(defaultClientObject2);
        String clientKey2 = JsonUtil.objectGetString(defaultClientObject2, Client.FIELD_KEY);
        String clientSecret2 = JsonUtil.objectGetString(defaultClientObject2, Client.FIELD_SECRET);
        gitana = new Gitana(clientKey2, clientSecret2);
        platform = gitana.authenticateOnTenant(user2, "pw", tenant2.getId());

        // invite user 1 into user2's default domain
        DomainUser user1inTenant2 = platform.readPrimaryDomain().inviteUser(user1);

        /////////////////////////////////////////////////////////////////////////////////////////////
        //
        // authenticate as ADMIN
        //

        gitana = new Gitana();
        platform = gitana.authenticate("admin", "admin");

        // verify that user1's identity has multiple users (user1 in default, user1prime1 in tenant1 domain, user1prime2 in tenant2 domain)
        userObjects = user1.readIdentity().findPolicyUserObjects();
        assertEquals(3, userObjects.size());

        // verify we can find tenants with this user
        tenantObjects = user1.readIdentity().findPolicyTenantObjects(registrar);
        assertEquals(2, tenantObjects.size());

        // verify we can pick out the account this user has on tenant1
        ObjectNode userObject1inTenant1check = user1.readIdentity().findPolicyUserObjectForTenant(tenant1.getId());
        assertNotNull(userObject1inTenant1check);
        assertNotNull(userObjects.get(userObject1inTenant1check.get(DomainUser.FIELD_ID).textValue()));
        ObjectNode userObject1inTenant2check = user1.readIdentity().findPolicyUserObjectForTenant(tenant2.getId());
        assertNotNull(userObject1inTenant2check);
        assertNotNull(userObjects.get(userObject1inTenant2check.get(DomainUser.FIELD_ID).textValue()));

    }

}