[INFO] Scanning for projects...
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for org.jclouds.api:rackspace-cloudidentity:bundle:1.6.0-SNAPSHOT
[WARNING] 'parent.relativePath' of POM org.jclouds:jclouds-project:1.6.0-SNAPSHOT (/home/zack/jclouds/project/pom.xml) points at org.jclouds:jclouds-multi instead of org.sonatype.oss:oss-parent, please verify your project structure @ org.jclouds:jclouds-project:1.6.0-SNAPSHOT, /home/zack/jclouds/project/pom.xml, line 24, column 13
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING] 
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building jcloud rackspace cloudidentity api 1.6.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.3:clean (default-clean) @ rackspace-cloudidentity ---
[INFO] Deleting file set: /home/zack/jclouds/apis/rackspace-cloudidentity/target (included: [**], excluded: [])
[INFO] 
[INFO] --- maven-enforcer-plugin:1.1.1:enforce (enforce-maven) @ rackspace-cloudidentity ---
[INFO] 
[INFO] --- maven-enforcer-plugin:1.1.1:enforce (enforce-banned-dependencies) @ rackspace-cloudidentity ---
[INFO] 
[INFO] --- maven-enforcer-plugin:1.1.1:enforce (enforce-java) @ rackspace-cloudidentity ---
[INFO] 
[INFO] --- maven-remote-resources-plugin:1.4:process (process-remote-resources) @ rackspace-cloudidentity ---
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ rackspace-cloudidentity ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/zack/jclouds/apis/rackspace-cloudidentity/src/main/clojure
[INFO] Copying 1 resource
[INFO] Copying 2 resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ rackspace-cloudidentity ---
[INFO] Compiling 14 source files to /home/zack/jclouds/apis/rackspace-cloudidentity/target/classes
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ rackspace-cloudidentity ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/zack/jclouds/apis/rackspace-cloudidentity/src/test/clojure
[INFO] Copying 1 resource
[INFO] Copying 2 resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.5.1:testCompile (default-testCompile) @ rackspace-cloudidentity ---
[INFO] Compiling 8 source files to /home/zack/jclouds/apis/rackspace-cloudidentity/target/test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ rackspace-cloudidentity ---
[INFO] Surefire report directory: /home/zack/jclouds/apis/rackspace-cloudidentity/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running TestSuite
Configuring TestNG with: org.apache.maven.surefire.testng.conf.TestNG652Configurator@9719d5b
Starting test testMaxResultsStatic(org.jclouds.rackspace.cloudidentity.v2_0.options.PaginationOptionsTest)
Starting test testNameFilter(org.jclouds.rackspace.cloudidentity.v2_0.options.PaginationOptionsTest)
Starting test testNameFilterStatic(org.jclouds.rackspace.cloudidentity.v2_0.options.PaginationOptionsTest)
Starting test testOffset(org.jclouds.rackspace.cloudidentity.v2_0.options.PaginationOptionsTest)
Starting test testMaxResults(org.jclouds.rackspace.cloudidentity.v2_0.options.PaginationOptionsTest)
[pool-1-thread-5] Test testOffset(org.jclouds.rackspace.cloudidentity.v2_0.options.PaginationOptionsTest) succeeded: 43ms
Test suite progress: tests succeeded: 1, failed: 0, skipped: 0.
[pool-1-thread-3] Test testNameFilter(org.jclouds.rackspace.cloudidentity.v2_0.options.PaginationOptionsTest) succeeded: 50ms
Test suite progress: tests succeeded: 2, failed: 0, skipped: 0.
[pool-1-thread-2] Test testMaxResultsStatic(org.jclouds.rackspace.cloudidentity.v2_0.options.PaginationOptionsTest) succeeded: 53ms
Test suite progress: tests succeeded: 3, failed: 0, skipped: 0.
Starting test testOffsetStatic(org.jclouds.rackspace.cloudidentity.v2_0.options.PaginationOptionsTest)
Starting test testQueryParameters(org.jclouds.rackspace.cloudidentity.v2_0.options.PaginationOptionsTest)
[pool-1-thread-5] Test testOffsetStatic(org.jclouds.rackspace.cloudidentity.v2_0.options.PaginationOptionsTest) succeeded: 1ms
Test suite progress: tests succeeded: 4, failed: 0, skipped: 0.
[pool-1-thread-1] Test testMaxResults(org.jclouds.rackspace.cloudidentity.v2_0.options.PaginationOptionsTest) succeeded: 50ms
Test suite progress: tests succeeded: 5, failed: 0, skipped: 0.
[pool-1-thread-4] Test testNameFilterStatic(org.jclouds.rackspace.cloudidentity.v2_0.options.PaginationOptionsTest) succeeded: 57ms
Test suite progress: tests succeeded: 6, failed: 0, skipped: 0.
Starting test testQueryParametersStatic(org.jclouds.rackspace.cloudidentity.v2_0.options.PaginationOptionsTest)
[pool-1-thread-5] Test testQueryParametersStatic(org.jclouds.rackspace.cloudidentity.v2_0.options.PaginationOptionsTest) succeeded: 10ms
Test suite progress: tests succeeded: 7, failed: 0, skipped: 0.
[pool-1-thread-2] Test testQueryParameters(org.jclouds.rackspace.cloudidentity.v2_0.options.PaginationOptionsTest) succeeded: 29ms
Test suite progress: tests succeeded: 8, failed: 0, skipped: 0.
Starting test testAllContains(org.jclouds.rackspace.cloudidentity.v2_0.CloudIdentityApiMetadataTest)
Starting test testTransformableToContains(org.jclouds.rackspace.cloudidentity.v2_0.CloudIdentityApiMetadataTest)
[pool-2-thread-2] Test testTransformableToContains(org.jclouds.rackspace.cloudidentity.v2_0.CloudIdentityApiMetadataTest) succeeded: 1ms
Test suite progress: tests succeeded: 9, failed: 0, skipped: 0.
Starting test testWithId(org.jclouds.rackspace.cloudidentity.v2_0.CloudIdentityApiMetadataTest)
[pool-2-thread-1] Test testAllContains(org.jclouds.rackspace.cloudidentity.v2_0.CloudIdentityApiMetadataTest) succeeded: 11ms
Starting test testContextAssignableFromRestContext(org.jclouds.rackspace.cloudidentity.v2_0.CloudIdentityApiMetadataTest)
Test suite progress: tests succeeded: 10, failed: 0, skipped: 0.
[pool-2-thread-3] Test testWithId(org.jclouds.rackspace.cloudidentity.v2_0.CloudIdentityApiMetadataTest) succeeded: 10ms
Test suite progress: tests succeeded: 11, failed: 0, skipped: 0.
[pool-2-thread-4] Test testContextAssignableFromRestContext(org.jclouds.rackspace.cloudidentity.v2_0.CloudIdentityApiMetadataTest) succeeded: 12ms
Test suite progress: tests succeeded: 12, failed: 0, skipped: 0.
Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.338 sec

