Author: ivol37 at gmail.com
Date: Wed Feb  2 17:04:12 2011
New Revision: 746

Log:
[AMDATU-84] Fixed tenant awareness of token provider and all services using the 
token provider (like the three oAuth servlets). Also fixed integration tests to 
handle the new situation where an Amdatu token generated on tenant A cannot be 
reused for tenant B.

Modified:
   
branches/amdatu-dispatcher/amdatu-authentication/oauth-server/src/main/java/org/amdatu/authentication/oauth/server/osgi/Activator.java
   branches/amdatu-dispatcher/amdatu-authentication/tokenprovider/pom.xml
   
branches/amdatu-dispatcher/amdatu-authentication/tokenprovider/src/main/java/org/amdatu/authentication/tokenprovider/TokenProvider.java
   
branches/amdatu-dispatcher/amdatu-authentication/tokenprovider/src/main/java/org/amdatu/authentication/tokenprovider/osgi/Activator.java
   
branches/amdatu-dispatcher/amdatu-authentication/tokenprovider/src/main/java/org/amdatu/authentication/tokenprovider/service/TokenProviderImpl.java
   
branches/amdatu-dispatcher/amdatu-authorization/login-service/src/main/java/org/amdatu/authorization/login/service/osgi/Activator.java
   
branches/amdatu-dispatcher/amdatu-authorization/login-service/src/main/java/org/amdatu/authorization/login/service/service/LoginServiceImpl.java
   
branches/amdatu-dispatcher/amdatu-authorization/useradmin-rest/src/main/java/org/amdatu/authorization/useradmin/rest/osgi/Activator.java
   
branches/amdatu-dispatcher/amdatu-authorization/useradmin-rest/src/main/java/org/amdatu/authorization/useradmin/rest/service/ResourceBase.java
   
branches/amdatu-dispatcher/amdatu-opensocial/gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/osgi/Activator.java
   
branches/amdatu-dispatcher/amdatu-opensocial/gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/service/GadgetManagementServiceImpl.java
   
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/RESTTestBase.java
   
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/tests/UserAdminRESTTest.java

Modified: 
branches/amdatu-dispatcher/amdatu-authentication/oauth-server/src/main/java/org/amdatu/authentication/oauth/server/osgi/Activator.java
==============================================================================
--- 
branches/amdatu-dispatcher/amdatu-authentication/oauth-server/src/main/java/org/amdatu/authentication/oauth/server/osgi/Activator.java
      (original)
+++ 
branches/amdatu-dispatcher/amdatu-authentication/oauth-server/src/main/java/org/amdatu/authentication/oauth/server/osgi/Activator.java
      Wed Feb  2 17:04:12 2011
@@ -104,12 +104,11 @@
         Dictionary<String, String> servletProperties = new Hashtable<String, 
String>();
         servletProperties.put("alias", alias);
         servletProperties.put("contextId", alias);
-        return createComponent()
+        return createAdapterService(TokenProvider.class, null)
             .setInterface(new String[]{servletInterface.getName(), 
Servlet.class.getName()}, servletProperties)
             .setImplementation(servletClass)
             
.add(createServiceDependency().setService(OAuthTokenProvider.class).setRequired(true))
             
.add(createServiceDependency().setService(OAuthServiceProvider.class).setRequired(true))
-            
.add(createServiceDependency().setService(TokenProvider.class).setRequired(true))
             
.add(createServiceDependency().setService(LogService.class).setRequired(true));
     }
 

Modified: branches/amdatu-dispatcher/amdatu-authentication/tokenprovider/pom.xml
==============================================================================
--- branches/amdatu-dispatcher/amdatu-authentication/tokenprovider/pom.xml      
(original)
+++ branches/amdatu-dispatcher/amdatu-authentication/tokenprovider/pom.xml      
Wed Feb  2 17:04:12 2011
@@ -12,7 +12,7 @@
   <packaging>bundle</packaging>
   <name>Amdatu Authentication - Token provider</name>
   <description>This bundle includes a token provider for token 
