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);
}