Results :

Tests run: 12, Failures: 0, Errors: 0, Skipped: 0

[INFO] 
[INFO] --- maven-bundle-plugin:2.3.7:bundle (default-bundle) @ rackspace-cloudidentity ---
[INFO] 
[INFO] --- maven-jar-plugin:2.4:test-jar (default) @ rackspace-cloudidentity ---
[INFO] Building jar: /home/zack/jclouds/apis/rackspace-cloudidentity/target/rackspace-cloudidentity-1.6.0-SNAPSHOT-tests.jar
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (integration) @ rackspace-cloudidentity ---
[INFO] Surefire report directory: /home/zack/jclouds/apis/rackspace-cloudidentity/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running TestSuite
Configuring TestNG with: org.apache.maven.surefire.testng.conf.TestNG652Configurator@5d087070
Starting test testGetApiMetaData(org.jclouds.rackspace.cloudidentity.v2_0.CloudIdentityApiLiveTest)
Starting test testTenants(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityServiceApiLiveTest)
Starting test testTenants(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityTenantApiLiveTest)
Starting test testListRolesOfUser(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityUserApiLiveTest)
Starting test testInvalidToken(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityTokenApiLiveTest)
[TestNG] Test testInvalidToken(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityTokenApiLiveTest) skipped.
Test suite progress: tests succeeded: 0, failed: 0, skipped: 1.
Starting test testInvalidTokenEndpoints(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityTokenApiLiveTest)
[TestNG] Test testInvalidTokenEndpoints(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityTokenApiLiveTest) skipped.
Test suite progress: tests succeeded: 0, failed: 0, skipped: 2.
Starting test testToken(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityTokenApiLiveTest)
[TestNG] Test testToken(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityTokenApiLiveTest) skipped.
Test suite progress: tests succeeded: 0, failed: 0, skipped: 3.
Starting test testTokenEndpoints(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityTokenApiLiveTest)
[TestNG] Test testTokenEndpoints(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityTokenApiLiveTest) skipped.
Test suite progress: tests succeeded: 0, failed: 0, skipped: 4.
[TestNG] Test testGetApiMetaData(org.jclouds.rackspace.cloudidentity.v2_0.CloudIdentityApiLiveTest) succeeded: 2875ms
Test suite progress: tests succeeded: 1, failed: 0, skipped: 4.
[TestNG] Test testTenants(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityServiceApiLiveTest) succeeded: 3335ms
Test suite progress: tests succeeded: 2, failed: 0, skipped: 4.
[TestNG] Test testListRolesOfUser(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityUserApiLiveTest) succeeded: 3369ms
Test suite progress: tests succeeded: 3, failed: 0, skipped: 4.
Starting test testUserRolesOnTenant(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityUserApiLiveTest)
[TestNG] Test testTenants(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityTenantApiLiveTest) failed.
Test suite progress: tests succeeded: 3, failed: 1, skipped: 4.
Starting test testTenantsByName(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityTenantApiLiveTest)
[TestNG] Test testUserRolesOnTenant(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityUserApiLiveTest) succeeded: 388ms
Test suite progress: tests succeeded: 4, failed: 1, skipped: 4.
Starting test testUsers(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityUserApiLiveTest)
[TestNG] Test testUsers(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityUserApiLiveTest) failed.
Test suite progress: tests succeeded: 4, failed: 2, skipped: 4.
[TestNG] Test testTenantsByName(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityTenantApiLiveTest) failed.
Test suite progress: tests succeeded: 4, failed: 3, skipped: 4.
Starting test testUsersByName(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityUserApiLiveTest)
[TestNG] Test testUsersByName(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityUserApiLiveTest) succeeded: 187ms
Test suite progress: tests succeeded: 5, failed: 3, skipped: 4.
Tests run: 14, Failures: 4, Errors: 0, Skipped: 5, Time elapsed: 8.053 sec <<< FAILURE!
setup(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityTokenApiLiveTest)  Time elapsed: 0.014 sec  <<< FAILURE!
java.lang.IllegalArgumentException: Illegal character in path at index 42: https://identity.api.rackspacecloud.com/v${jclouds.api-version}/
	at java.net.URI.create(URI.java:859)
	at org.jclouds.http.HttpRequest$Builder.endpoint(HttpRequest.java:88)
	at org.jclouds.openstack.keystone.v2_0.features.TokenApiLiveTest.grabToken(TokenApiLiveTest.java:62)
	at org.jclouds.openstack.keystone.v2_0.features.TokenApiLiveTest.create(TokenApiLiveTest.java:56)
	at org.jclouds.openstack.keystone.v2_0.features.TokenApiLiveTest.create(TokenApiLiveTest.java:48)
	at org.jclouds.apis.BaseApiLiveTest.initialize(BaseApiLiveTest.java:86)
	at org.jclouds.apis.BaseApiLiveTest.setup(BaseApiLiveTest.java:81)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
	at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:564)
	at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:213)
	at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:138)
	at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:175)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:107)
	at org.testng.TestRunner.privateRun(TestRunner.java:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
	at org.testng.SuiteRunner.access$000(SuiteRunner.java:37)
	at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:368)
	at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
	at java.util.concurrent.FutureTask.run(FutureTask.java:166)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:722)