distribution</description>
-  
+
   <dependencies>
     <dependency>
       <groupId>commons-codec</groupId>
@@ -26,15 +26,22 @@
       <version>${platform.version}</version>
       <scope>provided</scope>
       <type>bundle</type>
-    </dependency>    
+    </dependency>
     <dependency>
       <groupId>org.amdatu.libraries</groupId>
       <artifactId>utilities</artifactId>
       <version>${platform.version}</version>
       <scope>compile</scope>
     </dependency>
+    <dependency>
+      <groupId>org.amdatu.core</groupId>
+      <artifactId>tenant</artifactId>
+      <version>${platform.version}</version>
+      <scope>provided</scope>
+      <type>bundle</type>
+    </dependency>
   </dependencies>
-  
+
   <build>
     <plugins>
       <plugin>
@@ -55,5 +62,5 @@
         </configuration>
       </plugin>
     </plugins>
-  </build> 
+  </build>
 </project>

Modified: 
branches/amdatu-dispatcher/amdatu-authentication/tokenprovider/src/main/java/org/amdatu/authentication/tokenprovider/TokenProvider.java
==============================================================================
--- 
branches/amdatu-dispatcher/amdatu-authentication/tokenprovider/src/main/java/org/amdatu/authentication/tokenprovider/TokenProvider.java
     (original)
+++ 
branches/amdatu-dispatcher/amdatu-authentication/tokenprovider/src/main/java/org/amdatu/authentication/tokenprovider/TokenProvider.java
     Wed Feb  2 17:04:12 2011
@@ -61,6 +61,11 @@
     final String TIMESTAMP = "token_timestamp";
     
     /**
+     * Name under which the tenant parameter is stored.
+     */
+    final String TENANTID = "tenantid";
+    
+    /**
      * Name under which a username parameter can be stored (this is optional).
      */
     final String USERNAME = "token_username";

Modified: 
branches/amdatu-dispatcher/amdatu-authentication/tokenprovider/src/main/java/org/amdatu/authentication/tokenprovider/osgi/Activator.java
==============================================================================
--- 
branches/amdatu-dispatcher/amdatu-authentication/tokenprovider/src/main/java/org/amdatu/authentication/tokenprovider/osgi/Activator.java
    (original)
+++ 
branches/amdatu-dispatcher/amdatu-authentication/tokenprovider/src/main/java/org/amdatu/authentication/tokenprovider/osgi/Activator.java
    Wed Feb  2 17:04:12 2011
@@ -19,6 +19,7 @@
 import org.amdatu.authentication.tokenprovider.TokenProvider;
 import org.amdatu.authentication.tokenprovider.TokenStorageProvider;
 import org.amdatu.authentication.tokenprovider.service.TokenProviderImpl;
+import org.amdatu.core.tenant.Tenant;
 import org.amdatu.libraries.utilities.osgi.ServiceDependentActivator;
 import org.amdatu.web.rest.jaxrs.JaxRsSpi;
 import org.apache.felix.dm.DependencyManager;
@@ -40,7 +41,7 @@
     public void initWithDependencies(BundleContext context, DependencyManager 
manager) throws Exception {
         // Create and register the Token provider service component.
         manager.add(
-            createComponent()
+               createAdapterService(Tenant.class, null)
             .setInterface(TokenProvider.class.getName(), null)
             .setImplementation(TokenProviderImpl.class)
             
.add(createServiceDependency().setService(LogService.class).setRequired(true))

Modified: 
branches/amdatu-dispatcher/amdatu-authentication/tokenprovider/src/main/java/org/amdatu/authentication/tokenprovider/service/TokenProviderImpl.java
==============================================================================
--- 
branches/amdatu-dispatcher/amdatu-authentication/tokenprovider/src/main/java/org/amdatu/authentication/tokenprovider/service/TokenProviderImpl.java
 (original)
+++ 
branches/amdatu-dispatcher/amdatu-authentication/tokenprovider/src/main/java/org/amdatu/authentication/tokenprovider/service/TokenProviderImpl.java
 Wed Feb  2 17:04:12 2011
@@ -37,6 +37,7 @@
 import org.amdatu.authentication.tokenprovider.TokenProvider;
 import org.amdatu.authentication.tokenprovider.TokenProviderException;
 import org.amdatu.authentication.tokenprovider.TokenStorageProvider;
+import org.amdatu.core.tenant.Tenant;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.codec.binary.StringUtils;
 import org.apache.commons.codec.digest.DigestUtils;
@@ -48,6 +49,7 @@
 
     // Service dependencies
     private volatile LogService m_logService;
+    private volatile Tenant m_tenant;
 
     // Ecnryption and decryption key and ciphers
     private final static String ENCRYPTION_METHOD = "AES";
@@ -82,6 +84,10 @@
             m_decryptCipher.init(Cipher.DECRYPT_MODE, m_secretKey);
         }
     }
