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

Reply via email to