Caused by: java.net.URISyntaxException: Illegal character in path at index 42: https://identity.api.rackspacecloud.com/v${jclouds.api-version}/
	at java.net.URI$Parser.fail(URI.java:2829)
	at java.net.URI$Parser.checkChars(URI.java:3002)
	at java.net.URI$Parser.parseHierarchical(URI.java:3086)
	at java.net.URI$Parser.parse(URI.java:3034)
	at java.net.URI.<init>(URI.java:595)
	at java.net.URI.create(URI.java:857)
	... 27 more
Caused by: java.net.URISyntaxException: Illegal character in path at index 42: https://identity.api.rackspacecloud.com/v${jclouds.api-version}/
	at java.net.URI$Parser.fail(URI.java:2829)
	at java.net.URI$Parser.checkChars(URI.java:3002)
	at java.net.URI$Parser.parseHierarchical(URI.java:3086)
	at java.net.URI$Parser.parse(URI.java:3034)
	at java.net.URI.<init>(URI.java:595)
	at java.net.URI.create(URI.java:857)
	... 27 more

testTenants(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityTenantApiLiveTest)  Time elapsed: 0.194 sec  <<< FAILURE!
org.jclouds.rest.AuthorizationException: {"forbidden":{"code":403,"message":"Access is denied"}}
	at org.jclouds.openstack.keystone.v2_0.handlers.KeystoneErrorHandler.handleError(KeystoneErrorHandler.java:55)
	at org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:69)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:182)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:152)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.invoke(InvokeSyncToAsyncHttpMethod.java:133)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:99)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:60)
	at org.jclouds.reflect.FunctionalReflection$FunctionalInvocationHandler.handleInvocation(FunctionalReflection.java:119)
	at com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:70)
	at com.sun.proxy.$Proxy59.get(Unknown Source)
	at org.jclouds.openstack.keystone.v2_0.features.TenantApiLiveTest.testTenants(TenantApiLiveTest.java:48)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
	at org.testng.TestRunner.privateRun(TestRunner.java:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
	at org.testng.SuiteRunner.access$000(SuiteRunner.java:37)
	at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:368)
	at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
	at java.util.concurrent.FutureTask.run(FutureTask.java:166)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:722)