+    
+    public void start() {
+        m_logService.log(LogService.LOG_INFO, "Token provider for tenant '" + 
m_tenant.getId() + "' started.");        
+    }
 
     // The token store
     private TokenStorageProvider m_tokenStore;
@@ -149,12 +155,16 @@
             if (attributes.containsKey(TIMESTAMP)) {
                 throw new TokenProviderException("Invalid token attributes 
provided. Parameter '" + TIMESTAMP + "' is a preserved name");
             }
+            if (attributes.containsKey(TENANTID)) {
+                throw new TokenProviderException("Invalid token attributes 
provided. Parameter '" + TENANTID + "' is a preserved name");
+            }
 
             // Add nonce and timestamp attributes
             String nonce = DigestUtils.md5Hex(new 
Long(System.nanoTime()).toString());
             attributes.put(NONCE, nonce);
             String timestamp = new Long(System.currentTimeMillis()).toString();
             attributes.put(TIMESTAMP, timestamp);
+            attributes.put(TENANTID, m_tenant.getId());
 
             // First create the unencrypted token
             String signature = generateSignature(attributes);

Modified: 
branches/amdatu-dispatcher/amdatu-authorization/login-service/src/main/java/org/amdatu/authorization/login/service/osgi/Activator.java
==============================================================================
--- 
branches/amdatu-dispatcher/amdatu-authorization/login-service/src/main/java/org/amdatu/authorization/login/service/osgi/Activator.java
      (original)
+++ 
branches/amdatu-dispatcher/amdatu-authorization/login-service/src/main/java/org/amdatu/authorization/login/service/osgi/Activator.java
      Wed Feb  2 17:04:12 2011
@@ -16,7 +16,6 @@
  */
 package org.amdatu.authorization.login.service.osgi;
 
-import org.amdatu.authentication.tokenprovider.TokenProvider;
 import org.amdatu.authorization.login.service.LoginService;
 import org.amdatu.authorization.login.service.service.LoginServiceImpl;
 import org.amdatu.core.tenant.Tenant;
@@ -56,7 +55,6 @@
                 .setInterface(LoginService.class.getName(), null)
                 .setImplementation(LoginServiceImpl.class)
                 
.add(createServiceDependency().setService(HttpContextServiceFactory.class).setRequired(true))
-                
.add(createServiceDependency().setService(TokenProvider.class).setRequired(true))
                 
.add(createServiceDependency().setService(LogService.class).setRequired(true))
                 
.add(createServiceDependency().setService(TenantManagementService.class).setRequired(true)));
        
     }

Modified: 
branches/amdatu-dispatcher/amdatu-authorization/login-service/src/main/java/org/amdatu/authorization/login/service/service/LoginServiceImpl.java
==============================================================================
--- 
branches/amdatu-dispatcher/amdatu-authorization/login-service/src/main/java/org/amdatu/authorization/login/service/service/LoginServiceImpl.java
    (original)
+++ 
branches/amdatu-dispatcher/amdatu-authorization/login-service/src/main/java/org/amdatu/authorization/login/service/service/LoginServiceImpl.java
    Wed Feb  2 17:04:12 2011
