Author: [email protected]
Date: Fri Sep 23 12:12:50 2011
New Revision: 1412
Log:
[AMDATUCASSANDRA-90] Implemented proper tenant awareness of cassandra consumer
store. Also added an integration test to verify this.
Added:
trunk/amdatu-cassandra/test-integration/tests/src/test/java/org/amdatu/cassandra/test/integration/tests/OAuthServiceConsumerRESTTest.java
trunk/amdatu-cassandra/test-integration/tests/src/test/java/org/amdatu/cassandra/test/integration/tests/OAuthServiceConsumerTest.java
Modified:
trunk/amdatu-cassandra/cassandra-store-consumer/src/main/java/org/amdatu/cassandra/store/consumer/osgi/Activator.java
trunk/amdatu-cassandra/cassandra-store-consumer/src/main/java/org/amdatu/cassandra/store/consumer/service/CassandraConsumerStorageProviderImpl.java
trunk/amdatu-cassandra/cassandra-store-consumer/src/main/java/org/amdatu/cassandra/store/consumer/service/ConsumerColumnFamilyProvider.java
trunk/amdatu-cassandra/cassandra-store-token/src/main/java/org/amdatu/cassandra/store/token/osgi/Activator.java
trunk/amdatu-cassandra/cassandra-store-token/src/main/java/org/amdatu/cassandra/store/token/service/CassandraTokenStorageProviderImpl.java
trunk/amdatu-cassandra/cassandra-store-token/src/main/java/org/amdatu/cassandra/store/token/service/TokenColumnFamilyProvider.java
trunk/amdatu-cassandra/test-integration/base/src/main/java/org/amdatu/cassandra/test/integration/base/CassandraFixture.java
trunk/amdatu-cassandra/test-integration/pom.xml
trunk/amdatu-cassandra/test-integration/tests/pom.xml
trunk/amdatu-cassandra/test-integration/tests/src/test/java/org/amdatu/cassandra/test/integration/tests/framework/CassandraTest.java
trunk/amdatu-cassandra/test-integration/tests/src/test/java/org/amdatu/cassandra/test/integration/tests/framework/CassandraTestBase.java
Modified:
trunk/amdatu-cassandra/cassandra-store-consumer/src/main/java/org/amdatu/cassandra/store/consumer/osgi/Activator.java
==============================================================================
---
trunk/amdatu-cassandra/cassandra-store-consumer/src/main/java/org/amdatu/cassandra/store/consumer/osgi/Activator.java
(original)
+++
trunk/amdatu-cassandra/cassandra-store-consumer/src/main/java/org/amdatu/cassandra/store/consumer/osgi/Activator.java
Fri Sep 23 12:12:50 2011
@@ -16,11 +16,10 @@
package org.amdatu.cassandra.store.consumer.osgi;
import org.amdatu.auth.oauth.consumerregistry.OAuthServiceConsumerRegistry;
-import org.amdatu.cassandra.listener.ColumnFamilyAvailable;
import org.amdatu.cassandra.listener.ColumnFamilyProvider;
-import org.amdatu.cassandra.persistencemanager.CassandraPersistenceManager;
import
org.amdatu.cassandra.store.consumer.service.CassandraConsumerStorageProviderImpl;
import
org.amdatu.cassandra.store.consumer.service.ConsumerColumnFamilyProvider;
+import org.amdatu.core.tenant.Tenant;
import org.apache.felix.dm.DependencyActivatorBase;
import org.apache.felix.dm.DependencyManager;
import org.osgi.framework.BundleContext;
@@ -38,17 +37,11 @@
.setImplementation(ConsumerColumnFamilyProvider.class));
// Create and register the Cassandra Service consumer storage provider
- String keyspaceFilter = "(" +
CassandraPersistenceManager.KEYSPACE_AWARE_KEY + "="
- + CassandraPersistenceManager.DEFAULT_KEYSPACE + ")";
- String consumerCFFilter = "(&" + keyspaceFilter + "(" +
ColumnFamilyAvailable.FILTER_NAME
- + "=" + ConsumerColumnFamilyProvider.CF_CONSUMER + "))";
manager.add(
- createComponent()
+ createAdapterService(Tenant.class, null)
.setImplementation(CassandraConsumerStorageProviderImpl.class)
.setInterface(OAuthServiceConsumerRegistry.class.getName(), null)
-
.add(createServiceDependency().setService(LogService.class).setRequired(true))
-
.add(createServiceDependency().setService(CassandraPersistenceManager.class,
keyspaceFilter).setRequired(true))
-
.add(createServiceDependency().setService(ColumnFamilyAvailable.class,
consumerCFFilter).setRequired(true)));
+
.add(createServiceDependency().setService(LogService.class).setRequired(true)));
}
@Override
Modified:
trunk/amdatu-cassandra/cassandra-store-consumer/src/main/java/org/amdatu/cassandra/store/consumer/service/CassandraConsumerStorageProviderImpl.java
==============================================================================
---
trunk/amdatu-cassandra/cassandra-store-consumer/src/main/java/org/amdatu/cassandra/store/consumer/service/CassandraConsumerStorageProviderImpl.java
(original)
+++
trunk/amdatu-cassandra/cassandra-store-consumer/src/main/java/org/amdatu/cassandra/store/consumer/service/CassandraConsumerStorageProviderImpl.java
Fri Sep 23 12:12:50 2011
@@ -31,7 +31,11 @@
import org.amdatu.auth.oauth.api.ConsumerRegistryStorageException;
import org.amdatu.auth.oauth.api.OAuthServiceConsumer;
import org.amdatu.auth.oauth.consumerregistry.OAuthServiceConsumerRegistry;
+import org.amdatu.cassandra.listener.ColumnFamilyAvailable;
import org.amdatu.cassandra.persistencemanager.CassandraPersistenceManager;
+import org.amdatu.core.tenant.Tenant;
+import org.apache.felix.dm.Component;
+import org.apache.felix.dm.DependencyManager;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
@@ -51,7 +55,10 @@
// Service dependencies, injected by the dependency manager
private volatile CassandraPersistenceManager m_pm;
private volatile LogService m_logService;
-
+ private volatile Component m_component;
+ private volatile DependencyManager m_dependencyManager;
+ private volatile Tenant m_tenant;
+
// Column names
private static final String NAME = "name";
private static final String SECRET = "secret";
@@ -75,6 +82,27 @@
m_pm = pm;
m_logService = logService;
}
+
+ public void init(final Component component) {
+ // Add tenant specific service dependencies
+ String ksFilter = "(" + CassandraPersistenceManager.KEYSPACE_AWARE_KEY
+ "=" + m_tenant.getId() + ")";
+ m_component.add(m_dependencyManager.createServiceDependency()
+ .setService(CassandraPersistenceManager.class, ksFilter)
+ .setRequired(true)
+ .setInstanceBound(true));
+
+ String cfFilter = "(" + ColumnFamilyAvailable.FILTER_NAME + "=" +
ConsumerColumnFamilyProvider.CF_CONSUMER + ")";
+ String cfAvailableFilter = "(&" + ksFilter + cfFilter + ")";
+ m_component.add(m_dependencyManager.createServiceDependency()
+ .setService(ColumnFamilyAvailable.class, cfAvailableFilter)
+ .setRequired(true)
+ .setInstanceBound(true));
+ }
+
+ public void start() {
+ m_logService.log(LogService.LOG_INFO,
+ "Service '" + getClass().getName() + "' started for tenant '" +
m_tenant.getId() + "'");
+ }
@Override
public void addConsumer(OAuthServiceConsumer consumer) throws
ConsumerAlreadyExistsException,
Modified:
trunk/amdatu-cassandra/cassandra-store-consumer/src/main/java/org/amdatu/cassandra/store/consumer/service/ConsumerColumnFamilyProvider.java
==============================================================================
---
trunk/amdatu-cassandra/cassandra-store-consumer/src/main/java/org/amdatu/cassandra/store/consumer/service/ConsumerColumnFamilyProvider.java
(original)
+++
trunk/amdatu-cassandra/cassandra-store-consumer/src/main/java/org/amdatu/cassandra/store/consumer/service/ConsumerColumnFamilyProvider.java
Fri Sep 23 12:12:50 2011
@@ -19,7 +19,6 @@
import org.amdatu.cassandra.listener.ColumnFamilyDefinition.ColumnType;
import org.amdatu.cassandra.listener.ColumnFamilyDefinition.CompareType;
import org.amdatu.cassandra.listener.ColumnFamilyProvider;
-import org.amdatu.cassandra.persistencemanager.CassandraPersistenceManager;
public class ConsumerColumnFamilyProvider implements ColumnFamilyProvider {
/**
@@ -32,10 +31,9 @@
return new ColumnFamilyDefinition[] {
new ColumnFamilyDefinition(
CF_CONSUMER,
- new String[]
{CassandraPersistenceManager.DEFAULT_KEYSPACE},
+ null,
ColumnType.STANDARD,
CompareType.BYTESTYPE,
null)};
}
-
}
Modified:
trunk/amdatu-cassandra/cassandra-store-token/src/main/java/org/amdatu/cassandra/store/token/osgi/Activator.java
==============================================================================
---
trunk/amdatu-cassandra/cassandra-store-token/src/main/java/org/amdatu/cassandra/store/token/osgi/Activator.java
(original)
+++
trunk/amdatu-cassandra/cassandra-store-token/src/main/java/org/amdatu/cassandra/store/token/osgi/Activator.java
Fri Sep 23 12:12:50 2011
@@ -16,11 +16,10 @@
package org.amdatu.cassandra.store.token.osgi;
import org.amdatu.auth.tokenprovider.TokenStorageProvider;
-import org.amdatu.cassandra.listener.ColumnFamilyAvailable;
import org.amdatu.cassandra.listener.ColumnFamilyProvider;
-import org.amdatu.cassandra.persistencemanager.CassandraPersistenceManager;
import
org.amdatu.cassandra.store.token.service.CassandraTokenStorageProviderImpl;
import org.amdatu.cassandra.store.token.service.TokenColumnFamilyProvider;
+import org.amdatu.core.tenant.Tenant;
import org.apache.felix.dm.DependencyActivatorBase;
import org.apache.felix.dm.DependencyManager;
import org.osgi.framework.BundleContext;
@@ -37,18 +36,12 @@
.setInterface(new String[]{ColumnFamilyProvider.class.getName()},
null)
.setImplementation(TokenColumnFamilyProvider.class));
- // Create and register the Cassandra Service consumer storage provider
- String keyspaceFilter = "(" +
CassandraPersistenceManager.KEYSPACE_AWARE_KEY + "="
- + CassandraPersistenceManager.DEFAULT_KEYSPACE + ")";
- String consumerCFFilter = "(&" + keyspaceFilter + "(" +
ColumnFamilyAvailable.FILTER_NAME
- + "=" + TokenColumnFamilyProvider.CF_TOKEN + "))";
+ // Create and register the Cassandra token storage provider
manager.add(
- createComponent()
+ createAdapterService(Tenant.class, null)
.setImplementation(CassandraTokenStorageProviderImpl.class)
.setInterface(TokenStorageProvider.class.getName(), null)
-
.add(createServiceDependency().setService(LogService.class).setRequired(true))
-
.add(createServiceDependency().setService(CassandraPersistenceManager.class,
keyspaceFilter).setRequired(true))
-
.add(createServiceDependency().setService(ColumnFamilyAvailable.class,
consumerCFFilter).setRequired(true)));
+
.add(createServiceDependency().setService(LogService.class).setRequired(true)));
}
@Override
Modified:
trunk/amdatu-cassandra/cassandra-store-token/src/main/java/org/amdatu/cassandra/store/token/service/CassandraTokenStorageProviderImpl.java
==============================================================================
---
trunk/amdatu-cassandra/cassandra-store-token/src/main/java/org/amdatu/cassandra/store/token/service/CassandraTokenStorageProviderImpl.java
(original)
+++
trunk/amdatu-cassandra/cassandra-store-token/src/main/java/org/amdatu/cassandra/store/token/service/CassandraTokenStorageProviderImpl.java
Fri Sep 23 12:12:50 2011
@@ -26,7 +26,11 @@
import org.amdatu.auth.tokenprovider.Token;
import org.amdatu.auth.tokenprovider.TokenStorageProvider;
+import org.amdatu.cassandra.listener.ColumnFamilyAvailable;
import org.amdatu.cassandra.persistencemanager.CassandraPersistenceManager;
+import org.amdatu.core.tenant.Tenant;
+import org.apache.felix.dm.Component;
+import org.apache.felix.dm.DependencyManager;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
@@ -40,10 +44,15 @@
* @author ivol
*/
public class CassandraTokenStorageProviderImpl implements TokenStorageProvider
{
- // Service dependencies, injected by the dependency manager
- private volatile CassandraPersistenceManager m_pm;
+ // Tenant unaware service dependencies, injected by the dependency manager
+ private volatile Component m_component;
+ private volatile DependencyManager m_dependencyManager;
+ private volatile Tenant m_tenant;
private volatile LogService m_logService;
+ // Tenant aware service dependencies, injected by the dependency manager
+ private volatile CassandraPersistenceManager m_pm;
+
// Column names
private static final String C_SECRET = "secret";
private static final String C_TIMESTAMP = "timestamp";
@@ -66,6 +75,27 @@
m_logService = logService;
}
+ public void init(final Component component) {
+ // Add tenant specific service dependencies
+ String ksFilter = "(" + CassandraPersistenceManager.KEYSPACE_AWARE_KEY
+ "=" + m_tenant.getId() + ")";
+ m_component.add(m_dependencyManager.createServiceDependency()
+ .setService(CassandraPersistenceManager.class, ksFilter)
+ .setRequired(true)
+ .setInstanceBound(true));
+
+ String cfFilter = "(" + ColumnFamilyAvailable.FILTER_NAME + "=" +
TokenColumnFamilyProvider.CF_TOKEN + ")";
+ String cfAvailableFilter = "(&" + ksFilter + cfFilter + ")";
+ m_component.add(m_dependencyManager.createServiceDependency()
+ .setService(ColumnFamilyAvailable.class, cfAvailableFilter)
+ .setRequired(true)
+ .setInstanceBound(true));
+ }
+
+ public void start() {
+ m_logService.log(LogService.LOG_INFO,
+ "Service '" + getClass().getName() + "' started for tenant '" +
m_tenant.getId() + "'");
+ }
+
public void addToken(final Token token) {
// We use the token also as row key
String rowKey = token.getToken();
Modified:
trunk/amdatu-cassandra/cassandra-store-token/src/main/java/org/amdatu/cassandra/store/token/service/TokenColumnFamilyProvider.java
==============================================================================
---
trunk/amdatu-cassandra/cassandra-store-token/src/main/java/org/amdatu/cassandra/store/token/service/TokenColumnFamilyProvider.java
(original)
+++
trunk/amdatu-cassandra/cassandra-store-token/src/main/java/org/amdatu/cassandra/store/token/service/TokenColumnFamilyProvider.java
Fri Sep 23 12:12:50 2011
@@ -19,7 +19,6 @@
import org.amdatu.cassandra.listener.ColumnFamilyDefinition.ColumnType;
import org.amdatu.cassandra.listener.ColumnFamilyDefinition.CompareType;
import org.amdatu.cassandra.listener.ColumnFamilyProvider;
-import org.amdatu.cassandra.persistencemanager.CassandraPersistenceManager;
public class TokenColumnFamilyProvider implements ColumnFamilyProvider {
/**
@@ -32,7 +31,7 @@
return new ColumnFamilyDefinition[] {
new ColumnFamilyDefinition(
CF_TOKEN,
- new String[]
{CassandraPersistenceManager.DEFAULT_KEYSPACE},
+ null,
ColumnType.STANDARD,
CompareType.BYTESTYPE,
null)};
Modified:
trunk/amdatu-cassandra/test-integration/base/src/main/java/org/amdatu/cassandra/test/integration/base/CassandraFixture.java
==============================================================================
---
trunk/amdatu-cassandra/test-integration/base/src/main/java/org/amdatu/cassandra/test/integration/base/CassandraFixture.java
(original)
+++
trunk/amdatu-cassandra/test-integration/base/src/main/java/org/amdatu/cassandra/test/integration/base/CassandraFixture.java
Fri Sep 23 12:12:50 2011
@@ -16,6 +16,7 @@
package org.amdatu.cassandra.test.integration.base;
import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
+import static org.ops4j.pax.exam.CoreOptions.wrappedBundle;
import java.util.Properties;
@@ -35,19 +36,37 @@
mavenBundle().groupId("org.amdatu.cassandra").artifactId("org.amdatu.cassandra.application").versionAsInProject(),
mavenBundle().groupId("org.amdatu.cassandra").artifactId("org.amdatu.cassandra.listener").versionAsInProject(),
mavenBundle().groupId("org.amdatu.cassandra").artifactId("org.amdatu.cassandra.persistencemanager").versionAsInProject(),
+
+ // Cassandra stores
mavenBundle().groupId("org.amdatu.cassandra").artifactId("org.amdatu.cassandra.store.useradmin").versionAsInProject(),
-
mavenBundle().groupId("org.amdatu.cassandra").artifactId("org.amdatu.cassandra.store.tenant").versionAsInProject()
+
mavenBundle().groupId("org.amdatu.cassandra").artifactId("org.amdatu.cassandra.store.tenant").versionAsInProject(),
+
mavenBundle().groupId("org.amdatu.cassandra").artifactId("org.amdatu.cassandra.store.consumer").versionAsInProject(),
+
mavenBundle().groupId("org.amdatu.cassandra").artifactId("org.amdatu.cassandra.store.token").versionAsInProject(),
+
+ // The following 2 artifacts are necessary for default tenant
resolving
+
mavenBundle().groupId("org.amdatu.web").artifactId("org.amdatu.web.tenantresolver.hostname").versionAsInProject(),
+
mavenBundle().groupId("org.amdatu.web").artifactId("org.amdatu.web.tenantresolver.parameter").versionAsInProject(),
+
+ // Provision Auth bundles
+
mavenBundle().groupId("org.amdatu.auth").artifactId("org.amdatu.auth.oauth.api").versionAsInProject(),
+
mavenBundle().groupId("org.amdatu.auth").artifactId("org.amdatu.auth.oauth.consumerregistry").versionAsInProject(),
+
mavenBundle().groupId("org.amdatu.auth").artifactId("org.amdatu.auth.tokenprovider").versionAsInProject(),
+
+ // Wrap libraries we depend on as OSGi bundles and provision those
+
wrappedBundle(mavenBundle().groupId("commons-httpclient").artifactId("commons-httpclient").versionAsInProject()),
+
wrappedBundle(mavenBundle().groupId("commons-codec").artifactId("commons-codec").versionAsInProject())
);
}
/**
- * Example configure method for Amdatu Auth feature. To be extended..
+ * Example configure method for Amdatu Cassandra feature. To be extended..
*
* @param testContext
* @throws Exception
*/
public void configureDefaults(TestContext testContext) throws Exception {
configureCassandraDaemon(testContext);
+ configureHttpService(testContext);
}
public void configureCassandraDaemon(TestContext testContext) throws
Exception {
@@ -74,4 +93,18 @@
properties.put("log4j.systemlog", "work/cassandra/system.log");
return properties;
}
+
+ public void configureHttpService(TestContext testContext) throws Exception
{
+ testContext.updateConfig("org.apache.felix.http", getHttpServiceCfg());
+ }
+
+ private Properties getHttpServiceCfg() {
+ Properties properties = new Properties();
+ properties.put("org.osgi.service.http.hostname", HOSTNAME);
+ properties.put("org.osgi.service.http.port", PORTNR);
+ properties.put("org.osgi.service.http.port.secure", "8090");
+ properties.put("org.apache.felix.http.debug", "true");
+ properties.put("org.apache.felix.log.storeDebug", "true");
+ return properties;
+ }
}
Modified: trunk/amdatu-cassandra/test-integration/pom.xml
==============================================================================
--- trunk/amdatu-cassandra/test-integration/pom.xml (original)
+++ trunk/amdatu-cassandra/test-integration/pom.xml Fri Sep 23 12:12:50 2011
@@ -30,6 +30,7 @@
<properties>
<org.amdatu.core.version>0.2.1-SNAPSHOT</org.amdatu.core.version>
<org.amdatu.web.version>0.2.1-SNAPSHOT</org.amdatu.web.version>
+ <org.amdatu.auth.version>0.2.1-SNAPSHOT</org.amdatu.auth.version>
</properties>
<modules>
@@ -115,6 +116,43 @@
<scope>compile</scope>
<type>bundle</type>
</dependency>
+
+ <dependency>
+ <groupId>org.amdatu.auth</groupId>
+ <artifactId>org.amdatu.auth.oauth.consumerregistry</artifactId>
+ <version>${org.amdatu.auth.version}</version>
+ <scope>compile</scope>
+ <type>bundle</type>
+ </dependency>
+ <dependency>
+ <groupId>org.amdatu.auth</groupId>
+ <artifactId>org.amdatu.auth.oauth.api</artifactId>
+ <version>${org.amdatu.auth.version}</version>
+ <scope>compile</scope>
+ <type>bundle</type>
+ </dependency>
+ <dependency>
+ <groupId>org.amdatu.auth</groupId>
+ <artifactId>org.amdatu.auth.tokenprovider</artifactId>
+ <version>${org.amdatu.auth.version}</version>
+ <scope>compile</scope>
+ <type>bundle</type>
+ </dependency>
+
+ <dependency>
+ <groupId>org.amdatu.web</groupId>
+ <artifactId>org.amdatu.web.tenantresolver.hostname</artifactId>
+ <version>${org.amdatu.web.version}</version>
+ <scope>test</scope>
+ <type>bundle</type>
+ </dependency>
+ <dependency>
+ <groupId>org.amdatu.web</groupId>
+ <artifactId>org.amdatu.web.tenantresolver.parameter</artifactId>
+ <version>${org.amdatu.web.version}</version>
+ <scope>test</scope>
+ <type>bundle</type>
+ </dependency>
</dependencies>
</dependencyManagement>
@@ -132,6 +170,16 @@
<artifactId>org.amdatu.web.itest.base</artifactId>
<type>bundle</type>
</dependency>
+ <dependency>
+ <groupId>org.amdatu.web</groupId>
+ <artifactId>org.amdatu.web.tenantresolver.hostname</artifactId>
+ <type>bundle</type>
+ </dependency>
+ <dependency>
+ <groupId>org.amdatu.web</groupId>
+ <artifactId>org.amdatu.web.tenantresolver.parameter</artifactId>
+ <type>bundle</type>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
Modified: trunk/amdatu-cassandra/test-integration/tests/pom.xml
==============================================================================
--- trunk/amdatu-cassandra/test-integration/tests/pom.xml (original)
+++ trunk/amdatu-cassandra/test-integration/tests/pom.xml Fri Sep 23
12:12:50 2011
@@ -78,11 +78,38 @@
</dependency>
<dependency>
<groupId>org.amdatu.cassandra</groupId>
+ <artifactId>org.amdatu.cassandra.store.consumer</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ <type>bundle</type>
+ </dependency>
+ <dependency>
+ <groupId>org.amdatu.cassandra</groupId>
+ <artifactId>org.amdatu.cassandra.store.token</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ <type>bundle</type>
+ </dependency>
+ <dependency>
+ <groupId>org.amdatu.cassandra</groupId>
<artifactId>org.amdatu.cassandra.store.tenant</artifactId>
<version>${project.version}</version>
<scope>test</scope>
<type>bundle</type>
</dependency>
+
+ <dependency>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ <version>3.1</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>commons-codec</groupId>
+ <artifactId>commons-codec</artifactId>
+ <version>1.4</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</dependencyManagement>
@@ -117,9 +144,44 @@
</dependency>
<dependency>
<groupId>org.amdatu.cassandra</groupId>
+ <artifactId>org.amdatu.cassandra.store.consumer</artifactId>
+ <type>bundle</type>
+ </dependency>
+ <dependency>
+ <groupId>org.amdatu.cassandra</groupId>
+ <artifactId>org.amdatu.cassandra.store.token</artifactId>
+ <type>bundle</type>
+ </dependency>
+ <dependency>
+ <groupId>org.amdatu.cassandra</groupId>
<artifactId>org.amdatu.cassandra.store.tenant</artifactId>
<type>bundle</type>
</dependency>
+
+ <dependency>
+ <groupId>org.amdatu.auth</groupId>
+ <artifactId>org.amdatu.auth.oauth.consumerregistry</artifactId>
+ <type>bundle</type>
+ </dependency>
+ <dependency>
+ <groupId>org.amdatu.auth</groupId>
+ <artifactId>org.amdatu.auth.oauth.api</artifactId>
+ <type>bundle</type>
+ </dependency>
+ <dependency>
+ <groupId>org.amdatu.auth</groupId>
+ <artifactId>org.amdatu.auth.tokenprovider</artifactId>
+ <type>bundle</type>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>commons-codec</groupId>
+ <artifactId>commons-codec</artifactId>
+ </dependency>
</dependencies>
<profiles>
Added:
trunk/amdatu-cassandra/test-integration/tests/src/test/java/org/amdatu/cassandra/test/integration/tests/OAuthServiceConsumerRESTTest.java
==============================================================================
--- (empty file)
+++
trunk/amdatu-cassandra/test-integration/tests/src/test/java/org/amdatu/cassandra/test/integration/tests/OAuthServiceConsumerRESTTest.java
Fri Sep 23 12:12:50 2011
@@ -0,0 +1,32 @@
+package org.amdatu.cassandra.test.integration.tests;
+
+import static junit.framework.Assert.assertTrue;
+
+import org.amdatu.cassandra.test.integration.base.CassandraFixture;
+import org.amdatu.cassandra.test.integration.tests.framework.CassandraTestBase;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpMethod;
+import org.apache.commons.httpclient.methods.GetMethod;
+
+public class OAuthServiceConsumerRESTTest extends CassandraTestBase {
+
+ @Override
+ public void execute() throws Exception {
+ // Simple test if the REST service is available by a GET to
/rest/oauth/consumers/status
+ String base = "http://" + CassandraFixture.HOSTNAME + ":" +
CassandraFixture.PORTNR + "/rest";
+ String url = base + "/oauth/consumers/status";
+
+ HttpClient httpClient = new HttpClient();
+ HttpMethod method = new GetMethod(url);
+
+ try {
+ // Execute the method, this should return a 200
+ int statusCode = httpClient.executeMethod(method);
+ assertTrue("HTTP GET to '" + url + "' returned " + statusCode,
statusCode == 200);
+ }
+ finally {
+ // Release the connection.
+ method.releaseConnection();
+ }
+ }
+}
Added:
trunk/amdatu-cassandra/test-integration/tests/src/test/java/org/amdatu/cassandra/test/integration/tests/OAuthServiceConsumerTest.java
==============================================================================
--- (empty file)
+++
trunk/amdatu-cassandra/test-integration/tests/src/test/java/org/amdatu/cassandra/test/integration/tests/OAuthServiceConsumerTest.java
Fri Sep 23 12:12:50 2011
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2010, 2011 The Amdatu Foundation
+ *
+ * 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.
+ */
+package org.amdatu.cassandra.test.integration.tests;
+
+import java.util.Map;
+
+import junit.framework.Assert;
+
+import org.amdatu.auth.oauth.api.OAuthServiceConsumer;
+import org.amdatu.cassandra.test.integration.tests.framework.CassandraTestBase;
+
+/**
+ * Integration test for the OAuth service consumer registry.
+ * @author ivol
+ *
+ */
+public class OAuthServiceConsumerTest extends CassandraTestBase {
+
+ @Override
+ public void execute() throws Exception {
+ OAuthServiceConsumer consumer = new OAuthServiceConsumer() {
+ public String getCallbackUrl() {return "callbackurl";}
+ public String getConsumerKey() {return "testkey";}
+ public String getConsumerSecret() {return "testsecret";}
+ public String getName() {return "testname";}
+ public Map<String, String> getProperties() {return null;}
+ };
+
+ // Add the test consumer and see if we can retrieve it
+ m_OAuthConsumerRegistry.addConsumer(consumer);
+
+ OAuthServiceConsumer retConsumer =
m_OAuthConsumerRegistry.getConsumer("testkey");
+ Assert.assertNotNull(retConsumer);
+ Assert.assertEquals(retConsumer.getCallbackUrl(), "callbackurl");
+ Assert.assertEquals(retConsumer.getConsumerKey(), "testkey");
+ Assert.assertEquals(retConsumer.getConsumerSecret(), "testsecret");
+ Assert.assertEquals(retConsumer.getName(), "testname");
+
+ m_OAuthConsumerRegistry.removeConsumer(consumer);
+ Assert.assertNull(m_OAuthConsumerRegistry.getConsumer("testkey"));
+ }
+}
Modified:
trunk/amdatu-cassandra/test-integration/tests/src/test/java/org/amdatu/cassandra/test/integration/tests/framework/CassandraTest.java
==============================================================================
---
trunk/amdatu-cassandra/test-integration/tests/src/test/java/org/amdatu/cassandra/test/integration/tests/framework/CassandraTest.java
(original)
+++
trunk/amdatu-cassandra/test-integration/tests/src/test/java/org/amdatu/cassandra/test/integration/tests/framework/CassandraTest.java
Fri Sep 23 12:12:50 2011
@@ -22,12 +22,15 @@
import static org.ops4j.pax.exam.CoreOptions.options;
import static org.ops4j.pax.exam.LibraryOptions.junitBundles;
+import org.amdatu.auth.oauth.consumerregistry.OAuthServiceConsumerRegistry;
import org.amdatu.cassandra.application.CassandraConfigurationService;
import org.amdatu.cassandra.application.CassandraDaemonService;
import
org.amdatu.cassandra.persistencemanager.CassandraPersistenceManagerFactory;
import org.amdatu.cassandra.test.integration.base.CassandraFixture;
import org.amdatu.cassandra.test.integration.tests.CassandraDaemonTest;
import
org.amdatu.cassandra.test.integration.tests.CassandraPersistenceManagerTest;
+import
org.amdatu.cassandra.test.integration.tests.OAuthServiceConsumerRESTTest;
+import org.amdatu.cassandra.test.integration.tests.OAuthServiceConsumerTest;
import org.amdatu.cassandra.test.integration.tests.UserAdminStoreTest;
import org.amdatu.core.itest.base.CoreFixture;
import org.amdatu.core.itest.base.TestContext;
@@ -42,6 +45,7 @@
import org.ops4j.pax.exam.junit.JUnit4TestRunner;
import org.ops4j.pax.exam.spi.reactors.AllConfinedStagedReactorFactory;
import org.osgi.framework.BundleContext;
+import org.osgi.service.http.HttpService;
import org.osgi.service.log.LogService;
import org.osgi.service.useradmin.UserAdmin;
@@ -61,6 +65,7 @@
private CassandraPersistenceManagerFactory m_pmFactory;
private TestContext m_testContext;
private UserAdmin m_userAdmin;
+ private OAuthServiceConsumerRegistry m_consumerRegistry;
@Configuration
public Option[] config() {
@@ -99,10 +104,12 @@
// Initialize services
m_logService = assertAvailable(m_testContext, LogService.class);
assertAvailable(m_testContext, CassandraConfigurationService.class);
+ assertAvailable(m_testContext, HttpService.class);
m_daemonService = assertAvailable(m_testContext,
CassandraDaemonService.class);
m_pmFactory = assertAvailable(m_testContext,
CassandraPersistenceManagerFactory.class);
m_userAdmin = assertAvailable(m_testContext, UserAdmin.class);
+ m_consumerRegistry = assertAvailable(m_testContext,
OAuthServiceConsumerRegistry.class);
// Create the dependency manager
m_dependencyManager = new
DependencyManager(m_testContext.getBundleContext());
@@ -111,6 +118,8 @@
test(CassandraDaemonTest.class);
test(CassandraPersistenceManagerTest.class);
test(UserAdminStoreTest.class);
+ test(OAuthServiceConsumerTest.class);
+ test(OAuthServiceConsumerRESTTest.class);
// And we are done
m_testContext.tearDown();
@@ -130,5 +139,6 @@
test.setBundleContext(m_bundleContext);
test.setTestContext(m_testContext);
test.setUserAdmin(m_userAdmin);
+ test.setOAuthConsumerRegistry(m_consumerRegistry);
}
}
Modified:
trunk/amdatu-cassandra/test-integration/tests/src/test/java/org/amdatu/cassandra/test/integration/tests/framework/CassandraTestBase.java
==============================================================================
---
trunk/amdatu-cassandra/test-integration/tests/src/test/java/org/amdatu/cassandra/test/integration/tests/framework/CassandraTestBase.java
(original)
+++
trunk/amdatu-cassandra/test-integration/tests/src/test/java/org/amdatu/cassandra/test/integration/tests/framework/CassandraTestBase.java
Fri Sep 23 12:12:50 2011
@@ -15,6 +15,7 @@
*/
package org.amdatu.cassandra.test.integration.tests.framework;
+import org.amdatu.auth.oauth.consumerregistry.OAuthServiceConsumerRegistry;
import org.amdatu.cassandra.application.CassandraDaemonService;
import
org.amdatu.cassandra.persistencemanager.CassandraPersistenceManagerFactory;
import org.amdatu.core.itest.base.TestContext;
@@ -31,6 +32,7 @@
protected volatile CassandraPersistenceManagerFactory m_pmFactory;
protected volatile TestContext m_testContext;
protected volatile UserAdmin m_userAdmin;
+ protected volatile OAuthServiceConsumerRegistry m_OAuthConsumerRegistry;
public abstract void execute() throws Exception;
@@ -60,5 +62,9 @@
public void setUserAdmin(UserAdmin userAdmin) {
m_userAdmin = userAdmin;
+ }
+
+ public void setOAuthConsumerRegistry(OAuthServiceConsumerRegistry
registry) {
+ m_OAuthConsumerRegistry = registry;
}
}
_______________________________________________
Amdatu-commits mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-commits