Caused by: org.jclouds.http.HttpResponseException: command: GET https://identity.api.rackspacecloud.com/v2.0/tenants/MossoCloudFS_0d629063-aa0f-4bf9-9e04-62e1fd6aaa2c HTTP/1.1 failed with response: HTTP/1.1 403 Forbidden; content: [{"forbidden":{"code":403,"message":"Access is denied"}}
]
	at org.jclouds.openstack.keystone.v2_0.handlers.KeystoneErrorHandler.handleError(KeystoneErrorHandler.java:46)
	... 31 more
Caused by: org.jclouds.http.HttpResponseException: command: GET https://identity.api.rackspacecloud.com/v2.0/tenants/MossoCloudFS_0d629063-aa0f-4bf9-9e04-62e1fd6aaa2c HTTP/1.1 failed with response: HTTP/1.1 403 Forbidden; content: [{"forbidden":{"code":403,"message":"Access is denied"}}
]
	at org.jclouds.openstack.keystone.v2_0.handlers.KeystoneErrorHandler.handleError(KeystoneErrorHandler.java:46)
	... 31 more

testUsers(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityUserApiLiveTest)  Time elapsed: 0.208 sec  <<< FAILURE!
java.lang.AssertionError: expected [false] but found [true]
	at org.testng.Assert.fail(Assert.java:94)
	at org.testng.Assert.failNotEquals(Assert.java:494)
	at org.testng.Assert.assertFalse(Assert.java:63)
	at org.testng.Assert.assertFalse(Assert.java:73)
	at org.jclouds.openstack.keystone.v2_0.features.UserApiLiveTest.testUsers(UserApiLiveTest.java:46)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
	at org.testng.TestRunner.privateRun(TestRunner.java:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
	at org.testng.SuiteRunner.access$000(SuiteRunner.java:37)
	at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:368)
	at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
	at java.util.concurrent.FutureTask.run(FutureTask.java:166)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:722)