@@ -48,9 +48,11 @@
 import org.amdatu.web.httpcontext.HttpContextServiceFactory;
 import org.amdatu.web.httpcontext.ResourceProvider;
 import org.apache.felix.dm.Component;
+import org.apache.felix.dm.DependencyManager;
 import org.json.JSONException;
 import org.json.JSONObject;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
 import org.osgi.service.log.LogService;
 import org.osgi.service.useradmin.Group;
 import org.osgi.service.useradmin.Role;
@@ -75,11 +77,14 @@
        private volatile HttpContextServiceFactory m_httpContextServiceFactory;
        private volatile UserAdmin m_userAdmin;
        private volatile TokenProvider m_tokenProvider;
-       protected volatile TenantManagementService m_tenantManagementService;
-
+       private volatile Component m_component;
+       private volatile DependencyManager m_dependencyManager;
+       private volatile TenantManagementService m_tenantManagementService;
+       private volatile Tenant m_tenant;
+       
        // The private HTTP context service for this bundle
        private Component m_httpContextComponent;
-       private  Tenant m_tenant;
+       
 
        // Disable HTTP caching in this REST interface
        private static CacheControl m_cacheControl;
@@ -99,6 +104,12 @@
                // Retrieve the tenant
                String tenantId = (String) 
component.getServiceProperties().get("tenant_id");
                m_tenant = m_tenantManagementService.getTenantById(tenantId);
+               
+               // Create a service dependency on the token provider for 'our' 
tenant
+               String tenantFilter = "(&(" + Tenant.SERVICE_PREFIX + "id=" + 
tenantId + ")(" + Constants.OBJECTCLASS
+               + "=" + TokenProvider.class.getName() + "))";
+               m_component.add(m_dependencyManager.createServiceDependency()
+                               .setService(TokenProvider.class, 
tenantFilter).setRequired(true).setInstanceBound(true));
 
                m_logService.log(LogService.LOG_INFO, getClass().getName() + " 
service initialized for tenant '" + tenantId + "'");
        }

Modified: 
branches/amdatu-dispatcher/amdatu-authorization/useradmin-rest/src/main/java/org/amdatu/authorization/useradmin/rest/osgi/Activator.java
==============================================================================
--- 
branches/amdatu-dispatcher/amdatu-authorization/useradmin-rest/src/main/java/org/amdatu/authorization/useradmin/rest/osgi/Activator.java
    (original)
+++ 
branches/amdatu-dispatcher/amdatu-authorization/useradmin-rest/src/main/java/org/amdatu/authorization/useradmin/rest/osgi/Activator.java
    Wed Feb  2 17:04:12 2011
@@ -16,7 +16,6 @@
  */
 package org.amdatu.authorization.useradmin.rest.osgi;
 
-import org.amdatu.authentication.tokenprovider.TokenProvider;
 import org.amdatu.authorization.useradmin.rest.service.GroupsResource;
 import org.amdatu.authorization.useradmin.rest.service.RolesResource;
 import org.amdatu.authorization.useradmin.rest.service.UsersResource;
@@ -54,15 +53,13 @@
             .setInterface(RESTService.class.getName(), null)
             .setImplementation(UsersResource.class)
             
.add(createServiceDependency().setService(LogService.class).setRequired(true))
-            
.add(createServiceDependency().setService(TenantManagementService.class).setRequired(true))
-            
.add(createServiceDependency().setService(TokenProvider.class).setRequired(true)));
+            
.add(createServiceDependency().setService(TenantManagementService.class).setRequired(true)));
 
         // Create the groups resource service and register it as REST service
         manager.add(createAdapterService(UserAdmin.class, filter)
             .setInterface(RESTService.class.getName(), null)
             .setImplementation(GroupsResource.class)
             
.add(createServiceDependency().setService(LogService.class).setRequired(true))
-            
.add(createServiceDependency().setService(TokenProvider.class).setRequired(true))
             
.add(createServiceDependency().setService(TenantManagementService.class).setRequired(true)));
 
         // Create the groups resource service and register it as REST service
@@ -70,7 +67,6 @@
             .setInterface(RESTService.class.getName(), null)
             .setImplementation(RolesResource.class)
             
.add(createServiceDependency().setService(LogService.class).setRequired(true))
-            
.add(createServiceDependency().setService(TokenProvider.class).setRequired(true))
             
.add(createServiceDependency().setService(TenantManagementService.class).setRequired(true)));
     }
 

Modified: 
branches/amdatu-dispatcher/amdatu-authorization/useradmin-rest/src/main/java/org/amdatu/authorization/useradmin/rest/service/ResourceBase.java
==============================================================================
--- 
branches/amdatu-dispatcher/amdatu-authorization/useradmin-rest/src/main/java/org/amdatu/authorization/useradmin/rest/service/ResourceBase.java
      (original)
+++ 
branches/amdatu-dispatcher/amdatu-authorization/useradmin-rest/src/main/java/org/amdatu/authorization/useradmin/rest/service/ResourceBase.java
      Wed Feb  2 17:04:12 2011
@@ -40,7 +40,9 @@
 import org.amdatu.libraries.utilities.rest.AtomSyndicationLink;
 import org.amdatu.web.rest.jaxrs.RESTService;
 import org.apache.felix.dm.Component;
+import org.apache.felix.dm.DependencyManager;
 import org.json.JSONObject;
+import org.osgi.framework.Constants;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.service.log.LogService;
 import org.osgi.service.useradmin.Group;
@@ -57,8 +59,9 @@
     protected volatile UserAdmin m_userAdmin;
     protected volatile TokenProvider m_tokenProvider;
     protected volatile TenantManagementService m_tenantManagementService;
-    
-    protected Tenant m_tenant;
+    protected volatile Component m_component;
+    protected volatile DependencyManager m_dependencyManager;
+    protected volatile Tenant m_tenant;
 
     // Disable HTTP caching in this REST interface
     private static CacheControl m_cacheControl;
@@ -71,6 +74,12 @@
        // Retrieve the tenant
        String tenantId = (String) 
component.getServiceProperties().get("tenant_id");
        m_tenant = m_tenantManagementService.getTenantById(tenantId);
+       
+       // Create a service dependency on the token provider for 'our' tenant
+               String tenantFilter = "(&(" + Tenant.SERVICE_PREFIX + "id=" + 
tenantId + ")(" + Constants.OBJECTCLASS
+               + "=" + TokenProvider.class.getName() + "))";
+               m_component.add(m_dependencyManager.createServiceDependency()
+                               .setService(TokenProvider.class, 
tenantFilter).setRequired(true).setInstanceBound(true));
     }
 
     /**

Modified: 
branches/amdatu-dispatcher/amdatu-opensocial/gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/osgi/Activator.java
==============================================================================
--- 
branches/amdatu-dispatcher/amdatu-opensocial/gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/osgi/Activator.java
      (original)
+++ 
branches/amdatu-dispatcher/amdatu-opensocial/gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/osgi/Activator.java
      Wed Feb  2 17:04:12 2011
@@ -16,7 +16,6 @@
  */
 package org.amdatu.opensocial.gadgetmanagement.osgi;
 
-import org.amdatu.authentication.tokenprovider.TokenProvider;
 import org.amdatu.cassandra.listener.ColumnFamilyAvailable;
 import org.amdatu.cassandra.persistencemanager.CassandraPersistenceManager;
 import org.amdatu.core.tenant.Tenant;
@@ -68,7 +67,6 @@
                 
.add(createServiceDependency().setService(HttpContextServiceFactory.class).setRequired(true))
                 
.add(createServiceDependency().setService(ColumnFamilyAvailable.class, 
gadgetFilter).setRequired(true))
                 
.add(createServiceDependency().setService(GadgetStore.class).setRequired(true))
-                
.add(createServiceDependency().setService(TokenProvider.class).setRequired(true))
                 