testTenantsByName(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityTenantApiLiveTest)  Time elapsed: 0.001 sec  <<< FAILURE!
org.jclouds.rest.AuthorizationException: {"forbidden":{"code":403,"message":"Access is denied"}}
	at org.jclouds.openstack.keystone.v2_0.handlers.KeystoneErrorHandler.handleError(KeystoneErrorHandler.java:55)
	at org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:69)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:182)
	at org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:152)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.invoke(InvokeSyncToAsyncHttpMethod.java:133)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:99)
	at org.jclouds.rest.internal.InvokeSyncToAsyncHttpMethod.apply(InvokeSyncToAsyncHttpMethod.java:60)
	at org.jclouds.reflect.FunctionalReflection$FunctionalInvocationHandler.handleInvocation(FunctionalReflection.java:119)
	at com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:70)
	at com.sun.proxy.$Proxy59.getByName(Unknown Source)
	at org.jclouds.openstack.keystone.v2_0.features.TenantApiLiveTest.testTenantsByName(TenantApiLiveTest.java:60)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
	at org.testng.TestRunner.privateRun(TestRunner.java:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
	at org.testng.SuiteRunner.access$000(SuiteRunner.java:37)
	at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:368)
	at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
	at java.util.concurrent.FutureTask.run(FutureTask.java:166)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:722)
Caused by: org.jclouds.http.HttpResponseException: command: GET https://identity.api.rackspacecloud.com/v2.0/tenants?name=MossoCloudFS_0d629063-aa0f-4bf9-9e04-62e1fd6aaa2c HTTP/1.1 failed with response: HTTP/1.1 403 Forbidden; content: [{"forbidden":{"code":403,"message":"Access is denied"}}
]
	at org.jclouds.openstack.keystone.v2_0.handlers.KeystoneErrorHandler.handleError(KeystoneErrorHandler.java:46)
	... 31 more
Caused by: org.jclouds.http.HttpResponseException: command: GET https://identity.api.rackspacecloud.com/v2.0/tenants?name=MossoCloudFS_0d629063-aa0f-4bf9-9e04-62e1fd6aaa2c HTTP/1.1 failed with response: HTTP/1.1 403 Forbidden; content: [{"forbidden":{"code":403,"message":"Access is denied"}}
]
	at org.jclouds.openstack.keystone.v2_0.handlers.KeystoneErrorHandler.handleError(KeystoneErrorHandler.java:46)
	... 31 more


Results :

Failed tests:   setup(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityTokenApiLiveTest): Illegal character in path at index 42: https://identity.api.rackspacecloud.com/v${jclouds.api-version}/
  testTenants(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityTenantApiLiveTest): {"forbidden":{"code":403,"message":"Access is denied"}}(..)
  testUsers(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityUserApiLiveTest): expected [false] but found [true]
  testTenantsByName(org.jclouds.rackspace.cloudidentity.v2_0.features.CloudIdentityTenantApiLiveTest): {"forbidden":{"code":403,"message":"Access is denied"}}(..)

Tests run: 14, Failures: 4, Errors: 0, Skipped: 5

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 21.445s
[INFO] Finished at: Mon Apr 29 23:07:38 UTC 2013
[INFO] Final Memory: 22M/192M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (integration) on project rackspace-cloudidentity: There are test failures.
[ERROR] 
[ERROR] Please refer to /home/zack/jclouds/apis/rackspace-cloudidentity/target/surefire-reports for the individual test results.
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