.add(createServiceDependency().setService(CassandraPersistenceManager.class, 
keyspaceFilter).setRequired(true)));
     }
 

Modified: 
branches/amdatu-dispatcher/amdatu-opensocial/gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/service/GadgetManagementServiceImpl.java
==============================================================================
--- 
branches/amdatu-dispatcher/amdatu-opensocial/gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/service/GadgetManagementServiceImpl.java
 (original)
+++ 
branches/amdatu-dispatcher/amdatu-opensocial/gadgetmanagement/src/main/java/org/amdatu/opensocial/gadgetmanagement/service/GadgetManagementServiceImpl.java
 Wed Feb  2 17:04:12 2011
@@ -53,6 +53,7 @@
 import org.amdatu.authentication.tokenprovider.TokenProviderException;
 import org.amdatu.authorization.login.service.LoginService;
 import org.amdatu.cassandra.persistencemanager.CassandraException;
+import org.amdatu.core.tenant.Tenant;
 import org.amdatu.libraries.utilities.ConversionUtil;
 import org.amdatu.opensocial.gadgetmanagement.GadgetManagement;
 import org.amdatu.opensocial.gadgetmanagement.osgi.Activator;
@@ -63,6 +64,7 @@
 import org.amdatu.web.httpcontext.HttpContextServiceFactory;
 import org.amdatu.web.httpcontext.ResourceProvider;
 import org.apache.felix.dm.Component;
+import org.apache.felix.dm.DependencyManager;
 import org.apache.shindig.auth.BlobCrypterSecurityToken;
 import org.apache.shindig.common.crypto.BasicBlobCrypter;
 import org.apache.shindig.common.crypto.BlobCrypterException;
@@ -75,6 +77,7 @@
 import org.json.JSONException;
 import org.json.JSONObject;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
 import org.osgi.service.log.LogService;
 import org.osgi.service.useradmin.User;
 import org.osgi.service.useradmin.UserAdmin;
@@ -101,7 +104,9 @@
     private volatile UserAdmin m_userAdmin;
     private volatile HttpContextServiceFactory m_httpContextFactoryService;
     private volatile GadgetStore m_gadgetStore;
+    private volatile Component m_component;
     private volatile TokenProvider m_tokenProvider;
+    private volatile DependencyManager m_dependencyManager;
 
     private Component m_httpContextComponent;
 
@@ -132,6 +137,13 @@
         // Create our own http context and register resources
         m_httpContextComponent = 
m_httpContextFactoryService.create(m_bundleContext, this);
 
+       // Create a service dependency on the token provider for 'our' tenant
+        String tenantId = (String) 
m_component.getServiceProperties().get("tenant_id");
+               String tenantFilter = "(&(" + Tenant.SERVICE_PREFIX + "id=" + 
tenantId + ")(" + Constants.OBJECTCLASS
+               + "=" + TokenProvider.class.getName() + "))";
+               m_component.add(m_dependencyManager.createServiceDependency()
+                               .setService(TokenProvider.class, 
tenantFilter).setRequired(true).setInstanceBound(true));
+               
         m_logService.log(LogService.LOG_INFO, getClass().getName() + " service 
initialized");
     }
 

Modified: 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/RESTTestBase.java
==============================================================================
--- 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/RESTTestBase.java
       (original)
+++ 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/RESTTestBase.java
       Wed Feb  2 17:04:12 2011
@@ -20,6 +20,8 @@
 import static org.ops4j.pax.exam.CoreOptions.provision;
 
 import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
 
 import org.amdatu.core.tenant.TenantManagementService;
 import org.amdatu.test.integration.util.Login;
@@ -46,7 +48,7 @@
  * @author ivol
  */
 public abstract class RESTTestBase extends IntegrationTestBase {
-    private HeaderElement m_cookieHeaderElement;
+    private Map<String, HeaderElement> m_cookieHeaderElement = new 
HashMap<String, HeaderElement>();
     private String m_host = null;
     private String m_baseUrl = null;
 
@@ -118,6 +120,7 @@
     }
     
     protected void switchHost(String newHostName) {
+       m_host = newHostName;
        m_baseUrl = "http://"; + newHostName + ":" + ConfigProvider.PORTNR + 
"/rest";
     }
 
@@ -151,12 +154,12 @@
     }
 
     protected void loginAsAdministrator() throws HttpException, IOException {
-        m_cookieHeaderElement = Login.login(m_host, 
ConfigProvider.ADMIN_USERNAME, ConfigProvider.ADMIN_PASSWORD);
+        m_cookieHeaderElement.put(m_host, Login.login(m_host, 
ConfigProvider.ADMIN_USERNAME, ConfigProvider.ADMIN_PASSWORD));
     }
 
     protected void addCookieHeader(HttpMethod method) {
-        if (m_cookieHeaderElement != null) {
-            String header = m_cookieHeaderElement.getName() + "=" + 
m_cookieHeaderElement.getValue();
+        if (m_cookieHeaderElement.get(m_host) != null) {
+            String header = m_cookieHeaderElement.get(m_host).getName() + "=" 
+ m_cookieHeaderElement.get(m_host).getValue();
             method.addRequestHeader("Cookie", header);
         }
     }

Modified: 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/tests/UserAdminRESTTest.java
==============================================================================
--- 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/tests/UserAdminRESTTest.java
 (original)
+++ 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/tests/UserAdminRESTTest.java
 Wed Feb  2 17:04:12 2011
@@ -32,7 +32,6 @@
 import org.junit.runner.RunWith;
 import org.ops4j.pax.exam.Option;
 import org.ops4j.pax.exam.junit.JUnit4TestRunner;
-import org.osgi.framework.ServiceReference;
 import org.osgi.service.cm.ConfigurationAdmin;
 import org.osgi.service.log.LogService;
 import org.osgi.service.useradmin.UserAdmin;
@@ -95,12 +94,16 @@
         m_logService.log(LogService.LOG_DEBUG, "UserAdmin REST service on '" + 
getBaseUrl() + "' now available");
 
         // -7- Now verify that for this new tenant a new user 'Administrator' 
should have been created, verify that.
-        // FIXME: Note that since the token provider is not yet tenant 
specific, using the same token for this
-        // request will work just fine
+        // Note that since the token provider is also tenant specific, using 
the same token for this
+        // request should return an unauthorized response
         url = "/users/Administrator";
+        invokeRestApi(url,  javax.ws.rs.HttpMethod.GET, 
HttpStatus.SC_UNAUTHORIZED);
+        
+        // -8- So login as Administrator and try again
+        loginAsAdministrator();
         invokeRestApi(url,  javax.ws.rs.HttpMethod.GET, HttpStatus.SC_OK);
         
-        // -8- Create a new user on '127.0.0.1' and verify that this new user 
comes available on this host
+        // -9- Create a new user on '127.0.0.1' and verify that this new user 
comes available on this host
         // and not on 'localhost'
         url = "/users/" + ConfigProvider.TEST_USERNAME;
         invokeRestApi(url,  javax.ws.rs.HttpMethod.PUT, HttpStatus.SC_OK);
@@ -109,11 +112,11 @@
         switchHost(ConfigProvider.HOSTNAME);
         invokeRestApi(url,  javax.ws.rs.HttpMethod.GET, 
HttpStatus.SC_NOT_FOUND);
         
-        // -9- Remove the test user
+        // -10- Remove the test user
         switchHost(ConfigProvider.IP);
         invokeRestApi(url,  javax.ws.rs.HttpMethod.DELETE, HttpStatus.SC_OK);
         
-        // -10- Remove the tenant and verify that a GET returns a 404
+        // -11- Remove the tenant and verify that a GET returns a 404
         m_tenantService.deleteTenant(tenant);
         invokeRestApi(url,  javax.ws.rs.HttpMethod.DELETE, 
HttpStatus.SC_NOT_FOUND);
     }

Reply via email to