diff options
| author | Yogeshwar Srikrishnan <yoga80@yahoo.com> | 2011-05-20 17:02:58 -0500 |
|---|---|---|
| committer | Yogeshwar Srikrishnan <yoga80@yahoo.com> | 2011-05-20 17:02:58 -0500 |
| commit | 8e2713a6496657bcc9db2ebc5b60f08c4576655c (patch) | |
| tree | b6327d2862e0db14c51bb0702c267ee6798c05d9 /test | |
| parent | 7a2081109118e8f9fe910d9408d075cf6184ab59 (diff) | |
| parent | 4a74b256f903d947258f74a4341fe203b562122c (diff) | |
Merge remote branch 'khussein/master'
Diffstat (limited to 'test')
| -rw-r--r-- | test/IdentitySOAPUI.xml | 218 | ||||
| -rw-r--r-- | test/unit/test_authentication.py | 104 | ||||
| -rw-r--r-- | test/unit/test_common.py | 278 | ||||
| -rw-r--r-- | test/unit/test_exthandler.py | 12 | ||||
| -rw-r--r-- | test/unit/test_groups.py | 641 | ||||
| -rw-r--r-- | test/unit/test_keystone.py | 6 | ||||
| -rw-r--r-- | test/unit/test_server.py | 2 | ||||
| -rw-r--r-- | test/unit/test_tenant_groups.py | 144 | ||||
| -rw-r--r-- | test/unit/test_tenants.py | 62 | ||||
| -rw-r--r-- | test/unit/test_token.py | 32 | ||||
| -rw-r--r-- | test/unit/test_users.py | 1594 | ||||
| -rw-r--r-- | test/unit/test_version.py | 23 |
12 files changed, 1713 insertions, 1403 deletions
diff --git a/test/IdentitySOAPUI.xml b/test/IdentitySOAPUI.xml index 86795a38..d5832df8 100644 --- a/test/IdentitySOAPUI.xml +++ b/test/IdentitySOAPUI.xml @@ -28,7 +28,7 @@ <con:entry key="Save After" value="false"/> <con:entry key="Add Settings" value="false"/> <con:entry key="Endpoint" value=""/> -</xml-fragment>]]></con:setting></con:settings><con:interface xsi:type="con:RestService" wadlVersion="http://wadl.dev.java.net/2009/02" name="Keystone" type="rest" basePath="" definitionUrl="file:/Users/jorgew/projects/keystone/keystone/identity.wadl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:settings/><con:definitionCache type="TEXT" rootPart="file:/Users/jorgew/projects/keystone/keystone/identity.wadl"><con:part><con:url>file:/Users/jorgew/projects/keystone/keystone/identity.wadl</con:url><con:content><![CDATA[<application xsi:schemaLocation="http://docs.openstack.org/identity/api/v2.0 xsd/api.xsd http://docs.openstack.org/common/api/v1.0 xsd/api-common.xsd " xmlns="http://wadl.dev.java.net/2009/02" xmlns:idm="http://docs.openstack.org/identity/api/v2.0" xmlns:capi="http://docs.openstack.org/common/api/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> +</xml-fragment>]]></con:setting></con:settings><con:interface xsi:type="con:RestService" wadlVersion="http://wadl.dev.java.net/2009/02" name="Keystone" type="rest" basePath="" definitionUrl="file:/Users/jorgew/projects/keystone/keystone/identity.wadl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:settings/><con:definitionCache type="TEXT" rootPart="file:/Users/jorgew/projects/keystone/keystone/identity.wadl"><con:part><con:url>file:/Users/jorgew/projects/keystone/keystone/identity.wadl</con:url><con:content><![CDATA[<application xsi:schemaLocation="http://docs.openstack.org/identity/api/v2.0 xsd/api.xsd http://docs.openstack.org/common/api/v1.0 xsd/api-common.xsd " xmlns="http://wadl.dev.java.net/2009/02" xmlns:identity="http://docs.openstack.org/identity/api/v2.0" xmlns:capi="http://docs.openstack.org/common/api/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <grammars> <include href="xsd/api.xsd"/> <include href="xsd/api-common.xsd"/> @@ -73,13 +73,13 @@ <representation mediaType="application/json"/> </response> <response status="400"> - <representation mediaType="application/xml" element="idm:badRequest"/> + <representation mediaType="application/xml" element="identity:badRequest"/> </response> <response status="500"> - <representation mediaType="application/xml" element="idm:idmFault"/> + <representation mediaType="application/xml" element="identity:identityFault"/> </response> <response status="503"> - <representation mediaType="application/xml" element="idm:serviceUnavailable"/> + <representation mediaType="application/xml" element="identity:serviceUnavailable"/> </response> <response status="400 500 503"> <representation mediaType="application/json"/> @@ -91,16 +91,16 @@ <representation mediaType="application/json"/> </response> <response status="400"> - <representation mediaType="application/xml" element="idm:badRequest"/> + <representation mediaType="application/xml" element="identity:badRequest"/> </response> <response status="404"> - <representation mediaType="application/xml" element="idm:itemNotFound"/> + <representation mediaType="application/xml" element="identity:itemNotFound"/> </response> <response status="500"> - <representation mediaType="application/xml" element="idm:idmFault"/> + <representation mediaType="application/xml" element="identity:identityFault"/> </response> <response status="503"> - <representation mediaType="application/xml" element="idm:serviceUnavailable"/> + <representation mediaType="application/xml" element="identity:serviceUnavailable"/> </response> <response status="400 404 500 503"> <representation mediaType="application/json"/> @@ -113,13 +113,13 @@ <representation mediaType="application/json"/> </response> <response status="400"> - <representation mediaType="application/xml" element="idm:badRequest"/> + <representation mediaType="application/xml" element="identity:badRequest"/> </response> <response status="500"> - <representation mediaType="application/xml" element="idm:idmFault"/> + <representation mediaType="application/xml" element="identity:identityFault"/> </response> <response status="503"> - <representation mediaType="application/xml" element="idm:serviceUnavailable"/> + <representation mediaType="application/xml" element="identity:serviceUnavailable"/> </response> <response status="400 500 503"> <representation mediaType="application/json"/> @@ -128,27 +128,27 @@ <!--Token Operations--> <method name="POST" id="authenticate"> <request> - <representation mediaType="application/xml" element="idm:passwordCredentials"/> + <representation mediaType="application/xml" element="identity:passwordCredentials"/> <representation mediaType="application/json"/> </request> <response status="200 203"> - <representation mediaType="application/xml" element="idm:auth"/> + <representation mediaType="application/xml" element="identity:auth"/> <representation mediaType="application/json"/> </response> <response status="401"> - <representation mediaType="application/xml" element="idm:unauthorized"/> + <representation mediaType="application/xml" element="identity:unauthorized"/> </response> <response status="403"> - <representation mediaType="application/xml" element="idm:userDisabled"/> + <representation mediaType="application/xml" element="identity:userDisabled"/> </response> <response status="400"> - <representation mediaType="application/xml" element="idm:badRequest"/> + <representation mediaType="application/xml" element="identity:badRequest"/> </response> <response status="500"> - <representation mediaType="application/xml" element="idm:idmFault"/> + <representation mediaType="application/xml" element="identity:identityFault"/> </response> <response status="503"> - <representation mediaType="application/xml" element="idm:serviceUnavailable"/> + <representation mediaType="application/xml" element="identity:serviceUnavailable"/> </response> <response status="401 403 400 500 503"> <representation mediaType="application/json"/> @@ -159,27 +159,27 @@ <param name="belongsTo" style="query" required="false" type="xsd:string"/> </request> <response status="200 203"> - <representation mediaType="application/xml" element="idm:auth"/> + <representation mediaType="application/xml" element="identity:auth"/> <representation mediaType="application/json"/> </response> <response status="401"> - <representation mediaType="application/xml" element="idm:unauthorized"/> + <representation mediaType="application/xml" element="identity:unauthorized"/> </response> <response status="403"> - <representation mediaType="application/xml" element="idm:forbidden"/> - <representation mediaType="application/xml" element="idm:userDisabled"/> + <representation mediaType="application/xml" element="identity:forbidden"/> + <representation mediaType="application/xml" element="identity:userDisabled"/> </response> <response status="400"> - <representation mediaType="application/xml" element="idm:badRequest"/> + <representation mediaType="application/xml" element="identity:badRequest"/> </response> <response status="404"> - <representation mediaType="application/xml" element="idm:itemNotFound"/> + <representation mediaType="application/xml" element="identity:itemNotFound"/> </response> <response status="500"> - <representation mediaType="application/xml" element="idm:idmFault"/> + <representation mediaType="application/xml" element="identity:identityFault"/> </response> <response status="503"> - <representation mediaType="application/xml" element="idm:serviceUnavailable"/> + <representation mediaType="application/xml" element="identity:serviceUnavailable"/> </response> <response status="400 401 403 404 500 503"> <representation mediaType="application/json"/> @@ -188,22 +188,22 @@ <method name="DELETE" id="revokeToken"> <response status="204"/> <response status="401"> - <representation mediaType="application/xml" element="idm:unauthorized"/> + <representation mediaType="application/xml" element="identity:unauthorized"/> </response> <response status="403"> - <representation mediaType="application/xml" element="idm:forbidden"/> + <representation mediaType="application/xml" element="identity:forbidden"/> </response> <response status="400"> - <representation mediaType="application/xml" element="idm:badRequest"/> + <representation mediaType="application/xml" element="identity:badRequest"/> </response> <response status="404"> - <representation mediaType="application/xml" element="idm:itemNotFound"/> + <representation mediaType="application/xml" element="identity:itemNotFound"/> </response> <response status="500"> - <representation mediaType="application/xml" element="idm:idmFault"/> + <representation mediaType="application/xml" element="identity:identityFault"/> </response> <response status="503"> - <representation mediaType="application/xml" element="idm:serviceUnavailable"/> + <representation mediaType="application/xml" element="identity:serviceUnavailable"/> </response> <response status="400 401 403 404 500 503"> <representation mediaType="application/json"/> @@ -216,26 +216,26 @@ <param name="limit" style="query" required="false" type="xsd:int"/> </request> <response status="200 203"> - <representation mediaType="application/xml" element="idm:tenants"/> + <representation mediaType="application/xml" element="identity:tenants"/> <representation mediaType="application/json"/> </response> <response status="401"> - <representation mediaType="application/xml" element="idm:unauthorized"/> + <representation mediaType="application/xml" element="identity:unauthorized"/> </response> <response status="403"> - <representation mediaType="application/xml" element="idm:forbidden"/> + <representation mediaType="application/xml" element="identity:forbidden"/> </response> <response status="400"> - <representation mediaType="application/xml" element="idm:badRequest"/> + <representation mediaType="application/xml" element="identity:badRequest"/> </response> <response status="404"> - <representation mediaType="application/xml" element="idm:itemNotFound"/> + <representation mediaType="application/xml" element="identity:itemNotFound"/> </response> <response status="500"> - <representation mediaType="application/xml" element="idm:idmFault"/> + <representation mediaType="application/xml" element="identity:identityFault"/> </response> <response status="503"> - <representation mediaType="application/xml" element="idm:serviceUnavailable"/> + <representation mediaType="application/xml" element="identity:serviceUnavailable"/> </response> <response status="400 401 403 404 500 503"> <representation mediaType="application/json"/> @@ -243,30 +243,30 @@ </method> <method name="POST" id="createTenant"> <request> - <representation mediaType="application/xml" element="idm:tenant"/> + <representation mediaType="application/xml" element="identity:tenant"/> <representation mediaType="application/json"/> </request> <response status="201"> - <representation mediaType="application/xml" element="idm:tenant"/> + <representation mediaType="application/xml" element="identity:tenant"/> <representation mediaType="application/json"/> </response> <response status="401"> - <representation mediaType="application/xml" element="idm:unauthorized"/> + <representation mediaType="application/xml" element="identity:unauthorized"/> </response> <response status="403"> - <representation mediaType="application/xml" element="idm:forbidden"/> + <representation mediaType="application/xml" element="identity:forbidden"/> </response> <response status="409"> - <representation mediaType="application/xml" element="idm:tenantConflict"/> + <representation mediaType="application/xml" element="identity:tenantConflict"/> </response> <response status="400"> - <representation mediaType="application/xml" element="idm:badRequest"/> + <representation mediaType="application/xml" element="identity:badRequest"/> </response> <response status="500"> - <representation mediaType="application/xml" element="idm:idmFault"/> + <representation mediaType="application/xml" element="identity:identityFault"/> </response> <response status="503"> - <representation mediaType="application/xml" element="idm:serviceUnavailable"/> + <representation mediaType="application/xml" element="identity:serviceUnavailable"/> </response> <response status="401 403 400 409 500 503"> <representation mediaType="application/json"/> @@ -274,26 +274,26 @@ </method> <method name="GET" id="getTenant"> <response status="200 203"> - <representation mediaType="application/xml" element="idm:tenant"/> + <representation mediaType="application/xml" element="identity:tenant"/> <representation mediaType="application/json"/> </response> <response status="401"> - <representation mediaType="application/xml" element="idm:unauthorized"/> + <representation mediaType="application/xml" element="identity:unauthorized"/> </response> <response status="403"> - <representation mediaType="application/xml" element="idm:forbidden"/> + <representation mediaType="application/xml" element="identity:forbidden"/> </response> <response status="400"> - <representation mediaType="application/xml" element="idm:badRequest"/> + <representation mediaType="application/xml" element="identity:badRequest"/> </response> <response status="404"> - <representation mediaType="application/xml" element="idm:itemNotFound"/> + <representation mediaType="application/xml" element="identity:itemNotFound"/> </response> <response status="500"> - <representation mediaType="application/xml" element="idm:idmFault"/> + <representation mediaType="application/xml" element="identity:identityFault"/> </response> <response status="503"> - <representation mediaType="application/xml" element="idm:serviceUnavailable"/> + <representation mediaType="application/xml" element="identity:serviceUnavailable"/> </response> <response status="400 401 403 404 500 503"> <representation mediaType="application/json"/> @@ -301,30 +301,30 @@ </method> <method name="PUT" id="updateTenant"> <request> - <representation mediaType="application/xml" element="idm:tenant"/> + <representation mediaType="application/xml" element="identity:tenant"/> <representation mediaType="application/json"/> </request> <response status="200"> - <representation mediaType="application/xml" element="idm:tenant"/> + <representation mediaType="application/xml" element="identity:tenant"/> <representation mediaType="application/json"/> </response> <response status="401"> - <representation mediaType="application/xml" element="idm:unauthorized"/> + <representation mediaType="application/xml" element="identity:unauthorized"/> </response> <response status="403"> - <representation mediaType="application/xml" element="idm:forbidden"/> + <representation mediaType="application/xml" element="identity:forbidden"/> </response> <response status="404"> - <representation mediaType="application/xml" element="idm:itemNotFound"/> + <representation mediaType="application/xml" element="identity:itemNotFound"/> </response> <response status="400"> - <representation mediaType="application/xml" element="idm:badRequest"/> + <representation mediaType="application/xml" element="identity:badRequest"/> </response> <response status="500"> - <representation mediaType="application/xml" element="idm:idmFault"/> + <representation mediaType="application/xml" element="identity:identityFault"/> </response> <response status="503"> - <representation mediaType="application/xml" element="idm:serviceUnavailable"/> + <representation mediaType="application/xml" element="identity:serviceUnavailable"/> </response> <response status="401 403 404 400 500 503"> <representation mediaType="application/json"/> @@ -333,40 +333,40 @@ <method name="DELETE" id="deleteTenant"> <response status="204"/> <response status="401"> - <representation mediaType="application/xml" element="idm:unauthorized"/> + <representation mediaType="application/xml" element="identity:unauthorized"/> </response> <response status="403"> - <representation mediaType="application/xml" element="idm:forbidden"/> + <representation mediaType="application/xml" element="identity:forbidden"/> </response> <response status="400"> - <representation mediaType="application/xml" element="idm:badRequest"/> + <representation mediaType="application/xml" element="identity:badRequest"/> </response> <response status="404"> - <representation mediaType="application/xml" element="idm:itemNotFound"/> + <representation mediaType="application/xml" element="identity:itemNotFound"/> </response> <response status="500"> - <representation mediaType="application/xml" element="idm:idmFault"/> + <representation mediaType="application/xml" element="identity:identityFault"/> </response> <response status="503"> - <representation mediaType="application/xml" element="idm:serviceUnavailable"/> + <representation mediaType="application/xml" element="identity:serviceUnavailable"/> </response> <response status="400 401 403 404 500 503"> <representation mediaType="application/json"/> </response> </method> -</application>]]></con:content><con:type>http://wadl.dev.java.net/2009/02</con:type></con:part><con:part><con:url>file:/Users/jorgew/projects/keystone/keystone/xsd/api.xsd</con:url><con:content><schema elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://docs.openstack.org/identity/api/v2.0" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:idm="http://docs.openstack.org/identity/api/v2.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> +</application>]]></con:content><con:type>http://wadl.dev.java.net/2009/02</con:type></con:part><con:part><con:url>file:/Users/jorgew/projects/keystone/keystone/xsd/api.xsd</con:url><con:content><schema elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://docs.openstack.org/identity/api/v2.0" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:identity="http://docs.openstack.org/identity/api/v2.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <include schemaLocation="token.xsd"/> <include schemaLocation="tenant.xsd"/> <include schemaLocation="fault.xsd"/> -</schema></con:content><con:type>http://www.w3.org/2001/XMLSchema</con:type></con:part><con:part><con:url>file:/Users/jorgew/projects/keystone/keystone/xsd/token.xsd</con:url><con:content><![CDATA[<schema elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://docs.openstack.org/identity/api/v2.0" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:idm="http://docs.openstack.org/identity/api/v2.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> +</schema></con:content><con:type>http://www.w3.org/2001/XMLSchema</con:type></con:part><con:part><con:url>file:/Users/jorgew/projects/keystone/keystone/xsd/token.xsd</con:url><con:content><![CDATA[<schema elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://docs.openstack.org/identity/api/v2.0" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:identity="http://docs.openstack.org/identity/api/v2.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <!--Elements--> - <element name="passwordCredentials" type="idm:PasswordCredentials"/> - <element name="auth" type="idm:AuthData"/> + <element name="passwordCredentials" type="identity:PasswordCredentials"/> + <element name="auth" type="identity:AuthData"/> <!--Complex Types--> <complexType name="Credentials" abstract="true"/> <complexType name="PasswordCredentials"> <complexContent> - <extension base="idm:Credentials"> + <extension base="identity:Credentials"> <sequence> <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </sequence> @@ -379,8 +379,8 @@ </complexType> <complexType name="AuthData"> <sequence> - <element name="token" type="idm:Token"/> - <element name="user" type="idm:User"/> + <element name="token" type="identity:Token"/> + <element name="user" type="identity:User"/> <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </sequence> <anyAttribute namespace="##other" processContents="lax"/> @@ -395,7 +395,7 @@ </complexType> <complexType name="User"> <sequence> - <element name="groups" type="idm:Groups"/> + <element name="groups" type="identity:Groups"/> <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </sequence> <attribute name="tenantId" type="xsd:string"/> @@ -404,7 +404,7 @@ </complexType> <complexType name="Groups"> <sequence> - <element name="group" type="idm:Group" maxOccurs="1000"/> + <element name="group" type="identity:Group" maxOccurs="1000"/> <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </sequence> <anyAttribute namespace="##other" processContents="lax"/> @@ -414,16 +414,16 @@ <attribute name="tenantId" type="xsd:string" use="optional"/> <anyAttribute namespace="##other" processContents="lax"/> </complexType> -</schema>]]></con:content><con:type>http://www.w3.org/2001/XMLSchema</con:type></con:part><con:part><con:url>file:/Users/jorgew/projects/keystone/keystone/xsd/tenant.xsd</con:url><con:content><![CDATA[<schema elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://docs.openstack.org/identity/api/v2.0" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:idm="http://docs.openstack.org/identity/api/v2.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" xmlns:atom="http://www.w3.org/2005/Atom"> +</schema>]]></con:content><con:type>http://www.w3.org/2001/XMLSchema</con:type></con:part><con:part><con:url>file:/Users/jorgew/projects/keystone/keystone/xsd/tenant.xsd</con:url><con:content><![CDATA[<schema elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://docs.openstack.org/identity/api/v2.0" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:identity="http://docs.openstack.org/identity/api/v2.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" xmlns:atom="http://www.w3.org/2005/Atom"> <!--Import ATOM specific schema definitions--> <import vc:minVersion="1.1" namespace="http://www.w3.org/2005/Atom" schemaLocation="./atom/atom.xsd"/> <!--Elements--> - <element name="tenant" type="idm:Tenant"/> - <element name="tenants" type="idm:Tenants"/> + <element name="tenant" type="identity:Tenant"/> + <element name="tenants" type="identity:Tenants"/> <!--Complex Types--> <complexType name="Tenants"> <sequence> - <element name="tenant" type="idm:Tenant" maxOccurs="1000"/> + <element name="tenant" type="identity:Tenant" maxOccurs="1000"/> <element vc:minVersion="1.1" ref="atom:link" minOccurs="0" maxOccurs="unbounded"/> <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </sequence> @@ -780,19 +780,19 @@ </div> </xs:documentation> </xs:annotation> -</xs:schema>]]></con:content><con:type>http://www.w3.org/2001/XMLSchema</con:type></con:part><con:part><con:url>file:/Users/jorgew/projects/keystone/keystone/xsd/fault.xsd</con:url><con:content><![CDATA[<schema elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://docs.openstack.org/identity/api/v2.0" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:idm="http://docs.openstack.org/identity/api/v2.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> +</xs:schema>]]></con:content><con:type>http://www.w3.org/2001/XMLSchema</con:type></con:part><con:part><con:url>file:/Users/jorgew/projects/keystone/keystone/xsd/fault.xsd</con:url><con:content><![CDATA[<schema elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://docs.openstack.org/identity/api/v2.0" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:identity="http://docs.openstack.org/identity/api/v2.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <!--Fault Elements--> - <element name="idmFault" type="idm:IDMFault"/> - <element name="serviceUnavailable" type="idm:ServiceUnavailableFault"/> - <element name="badRequest" type="idm:BadRequestFault"/> - <element name="unauthorized" type="idm:UnauthorizedFault"/> - <element name="overLimit" type="idm:OverLimitFault"/> - <element name="userDisabled" type="idm:UserDisabledFault"/> - <element name="forbidden" type="idm:ForbiddenFault"/> - <element name="itemNotFound" type="idm:ItemNotFoundFault"/> - <element name="tenantConflict" type="idm:TenantConflictFault"/> + <element name="identityFault" type="identity:IdentityFault"/> + <element name="serviceUnavailable" type="identity:ServiceUnavailableFault"/> + <element name="badRequest" type="identity:BadRequestFault"/> + <element name="unauthorized" type="identity:UnauthorizedFault"/> + <element name="overLimit" type="identity:OverLimitFault"/> + <element name="userDisabled" type="identity:UserDisabledFault"/> + <element name="forbidden" type="identity:ForbiddenFault"/> + <element name="itemNotFound" type="identity:ItemNotFoundFault"/> + <element name="tenantConflict" type="identity:TenantConflictFault"/> <!--Fault Types--> - <complexType name="IDMFault"> + <complexType name="IdentityFault"> <sequence> <element name="message" type="xsd:string"> <annotation> @@ -825,42 +825,42 @@ </complexType> <complexType name="ServiceUnavailableFault"> <complexContent> - <extension base="idm:IDMFault"></extension> + <extension base="identity:IdentityFault"></extension> </complexContent> </complexType> <complexType name="BadRequestFault"> <complexContent> - <extension base="idm:IDMFault"></extension> + <extension base="identity:IdentityFault"></extension> </complexContent> </complexType> <complexType name="UnauthorizedFault"> <complexContent> - <extension base="idm:IDMFault"></extension> + <extension base="identity:IdentityFault"></extension> </complexContent> </complexType> <complexType name="UserDisabledFault"> <complexContent> - <extension base="idm:IDMFault"></extension> + <extension base="identity:IdentityFault"></extension> </complexContent> </complexType> <complexType name="ForbiddenFault"> <complexContent> - <extension base="idm:IDMFault"></extension> + <extension base="identity:IdentityFault"></extension> </complexContent> </complexType> <complexType name="ItemNotFoundFault"> <complexContent> - <extension base="idm:IDMFault"></extension> + <extension base="identity:IdentityFault"></extension> </complexContent> </complexType> <complexType name="TenantConflictFault"> <complexContent> - <extension base="idm:IDMFault"></extension> + <extension base="identity:IdentityFault"></extension> </complexContent> </complexType> <complexType name="OverLimitFault"> <complexContent> - <extension base="idm:IDMFault"> + <extension base="identity:IdentityFault"> <attribute name="retryAt" type="xsd:dateTime" use="optional"> <annotation> <xsd:documentation xml:lang="EN" xmlns="http://www.w3.org/1999/xhtml" xmlns:xs="http://www.w3.org/2001/XMLSchema"> @@ -1094,47 +1094,47 @@ </xs:attribute> <xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType> -</xs:schema>]]></con:content><con:type>http://www.w3.org/2001/XMLSchema</con:type></con:part></con:definitionCache><con:endpoints><con:endpoint>http://localhost:8080</con:endpoint></con:endpoints><con:resource name="v1.0" path="v1.0"><con:settings/><con:parameters/><con:resource name="extensions" path="extensions"><con:settings/><con:parameters/><con:resource name="{alias}" path="{alias}"><con:settings/><con:parameters><con:parameter><con:name>alias</con:name><con:value xsi:nil="true"/><con:style>TEMPLATE</con:style><con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type><con:default xsi:nil="true"/></con:parameter></con:parameters><con:method name="GET - getExtension" method="GET"><con:settings/><con:parameters/><con:representation type="RESPONSE" id=""><con:mediaType>application/xml</con:mediaType><con:status>200 203</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/common/api/v1.0">v1:extension</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="RESPONSE" id=""><con:mediaType>application/json</con:mediaType><con:status>200 203</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>400</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:badRequest</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>404</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:itemNotFound</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>500</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:idmFault</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>503</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:serviceUnavailable</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/json</con:mediaType><con:status>400 404 500 503</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:request name="Request 1" mediaType="application/xml" accept="application/xml"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:8080</con:endpoint><con:request/><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters><entry key="alias" value="RAX-TEST" xmlns="http://eviware.com/soapui/config"/></con:parameters></con:request></con:method></con:resource><con:method name="GET - getExtensions" method="GET"><con:settings/><con:parameters/><con:representation type="RESPONSE" id=""><con:mediaType>application/xml</con:mediaType><con:status>200 203</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/common/api/v1.0">v1:extensions</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="RESPONSE" id=""><con:mediaType>application/json</con:mediaType><con:status>200 203</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>400</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:badRequest</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>500</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:idmFault</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>503</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:serviceUnavailable</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/json</con:mediaType><con:status>400 500 503</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:request name="Request 1" mediaType="application/xml" accept="application/xml"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:8080</con:endpoint><con:request/><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters/></con:request></con:method></con:resource><con:resource name="token" path="token"><con:settings/><con:parameters/><con:resource name="{tokenId}" path="{tokenId}"><con:settings/><con:parameters><con:parameter required="true"><con:name>X-Auth-Token</con:name><con:value xsi:nil="true"/><con:style>HEADER</con:style><con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type><con:default xsi:nil="true"/></con:parameter><con:parameter><con:name>tokenId</con:name><con:value xsi:nil="true"/><con:style>TEMPLATE</con:style><con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type><con:default xsi:nil="true"/></con:parameter></con:parameters><con:method name="GET - validateToken" method="GET"><con:settings/><con:parameters><con:parameter><con:name>belongsTo</con:name><con:value xsi:nil="true"/><con:style>QUERY</con:style><con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type><con:default xsi:nil="true"/></con:parameter></con:parameters><con:representation type="RESPONSE" id=""><con:mediaType>application/xml</con:mediaType><con:status>200 203</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:auth</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="RESPONSE" id=""><con:mediaType>application/json</con:mediaType><con:status>200 203</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>401</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:unauthorized</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>403</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:forbidden</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>403</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:userDisabled</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>400</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:badRequest</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>404</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:itemNotFound</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>500</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:idmFault</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>503</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:serviceUnavailable</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/json</con:mediaType><con:status>400 401 403 404 500 503</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:request name="Request 1" mediaType="application/xml" accept="application/xml"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:8080</con:endpoint><con:request/><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters> +</xs:schema>]]></con:content><con:type>http://www.w3.org/2001/XMLSchema</con:type></con:part></con:definitionCache><con:endpoints><con:endpoint>http://localhost:8080</con:endpoint></con:endpoints><con:resource name="v1.0" path="v1.0"><con:settings/><con:parameters/><con:resource name="extensions" path="extensions"><con:settings/><con:parameters/><con:resource name="{alias}" path="{alias}"><con:settings/><con:parameters><con:parameter><con:name>alias</con:name><con:value xsi:nil="true"/><con:style>TEMPLATE</con:style><con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type><con:default xsi:nil="true"/></con:parameter></con:parameters><con:method name="GET - getExtension" method="GET"><con:settings/><con:parameters/><con:representation type="RESPONSE" id=""><con:mediaType>application/xml</con:mediaType><con:status>200 203</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/common/api/v1.0">v1:extension</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="RESPONSE" id=""><con:mediaType>application/json</con:mediaType><con:status>200 203</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>400</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:badRequest</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>404</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:itemNotFound</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>500</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:identityFault</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>503</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:serviceUnavailable</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/json</con:mediaType><con:status>400 404 500 503</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:request name="Request 1" mediaType="application/xml" accept="application/xml"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:8080</con:endpoint><con:request/><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters><entry key="alias" value="RAX-TEST" xmlns="http://eviware.com/soapui/config"/></con:parameters></con:request></con:method></con:resource><con:method name="GET - getExtensions" method="GET"><con:settings/><con:parameters/><con:representation type="RESPONSE" id=""><con:mediaType>application/xml</con:mediaType><con:status>200 203</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/common/api/v1.0">v1:extensions</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="RESPONSE" id=""><con:mediaType>application/json</con:mediaType><con:status>200 203</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>400</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:badRequest</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>500</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:identityFault</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>503</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:serviceUnavailable</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/json</con:mediaType><con:status>400 500 503</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:request name="Request 1" mediaType="application/xml" accept="application/xml"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:8080</con:endpoint><con:request/><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters/></con:request></con:method></con:resource><con:resource name="token" path="token"><con:settings/><con:parameters/><con:resource name="{tokenId}" path="{tokenId}"><con:settings/><con:parameters><con:parameter required="true"><con:name>X-Auth-Token</con:name><con:value xsi:nil="true"/><con:style>HEADER</con:style><con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type><con:default xsi:nil="true"/></con:parameter><con:parameter><con:name>tokenId</con:name><con:value xsi:nil="true"/><con:style>TEMPLATE</con:style><con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type><con:default xsi:nil="true"/></con:parameter></con:parameters><con:method name="GET - validateToken" method="GET"><con:settings/><con:parameters><con:parameter><con:name>belongsTo</con:name><con:value xsi:nil="true"/><con:style>QUERY</con:style><con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type><con:default xsi:nil="true"/></con:parameter></con:parameters><con:representation type="RESPONSE" id=""><con:mediaType>application/xml</con:mediaType><con:status>200 203</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:auth</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="RESPONSE" id=""><con:mediaType>application/json</con:mediaType><con:status>200 203</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>401</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:unauthorized</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>403</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:forbidden</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>403</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:userDisabled</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>400</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:badRequest</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>404</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:itemNotFound</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>500</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:identityFault</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>503</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:serviceUnavailable</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/json</con:mediaType><con:status>400 401 403 404 500 503</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:request name="Request 1" mediaType="application/xml" accept="application/xml"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:8080</con:endpoint><con:request/><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters> <con:entry key="tokenId" value="887665443383838"/> <con:entry key="X-Auth-Token" value="999888777666"/> <con:entry key="belongsTo" value="1234"/> -</con:parameters></con:request></con:method><con:method name="DELETE - revokeToken" method="DELETE"><con:settings/><con:parameters/><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>401</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:unauthorized</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>403</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:forbidden</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>400</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:badRequest</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>404</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:itemNotFound</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>500</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:idmFault</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>503</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:serviceUnavailable</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/json</con:mediaType><con:status>400 401 403 404 500 503</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:request name="Request 1" mediaType="application/xml"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:8080</con:endpoint><con:request/><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters> +</con:parameters></con:request></con:method><con:method name="DELETE - revokeToken" method="DELETE"><con:settings/><con:parameters/><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>401</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:unauthorized</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>403</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:forbidden</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>400</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:badRequest</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>404</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:itemNotFound</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>500</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:identityFault</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>503</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:serviceUnavailable</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/json</con:mediaType><con:status>400 401 403 404 500 503</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:request name="Request 1" mediaType="application/xml"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:8080</con:endpoint><con:request/><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters> <con:entry key="tokenId" value="3u37737"/> <con:entry key="X-Auth-Token" value="3838737726"/> </con:parameters></con:request></con:method></con:resource><con:method name="POST - authenticate" method="POST"><con:settings/><con:parameters/><con:representation type="REQUEST" id=""><con:mediaType>application/xml</con:mediaType><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:passwordCredentials</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="REQUEST" id=""><con:mediaType>application/json</con:mediaType><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:representation type="RESPONSE" id=""><con:mediaType>application/xml</con:mediaType><con:status>200 203</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:auth</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="RESPONSE" id=""><con:mediaType>application/json</con:mediaType><con:status>200 -203</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>401</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:unauthorized</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>403</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:userDisabled</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>400</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:badRequest</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>500</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:idmFault</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>503</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:serviceUnavailable</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/json</con:mediaType><con:status>401 +203</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>401</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:unauthorized</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>403</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:userDisabled</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>400</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:badRequest</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>500</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:identityFault</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>503</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:serviceUnavailable</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/json</con:mediaType><con:status>401 403 400 500 503</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:request name="Request 1" mediaType="application/xml" postQueryString="false" accept="application/xml"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:8080</con:endpoint><con:request><passwordCredentials password="secrete" username="joeuser" xmlns="http://docs.openstack.org/identity/api/v2.0"/></con:request><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters/></con:request></con:method></con:resource><con:resource name="tenants" path="tenants"><con:settings/><con:parameters><con:parameter required="true"><con:name>X-Auth-Token</con:name><con:value xsi:nil="true"/><con:style>HEADER</con:style><con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type><con:default xsi:nil="true"/></con:parameter></con:parameters><con:resource name="{tenantId}" path="{tenantId}"><con:settings/><con:parameters><con:parameter><con:name>tenantId</con:name><con:value xsi:nil="true"/><con:style>TEMPLATE</con:style><con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type><con:default xsi:nil="true"/></con:parameter></con:parameters><con:method name="GET - getTenant" method="GET"><con:settings/><con:parameters/><con:representation type="RESPONSE" id=""><con:mediaType>application/xml</con:mediaType><con:status>200 203</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:tenant</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="RESPONSE" id=""><con:mediaType>application/json</con:mediaType><con:status>200 -203</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>401</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:unauthorized</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>403</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:forbidden</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>400</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:badRequest</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>404</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:itemNotFound</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>500</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:idmFault</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>503</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:serviceUnavailable</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/json</con:mediaType><con:status>400 +203</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>401</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:unauthorized</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>403</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:forbidden</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>400</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:badRequest</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>404</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:itemNotFound</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>500</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:identityFault</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>503</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:serviceUnavailable</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/json</con:mediaType><con:status>400 401 403 404 500 503</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:request name="Request 1" mediaType="application/xml" accept="application/xml"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:8080</con:endpoint><con:request/><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters> <con:entry key="tenantId" value="1234"/> <con:entry key="X-Auth-Token" value="999888777666"/> -</con:parameters></con:request></con:method><con:method name="PUT - updateTenant" method="PUT"><con:settings/><con:parameters/><con:representation type="REQUEST" id=""><con:mediaType>application/xml</con:mediaType><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:tenant</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="REQUEST" id=""><con:mediaType>application/json</con:mediaType><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:representation type="RESPONSE" id=""><con:mediaType>application/xml</con:mediaType><con:status>200</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:tenant</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="RESPONSE" id=""><con:mediaType>application/json</con:mediaType><con:status>200</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>401</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:unauthorized</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>403</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:forbidden</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>404</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:itemNotFound</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>400</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:badRequest</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>500</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:idmFault</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>503</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:serviceUnavailable</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/json</con:mediaType><con:status>401 +</con:parameters></con:request></con:method><con:method name="PUT - updateTenant" method="PUT"><con:settings/><con:parameters/><con:representation type="REQUEST" id=""><con:mediaType>application/xml</con:mediaType><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:tenant</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="REQUEST" id=""><con:mediaType>application/json</con:mediaType><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:representation type="RESPONSE" id=""><con:mediaType>application/xml</con:mediaType><con:status>200</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:tenant</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="RESPONSE" id=""><con:mediaType>application/json</con:mediaType><con:status>200</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>401</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:unauthorized</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>403</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:forbidden</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>404</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:itemNotFound</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>400</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:badRequest</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>500</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:identityFault</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>503</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:serviceUnavailable</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/json</con:mediaType><con:status>401 403 404 400 500 503</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:request name="Request 1" mediaType="application/xml" postQueryString="false"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:8080</con:endpoint><con:request><v1:tenant enabled="true" xmlns:v1="http://docs.openstack.org/identity/api/v2.0"> <v1:description>New Description</v1:description> </v1:tenant></con:request><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters> <con:entry key="tenantId" value="1234"/> <con:entry key="X-Auth-Token" value="999888777666"/> -</con:parameters></con:request></con:method><con:method name="DELETE - deleteTenant" method="DELETE"><con:settings/><con:parameters/><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>401</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:unauthorized</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>403</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:forbidden</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>400</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:badRequest</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>404</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:itemNotFound</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>500</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:idmFault</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>503</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:serviceUnavailable</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/json</con:mediaType><con:status>400 +</con:parameters></con:request></con:method><con:method name="DELETE - deleteTenant" method="DELETE"><con:settings/><con:parameters/><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>401</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:unauthorized</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>403</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:forbidden</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>400</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:badRequest</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>404</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:itemNotFound</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>500</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:identityFault</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>503</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:serviceUnavailable</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/json</con:mediaType><con:status>400 401 403 404 500 503</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:request name="Request 1" mediaType="application/xml"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><entry key="Accept" value="application/xml" xmlns="http://eviware.com/soapui/config"/></con:setting></con:settings><con:endpoint>http://localhost:8080</con:endpoint><con:request/><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters> <con:entry key="tenantId" value="0000"/> <con:entry key="X-Auth-Token" value="999888777666"/> </con:parameters></con:request></con:method></con:resource><con:method name="GET - getTenants" method="GET"><con:settings/><con:parameters><con:parameter><con:name>marker</con:name><con:value xsi:nil="true"/><con:style>QUERY</con:style><con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type><con:default xsi:nil="true"/></con:parameter><con:parameter><con:name>limit</con:name><con:value xsi:nil="true"/><con:style>QUERY</con:style><con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:int</con:type><con:default xsi:nil="true"/></con:parameter></con:parameters><con:representation type="RESPONSE" id=""><con:mediaType>application/xml</con:mediaType><con:status>200 203</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:tenants</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="RESPONSE" id=""><con:mediaType>application/json</con:mediaType><con:status>200 -203</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>401</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:unauthorized</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>403</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:forbidden</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>400</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:badRequest</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>404</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:itemNotFound</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>500</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:idmFault</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>503</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:serviceUnavailable</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/json</con:mediaType><con:status>400 +203</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>401</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:unauthorized</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>403</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:forbidden</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>400</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:badRequest</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>404</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:itemNotFound</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>500</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:identityFault</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>503</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:serviceUnavailable</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/json</con:mediaType><con:status>400 401 403 404 500 503</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:request name="Request 1" mediaType="application/xml"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:8080</con:endpoint><con:request/><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters><entry key="X-Auth-Token" value="999888777666" xmlns="http://eviware.com/soapui/config"/></con:parameters></con:request></con:method><con:method name="POST - createTenant" method="POST"><con:settings/><con:parameters/><con:representation type="REQUEST" id=""><con:mediaType>application/xml</con:mediaType><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:tenant</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="REQUEST" id=""><con:mediaType>application/json</con:mediaType><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:representation type="RESPONSE" id=""><con:mediaType>application/xml</con:mediaType><con:status>201</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:tenant</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="RESPONSE" id=""><con:mediaType>application/json</con:mediaType><con:status>201</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>401</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:unauthorized</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>403</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:forbidden</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType> <con:status>409</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:tenantConflict</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType> -<con:status>400</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:badRequest</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>500</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:idmFault</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>503</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:serviceUnavailable</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/json</con:mediaType><con:status>401 +<con:status>400</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:badRequest</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>500</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:identityFault</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>503</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:serviceUnavailable</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/json</con:mediaType><con:status>401 403 400 409 500 503</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:request name="Request 1" mediaType="application/xml" postQueryString="false" accept="application/xml"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:8080</con:endpoint><con:request><v1:tenant enabled="true" id="my_new_tenant" xmlns:v1="http://docs.openstack.org/identity/api/v2.0"><v1:description>This is a description of my tenant. Thank you very much.</v1:description></v1:tenant></con:request><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters><entry key="X-Auth-Token" value="999888777666" xmlns="http://eviware.com/soapui/config"/></con:parameters></con:request></con:method></con:resource><con:method name="GET - getVersionInfo" method="GET"><con:settings/><con:parameters/><con:representation type="RESPONSE" id=""><con:mediaType>application/xml</con:mediaType><con:status>200 203</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/common/api/v1.0">v1:version</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="RESPONSE" id=""><con:mediaType>application/json</con:mediaType><con:status>200 -203</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>400</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:badRequest</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>500</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:idmFault</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>503</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:serviceUnavailable</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/json</con:mediaType><con:status>400 +203</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>400</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:badRequest</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>500</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:identityFault</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/xml</con:mediaType><con:status>503</con:status><con:params/><con:element xmlns:v1="http://docs.openstack.org/identity/api/v2.0">v1:serviceUnavailable</con:element><con:description xsi:nil="true"/></con:representation><con:representation type="FAULT" id=""><con:mediaType>application/json</con:mediaType><con:status>400 500 503</con:status><con:params/><con:element xsi:nil="true"/><con:description xsi:nil="true"/></con:representation><con:request name="Request 1" mediaType="application/xml" accept="application/xml"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:8080</con:endpoint><con:request/><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters/></con:request></con:method></con:resource></con:interface><con:testSuite name="Keystone Tests"><con:settings/><con:runType>SEQUENTIAL</con:runType><con:testCase failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="Admin Credential Check" searchProperties="true" id="29b2fa4b-e1c3-49c4-a7e6-334724e74bb9"><con:settings/><con:testStep type="restrequest" name="GET - validateToken - Valid Token"><con:settings/><con:config service="Keystone" resourcePath="/v1.0/token/{tokenId}" methodName="GET - validateToken" xsi:type="con:RestRequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:restRequest name="GET - validateToken - Valid Token" mediaType="application/xml" accept="application/xml"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:8080</con:endpoint><con:request/><con:assertion type="Simple Contains"><con:configuration><token>auth</token><ignoreCase>false</ignoreCase><useRegEx>false</useRegEx></con:configuration></con:assertion><con:assertion type="Simple Contains"><con:configuration><token>token</token><ignoreCase>false</ignoreCase><useRegEx>false</useRegEx></con:configuration></con:assertion><con:assertion type="Simple Contains"><con:configuration><token>user</token><ignoreCase>false</ignoreCase><useRegEx>false</useRegEx></con:configuration></con:assertion><con:assertion type="Schema Compliance"><con:configuration><definition/></con:configuration></con:assertion><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters> <con:entry key="tokenId" value="887665443383838"/> <con:entry key="X-Auth-Token" value="999888777666"/> diff --git a/test/unit/test_authentication.py b/test/unit/test_authentication.py index b1ee112e..a6531473 100644 --- a/test/unit/test_authentication.py +++ b/test/unit/test_authentication.py @@ -1,3 +1,23 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# Copyright (c) 2010-2011 OpenStack, LLC. +# +# 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. + + +import httplib2 +import json +from lxml import etree import os import sys # Need to access identity module @@ -5,34 +25,32 @@ sys.path.append(os.path.abspath(os.path.join(os.path.abspath(__file__), '..', '..', '..', '..', 'keystone'))) import unittest from webtest import TestApp -import httplib2 -import json -from lxml import etree import test_common as utils -class authentication_test(unittest.TestCase): +class AuthenticationTest(unittest.TestCase): def setUp(self): self.tenant = utils.get_tenant() - self.token = utils.get_token('joeuser', 'secrete', 'token') - self.user = utils.get_user() + self.token = utils.get_token('joeuser', 'secrete', self.tenant, + 'token') + #self.user = utils.get_user() self.userdisabled = utils.get_userdisabled() self.auth_token = utils.get_auth_token() - self.exp_auth_token = utils.get_exp_auth_token() - self.disabled_token = utils.get_disabled_token() + #self.exp_auth_token = utils.get_exp_auth_token() + #self.disabled_token = utils.get_disabled_token() def tearDown(self): utils.delete_token(self.token, self.auth_token) def test_a_authorize(self): - resp, content = utils.get_token('joeuser', 'secrete', '') + resp, content = utils.get_token('joeuser', 'secrete', self.tenant) self.assertEqual(200, int(resp['status'])) self.assertEqual('application/json', utils.content_type(resp)) def test_a_authorize_xml(self): - resp, content = utils.get_token_xml('joeuser', 'secrete', '', + resp, content = utils.get_token_xml('joeuser', 'secrete', self.tenant) self.assertEqual(200, int(resp['status'])) self.assertEqual('application/xml', utils.content_type(resp)) @@ -40,10 +58,12 @@ class authentication_test(unittest.TestCase): def test_a_authorize_user_disabled(self): header = httplib2.Http(".cache") url = '%stoken' % utils.URL - body = {"passwordCredentials": {"username": "disabled", - "password": "secrete"}} + body = {"passwordCredentials": {"username": self.userdisabled, + "password": "secrete", + "tenantId": self.tenant}} resp, content = header.request(url, "POST", body=json.dumps(body), headers={"Content-Type": "application/json"}) + content = json.loads(content) if int(resp['status']) == 500: self.fail('Identity Fault') @@ -58,11 +78,12 @@ class authentication_test(unittest.TestCase): body = '<?xml version="1.0" encoding="UTF-8"?> \ <passwordCredentials \ xmlns="http://docs.openstack.org/identity/api/v2.0" \ - password="secrete" username="disabled" \ - />' + password="secrete" username="%s" \ + tenantId="%s"/>' % (self.userdisabled, self.tenant) resp, content = header.request(url, "POST", body=body, headers={"Content-Type": "application/xml", "ACCEPT": "application/xml"}) + content = etree.fromstring(content) if int(resp['status']) == 500: self.fail('Identity Fault') @@ -75,7 +96,8 @@ class authentication_test(unittest.TestCase): header = httplib2.Http(".cache") url = '%stoken' % utils.URL body = {"passwordCredentials": {"username-w": "disabled", - "password": "secrete"}} + "password": "secrete", + "tenantId": self.tenant}} resp, content = header.request(url, "POST", body=json.dumps(body), headers={"Content-Type": "application/json"}) content = json.loads(content) @@ -93,7 +115,7 @@ class authentication_test(unittest.TestCase): <passwordCredentials \ xmlns="http://docs.openstack.org/identity/api/v2.0" \ password="secrete" username-w="disabled" \ - />' + tenantId="%s"/>' % self.tenant resp, content = header.request(url, "POST", body=body, headers={"Content-Type": "application/xml", "ACCEPT": "application/xml"}) @@ -105,5 +127,55 @@ class authentication_test(unittest.TestCase): self.assertEqual(400, int(resp['status'])) self.assertEqual('application/xml', utils.content_type(resp)) + +class MultiToken(unittest.TestCase): + + def setUp(self): + self.auth_token = utils.get_auth_token() + self.userdisabled = utils.get_userdisabled() + resp1, content1 = utils.create_tenant('test_tenant1', self.auth_token) + #create tenant2 + resp2, content2 = utils.create_tenant('test_tenant2', self.auth_token) + #create user1 with tenant1 + resp3, content3 = utils.create_user('test_tenant1', 'test_user1', + self.auth_token) + resp3, content3 = utils.create_user('test_tenant1', 'test_user2', + self.auth_token) + #add user1 to tenant2 + resp4, content4 = utils.add_user_json('test_tenant2', 'test_user1', + self.auth_token) + #self.exp_auth_token = utils.get_exp_auth_token() + #self.disabled_token = utils.get_disabled_token() + + def tearDown(self): + utils.delete_user('test_tenant1', 'test_user1', self.auth_token) + utils.delete_user('test_tenant1', 'test_user2', self.auth_token) + utils.delete_user('test_tenant2', 'test_user1', self.auth_token) + utils.delete_tenant('test_tenant1', self.auth_token) + utils.delete_tenant('test_tenant2', self.auth_token) + + """ INVALID TEST - we're changing how we delegate access to second tenant + def test_multi_token(self): + #get token for user1 with tenant1 + token1 = utils.get_token('test_user1', 'secrete', 'test_tenant1',\ + 'token') + #get token for user 1 with tenant2 + token2 = utils.get_token('test_user1', 'secrete', 'test_tenant2',\ + 'token') + #test result :: both token should be different + self.assertNotEqual(token1, None) + self.assertNotEqual(token2, None) + self.assertNotEqual(token1, token2) + + resp = utils.delete_token(token1, self.auth_token) + resp = utils.delete_token(token2, self.auth_token) + """ + + def test_unassigned_user(self): + resp, content = utils.get_token('test_user2', 'secrete', \ + 'test_tenant2') + + self.assertEqual(403, int(resp['status'])) + if __name__ == '__main__': unittest.main() diff --git a/test/unit/test_common.py b/test/unit/test_common.py index 47838310..07c46f50 100644 --- a/test/unit/test_common.py +++ b/test/unit/test_common.py @@ -1,21 +1,38 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# Copyright (c) 2010-2011 OpenStack, LLC. +# +# 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. + + +import httplib2 +import json +from lxml import etree import os import sys -# Need to access identity module sys.path.append(os.path.abspath(os.path.join(os.path.abspath(__file__), '..', '..', '..', '..', 'keystone'))) import unittest -from webtest import TestApp -import httplib2 -import json -from lxml import etree + URL = 'http://localhost:8080/v2.0/' -def get_token(user, pswd, kind='', tenant_id=None): +def get_token(user, pswd, tenant_id, kind=''): header = httplib2.Http(".cache") url = '%stoken' % URL + # to test multi token, removing below code if not tenant_id: body = {"passwordCredentials": {"username": user, "password": pswd}} @@ -23,17 +40,22 @@ def get_token(user, pswd, kind='', tenant_id=None): body = {"passwordCredentials": {"username": user, "password": pswd, "tenantId": tenant_id}} - + resp, content = header.request(url, "POST", body=json.dumps(body), headers={"Content-Type": "application/json"}) - content = json.loads(content) - token = str(content['auth']['token']['id']) + + if int(resp['status']) == 200: + content = json.loads(content) + token = str(content['auth']['token']['id']) + else: + token = None if kind == 'token': return token else: return (resp, content) + def delete_token(token, auth_token): header = httplib2.Http(".cache") url = '%stoken/%s' % (URL, token) @@ -74,7 +96,7 @@ def delete_tenant(tenantid, auth_token): resp, content = header.request(url, "DELETE", body='{}', headers={"Content-Type": "application/json", "X-Auth-Token": auth_token}) - return (resp, content) + return resp def delete_tenant_group(groupid, tenantid, auth_token): @@ -93,6 +115,7 @@ def create_global_group(groupid, auth_token): body = {"group": {"id": groupid, "description": "A description ..."}} resp, content = header.request(url, "POST", body=json.dumps(body), + headers={"Content-Type": "application/json", "X-Auth-Token": auth_token}) return (resp, content) @@ -131,10 +154,11 @@ def delete_global_group_xml(groupid, auth_token): return (resp, content) -def get_token_xml(user, pswd, type='', tenant_id=None): +def get_token_xml(user, pswd, tenant_id, type=''): header = httplib2.Http(".cache") url = '%stoken' % URL - if tenant_id: + # to test multi token, removing below code + """if tenant_id: body = '<?xml version="1.0" encoding="UTF-8"?> \ <passwordCredentials \ xmlns="http://docs.openstack.org/identity/api/v2.0" \ @@ -144,14 +168,24 @@ def get_token_xml(user, pswd, type='', tenant_id=None): body = '<?xml version="1.0" encoding="UTF-8"?> \ <passwordCredentials \ xmlns="http://docs.openstack.org/identity/api/v2.0" \ - password="%s" username="%s" /> ' % (pswd, user) + password="%s" username="%s" /> ' % (pswd, user)""" + # adding code ie., body + body = '<?xml version="1.0" encoding="UTF-8"?> \ + <passwordCredentials \ + xmlns="http://docs.openstack.org/identity/api/v2.0" \ + password="%s" username="%s" \ + tenantId="%s"/> ' % (pswd, user, tenant_id) resp, content = header.request(url, "POST", body=body, headers={"Content-Type": "application/xml", "ACCEPT": "application/xml"}) - dom = etree.fromstring(content) - root = dom.find("{http://docs.openstack.org/identity/api/v2.0}token") - token_root = root.attrib - token = str(token_root['id']) + if int(resp['status']) == 200: + dom = etree.fromstring(content) + root = dom.find("{http://docs.openstack.org/identity/api/v2.0}token") + token_root = root.attrib + token = str(token_root['id']) + else: + token = None + if type == 'token': return token else: @@ -205,7 +239,8 @@ def delete_tenant_xml(tenantid, auth_token): headers={"Content-Type": "application/xml", "X-Auth-Token": auth_token, "ACCEPT": "application/xml"}) - return (resp, content) + + return resp def delete_tenant_group_xml(groupid, tenantid, auth_token): @@ -218,13 +253,17 @@ def delete_tenant_group_xml(groupid, tenantid, auth_token): return (resp, content) -def create_user(tenantid, userid, auth_token): +def create_user(tenantid, userid, auth_token, email=None): header = httplib2.Http(".cache") url = '%stenants/%s/users' % (URL, tenantid) + if email is not None: + email_id = email + else: + email_id = "%s@rackspace.com" % userid body = {"user": {"password": "secrete", "id": userid, "tenantId": tenantid, - "email": "%s@rackspace.com" % userid, + "email": "%s" % email_id, "enabled": True}} resp, content = header.request(url, "POST", body=json.dumps(body), headers={"Content-Type": "application/json", @@ -235,22 +274,24 @@ def create_user(tenantid, userid, auth_token): def delete_user(tenant, userid, auth_token): header = httplib2.Http(".cache") url = '%stenants/%s/users/%s' % (URL, tenant, userid) - resp, content = header.request(url, "DELETE", body='{}', headers={"Content-Type": "application/json", "X-Auth-Token": auth_token}) - - return (resp, content) + return resp -def create_user_xml(tenantid, userid, auth_token): +def create_user_xml(tenantid, userid, auth_token, email=None): header = httplib2.Http(".cache") url = '%stenants/%s/users' % (URL, tenantid) + if email is not None: + email_id = email + else: + email_id = userid body = '<?xml version="1.0" encoding="UTF-8"?> \ <user xmlns="http://docs.openstack.org/identity/api/v2.0" \ - email="joetest@rackspace.com" \ + email="%s" \ tenantId="%s" id="%s" \ - enabled="true" password="secrete"/>' % (tenantid, userid) + enabled="true" password="secrete"/>' % (email_id, tenantid, userid) resp, content = header.request(url, "POST", body=body, headers={"Content-Type": "application/xml", "X-Auth-Token": auth_token, @@ -258,6 +299,16 @@ def create_user_xml(tenantid, userid, auth_token): return (resp, content) +"""def delete_user(tenant, userid, auth_token): + h = httplib2.Http(".cache") + url = '%stenants/%s/users/%s' % (URL, tenant, userid) + + resp, content = h.request(url, "DELETE", body='{}', + headers={"Content-Type": "application/json", + "X-Auth-Token": auth_token}) + return resp""" + + def delete_user_xml(tenantid, userid, auth_token): header = httplib2.Http(".cache") url = '%stenants/%s/users/%s' % (URL, tenantid, userid) @@ -265,6 +316,176 @@ def delete_user_xml(tenantid, userid, auth_token): headers={"Content-Type": "application/xml", "X-Auth-Token": auth_token, "ACCEPT": "application/xml"}) + return resp + +def add_user_json(tenantid, userid, auth_token): + header = httplib2.Http(".cache") + url = '%stenants/%s/users/%s/add' % (URL, tenantid, userid) + resp, content = header.request(url, "PUT", body='{}', + headers={"Content-Type": "application/json", + "X-Auth-Token": auth_token}) + return (resp, content) + +def add_user_xml(tenantid, userid, auth_token): + header = httplib2.Http(".cache") + url = '%stenants/%s/users/%s/add' % (URL, tenantid, userid) + resp, content = header.request(url, "PUT", body='{}', + headers={"Content-Type": "application/xml", + "X-Auth-Token": auth_token, + "ACCEPT": "application/xml"}) + return (resp, content) + +def add_user_json(tenantid, userid, auth_token): + header = httplib2.Http(".cache") + url = '%stenants/%s/users/%s/add' % (URL, tenantid, userid) + resp, content = header.request(url, "PUT", body='{}', + headers={"Content-Type": "application/json", + "X-Auth-Token": auth_token}) + return (resp, content) + + +def add_user_xml(tenantid, userid, auth_token): + header = httplib2.Http(".cache") + url = '%stenants/%s/users/%s/add' % (URL, tenantid, userid) + resp, content = header.request(url, "PUT", body='{}', + headers={"Content-Type": "application/xml", + "X-Auth-Token": auth_token, + "ACCEPT": "application/xml"}) + return (resp, content) + + +def user_update_json(tenant_id, user_id, auth_token, email=None): + h = httplib2.Http(".cache") + url = '%stenants/%s/users/%s' % (URL, tenant_id, user_id) + if email is None: + new_email = "updatedjoeuser@rackspace.com" + else: + new_email = email + data = '{"user": { "email": "%s"}}' % (new_email) + resp, content = h.request(url, "PUT", body=data, + headers={"Content-Type": "application/json", + "X-Auth-Token": auth_token}) + return (resp, content) + + +def user_update_xml(tenant_id, user_id, auth_token, email=None): + h = httplib2.Http(".cache") + url = '%stenants/%s/users/%s' % (URL, tenant_id, user_id) + if email is None: + new_email = "updatedjoeuser@rackspace.com" + else: + new_email = email + data = '<?xml version="1.0" encoding="UTF-8"?> \ + <user xmlns="http://docs.openstack.org/identity/api/v2.0" \ + email="%s" />' % (new_email) + resp, content = h.request(url, "PUT", body=data, + headers={"Content-Type": "application/xml", + "X-Auth-Token": auth_token, + "ACCEPT": "application/xml"}) + return (resp, content) + + +def user_get_json(tenant_id, user_id, auth_token): + h = httplib2.Http(".cache") + url = '%stenants/%s/users/%s' % (URL, tenant_id, user_id) + #test for Content-Type = application/json + resp, content = h.request(url, "GET", body='{}', + headers={"Content-Type": "application/json", + "X-Auth-Token": auth_token}) + return (resp, content) + + +def user_password_json(tenant_id, user_id, auth_token): + h = httplib2.Http(".cache") + url = '%stenants/%s/users/%s/password' % (URL, tenant_id, user_id) + data = '{"user": { "password": "p@ssword"}}' + resp, content = h.request(url, "PUT", body=data, + headers={"Content-Type": "application/json", + "X-Auth-Token": auth_token}) + return (resp, content) + + +def user_password_xml(tenant_id, user_id, auth_token): + h = httplib2.Http(".cache") + url = '%stenants/%s/users/%s/password' % (URL, tenant_id, user_id) + data = '<?xml version="1.0" encoding="UTF-8"?> \ + <user xmlns="http://docs.openstack.org/identity/api/v2.0" \ + password="p@ssword" />' + resp, content = h.request(url, "PUT", body=data, + headers={"Content-Type": "application/xml", + "X-Auth-Token": auth_token, + "ACCEPT": "application/xml"}) + return (resp, content) + + +def user_enabled_json(tenant_id, user_id, auth_token): + h = httplib2.Http(".cache") + url = '%stenants/%s/users/%s/enabled' % (URL, tenant_id, user_id) + data = {"user": {"enabled": True}} + resp, content = h.request(url, "PUT", body=json.dumps(data), + headers={"Content-Type": "application/json", + "X-Auth-Token": auth_token}) + return (resp, content) + + +def user_enabled_xml(tenant_id, user_id, auth_token): + h = httplib2.Http(".cache") + url = '%stenants/%s/users/%s/enabled' % (URL, tenant_id, user_id) + data = '<?xml version="1.0" encoding="UTF-8"?> \ + <user xmlns="http://docs.openstack.org/identity/api/v2.0" \ + enabled="true" />' + resp, content = h.request(url, "PUT", body=data, + headers={"Content-Type": "application/xml", + "X-Auth-Token": auth_token, + "ACCEPT": "application/xml"}) + return (resp, content) + + +def user_get_xml(tenant_id, user_id, auth_token): + h = httplib2.Http(".cache") + url = '%stenants/%s/users/%s' % (URL, tenant_id, user_id) + resp, content = h.request(url, "GET", body='{}', + headers={"Content-Type": "application/xml", + "X-Auth-Token": auth_token, + "ACCEPT": "application/xml"}) + return (resp, content) + + +def users_get_json(tenant_id, auth_token): + h = httplib2.Http(".cache") + url = '%stenants/%s/users' % (URL, tenant_id) + resp, content = h.request(url, "GET", body='{}', + headers={"Content-Type": "application/json", + "X-Auth-Token": auth_token}) + return (resp, content) + + +def users_get_xml(tenant_id, auth_token): + h = httplib2.Http(".cache") + url = '%stenants/%s/users' % (URL, tenant_id) + resp, content = h.request(url, "GET", body='{}', + headers={"Content-Type": "application/xml", + "X-Auth-Token": auth_token, + "ACCEPT": "application/xml"}) + return (resp, content) + + +def users_group_get_json(tenant_id, user_id, auth_token): + h = httplib2.Http(".cache") + url = '%stenants/%s/users/%s/groups' % (URL, tenant_id, user_id) + resp, content = h.request(url, "GET", body='{}', + headers={"Content-Type": "application/json", + "X-Auth-Token": auth_token}) + return (resp, content) + + +def users_group_get_xml(tenant_id, user_id, auth_token): + h = httplib2.Http(".cache") + url = '%stenants/%s/users/%s/groups' % (URL, tenant_id, user_id) + resp, content = h.request(url, "GET", body='{}', + headers={"Content-Type": "application/xml", + "X-Auth-Token": auth_token, + "ACCEPT": "application/xml"}) return (resp, content) @@ -411,6 +632,10 @@ def get_tenant(): return '1234' +def get_another_tenant(): + return '4321' + + def get_user(): return 'test_user' @@ -457,7 +682,6 @@ def handle_user_resp(self, content, respvalue, resptype): content = etree.fromstring(content) self.tenant = content.get("tenantId") self.id = content.get("id") - if respvalue == 500: self.fail('Identity Fault') elif respvalue == 503: diff --git a/test/unit/test_exthandler.py b/test/unit/test_exthandler.py index 4d09c148..5d41aeac 100644 --- a/test/unit/test_exthandler.py +++ b/test/unit/test_exthandler.py @@ -26,22 +26,22 @@ class UrlExtensionFilterTest(unittest.TestCase): self.filter = UrlExtensionFilter(MockWsgiApp(), {}) def test_xml_extension(self): - env = {'PATH_INFO': '/v1.0/someresource.xml'} + env = {'PATH_INFO': '/v2.0/someresource.xml'} self.filter(env, _start_response) - self.assertEqual('/v1.0/someresource', env['PATH_INFO']) + self.assertEqual('/v2.0/someresource', env['PATH_INFO']) self.assertEqual('application/xml', env['HTTP_ACCEPT']) def test_json_extension(self): - env = {'PATH_INFO': '/v1.0/someresource.json'} + env = {'PATH_INFO': '/v2.0/someresource.json'} self.filter(env, _start_response) - self.assertEqual('/v1.0/someresource', env['PATH_INFO']) + self.assertEqual('/v2.0/someresource', env['PATH_INFO']) self.assertEqual('application/json', env['HTTP_ACCEPT']) def test_extension_overrides_header(self): - env = {'PATH_INFO': '/v1.0/someresource.json', + env = {'PATH_INFO': '/v2.0/someresource.json', 'HTTP_ACCEPT': 'application/xml'} self.filter(env, _start_response) - self.assertEqual('/v1.0/someresource', env['PATH_INFO']) + self.assertEqual('/v2.0/someresource', env['PATH_INFO']) self.assertEqual('application/json', env['HTTP_ACCEPT']) diff --git a/test/unit/test_groups.py b/test/unit/test_groups.py index 419536d0..333f419b 100644 --- a/test/unit/test_groups.py +++ b/test/unit/test_groups.py @@ -1,25 +1,41 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# Copyright (c) 2010-2011 OpenStack, LLC. +# +# 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. + + +import httplib2 +import json +from lxml import etree import os import sys -# Need to access identity module sys.path.append(os.path.abspath(os.path.join(os.path.abspath(__file__), '..', '..', '..', '..', 'keystone'))) import unittest from webtest import TestApp -import httplib2 -import json -from lxml import etree import test_common as utils + ## ## Global Group Tests ## -class global_group_test(unittest.TestCase): +class GlobalGroupTest(unittest.TestCase): def setUp(self): - self.token = utils.get_token('joeuser', 'secrete', 'token') self.globaltenant = utils.get_global_tenant() self.user = utils.get_user() self.userdisabled = utils.get_userdisabled() @@ -27,73 +43,77 @@ class global_group_test(unittest.TestCase): self.exp_auth_token = utils.get_exp_auth_token() self.disabled_token = utils.get_disabled_token() self.global_group = 'test_global_group_add' + utils.create_tenant(self.globaltenant, str(self.auth_token)) + utils.create_user(self.globaltenant, self.user, self.auth_token) + utils.add_user_json(self.globaltenant, self.user, self.auth_token) + self.token = utils.get_token(self.user, 'secrete', self.globaltenant, + 'token') def tearDown(self): - resp, content = utils.delete_global_group(self.global_group, - self.auth_token) - resp, content = utils.delete_tenant(self.globaltenant, self.auth_token) + utils.delete_user(self.globaltenant, self.user, str(self.auth_token)) + utils.delete_global_group(self.global_group, self.auth_token) + utils.delete_tenant(self.globaltenant, self.auth_token) -class create_global_group_test(global_group_test): +class CreateGlobalGroupTest(GlobalGroupTest): def test_global_group_create(self): - respG, contentG = utils.delete_global_group(self.global_group, - str(self.auth_token)) - respG, contentG = utils.create_global_group(self.global_group, + utils.delete_global_group(self.global_group, str(self.auth_token)) + resp_new, content_new = utils.create_global_group(self.global_group, str(self.auth_token)) - if int(respG['status']) == 500: - self.fail('Identity Fault') - elif int(respG['status']) == 503: + if int(resp_new['status']) == 500: + self.fail('IDM fault') + elif int(resp_new['status']) == 503: self.fail('Service Not Available') - if int(respG['status']) not in (200, 201): - self.fail('Failed due to %d' % int(respG['status'])) + if int(resp_new['status']) not in (200, 201): + self.fail('Failed due to %d' % int(resp_new['status'])) def test_global_group_create_xml(self): - respG, contentG = utils.delete_global_group_xml(self.global_group, - str(self.auth_token)) - respG, contentG = utils.create_global_group_xml(self.global_group, + utils.delete_global_group_xml(self.global_group, str(self.auth_token)) + resp_new, content_new = utils.create_global_group_xml(\ + self.global_group, str(self.auth_token)) - if int(respG['status']) == 500: - self.fail('Identity Fault') - elif int(respG['status']) == 503: + if int(resp_new['status']) == 500: + self.fail('IDM fault') + elif int(resp_new['status']) == 503: self.fail('Service Not Available') - if int(respG['status']) not in (200, 201): - self.fail('Failed due to %d' % int(respG['status'])) + if int(resp_new['status']) not in (200, 201): + self.fail('Failed due to %d' % int(resp_new['status'])) def test_global_group_create_again(self): - respG, contentG = utils.create_global_group(self.global_group, - str(self.auth_token)) - respG, contentG = utils.create_global_group(self.global_group, + utils.create_global_group(self.global_group, str(self.auth_token)) + resp_new, content_new = utils.create_global_group(self.global_group, str(self.auth_token)) - if int(respG['status']) == 500: - self.fail('Identity Fault') - elif int(respG['status']) == 503: + if int(resp_new['status']) == 500: + self.fail('IDM fault') + elif int(resp_new['status']) == 503: self.fail('Service Not Available') - self.assertEqual(409, int(respG['status'])) + self.assertEqual(409, int(resp_new['status'])) def test_global_group_create_again_xml(self): - respG, contentG = utils.create_global_group_xml(self.global_group, - str(self.auth_token)) - respG, contentG = utils.create_global_group_xml(self.global_group, - str(self.auth_token)) - contentG = etree.fromstring(contentG) - if int(respG['status']) == 500: - self.fail('Identity Fault') - elif int(respG['status']) == 503: + utils.create_global_group_xml(self.global_group, str(self.auth_token)) + resp_new, content_new = utils.create_global_group_xml(\ + self.global_group, + str(self.auth_token)) + content_new = etree.fromstring(content_new) + if int(resp_new['status']) == 500: + self.fail('IDM fault') + elif int(resp_new['status']) == 503: self.fail('Service Not Available') - self.assertEqual(409, int(respG['status'])) + self.assertEqual(409, int(resp_new['status'])) def test_global_group_create_unauthorized_token(self): - h = httplib2.Http(".cache") - respG, contentG = utils.create_global_group_xml(self.global_group, - str(self.auth_token)) + header = httplib2.Http(".cache") + resp_new, content_new = utils.create_global_group_xml(\ + self.global_group, + str(self.auth_token)) url = '%sgroups' % (utils.URL) body = {"group": {"id": self.global_group, "description": "A description ..."}} - resp, content = h.request(url, "POST", body=json.dumps(body), + resp, content = header.request(url, "POST", body=json.dumps(body), headers={"Content-Type": "application/json", "X-Auth-Token": self.token}) if int(resp['status']) == 500: @@ -103,14 +123,14 @@ class create_global_group_test(global_group_test): self.assertEqual(401, int(resp['status'])) def test_global_group_create_unauthorized_token_xml(self): - h = httplib2.Http(".cache") + header = httplib2.Http(".cache") url = '%sgroups' % (utils.URL) body = '<?xml version="1.0" encoding="UTF-8"?> \ <group xmlns="http://docs.openstack.org/identity/api/v2.0" \ id="%s"> \ <description>A description...</description> \ </group>' % self.global_group - resp, content = h.request(url, "POST", body=body, + resp, content = header.request(url, "POST", body=body, headers={"Content-Type": "application/xml", "X-Auth-Token": self.token, "ACCEPT": "application/xml"}) @@ -121,11 +141,11 @@ class create_global_group_test(global_group_test): self.assertEqual(401, int(resp['status'])) def test_global_group_create_expired_token(self): - h = httplib2.Http(".cache") + header = httplib2.Http(".cache") url = '%sgroups' % (utils.URL) body = {"group": {"id": self.global_group, "description": "A description ..."}} - resp, content = h.request(url, "POST", body=json.dumps(body), + resp, content = header.request(url, "POST", body=json.dumps(body), headers={"Content-Type": "application/json", "X-Auth-Token": \ self.exp_auth_token}) @@ -136,13 +156,13 @@ class create_global_group_test(global_group_test): self.assertEqual(403, int(resp['status'])) def test_global_group_create_expired_token_xml(self): - h = httplib2.Http(".cache") + header = httplib2.Http(".cache") url = '%sgroups' % (utils.URL) body = '<?xml version="1.0" encoding="UTF-8"?> \ <group xmlns="http://docs.openstack.org/identity/api/v2.0" \ id="%s"><description>A description...</description> \ </group>' % self.globaltenant - resp, content = h.request(url, "POST", body=body, + resp, content = header.request(url, "POST", body=body, headers={"Content-Type": "application/xml", "X-Auth-Token": self.exp_auth_token, "ACCEPT": "application/xml"}) @@ -153,11 +173,11 @@ class create_global_group_test(global_group_test): self.assertEqual(403, int(resp['status'])) def test_global_group_create_missing_token(self): - h = httplib2.Http(".cache") + header = httplib2.Http(".cache") url = '%sgroups' % (utils.URL) body = {"group": {"id": self.global_group, "description": "A description ..."}} - resp, content = h.request(url, "POST", body=json.dumps(body), + resp, content = header.request(url, "POST", body=json.dumps(body), headers={"Content-Type": "application/json"}) if int(resp['status']) == 500: self.fail('Identity Fault') @@ -166,13 +186,13 @@ class create_global_group_test(global_group_test): self.assertEqual(401, int(resp['status'])) def test_global_group_create_missing_token_xml(self): - h = httplib2.Http(".cache") + header = httplib2.Http(".cache") url = '%sgroups' % (utils.URL) body = '<?xml version="1.0" encoding="UTF-8"?> \ <group xmlns="http://docs.openstack.org/identity/api/v2.0" \ id="%s"><description>A description...</description> \ </group>' % self.global_group - resp, content = h.request(url, "POST", body=body, + resp, content = header.request(url, "POST", body=body, headers={"Content-Type": "application/xml", "ACCEPT": "application/xml"}) if int(resp['status']) == 500: @@ -182,11 +202,11 @@ class create_global_group_test(global_group_test): self.assertEqual(401, int(resp['status'])) def test_global_group_create_disabled_token(self): - h = httplib2.Http(".cache") + header = httplib2.Http(".cache") url = '%sgroups' % (utils.URL) body = '{"group": { "id": "%s", \ "description": "A description ..." } }' % self.global_group - resp, content = h.request(url, "POST", body=body, + resp, content = header.request(url, "POST", body=body, headers={"Content-Type": "application/json", "X-Auth-Token": \ self.disabled_token}) @@ -197,13 +217,13 @@ class create_global_group_test(global_group_test): self.assertEqual(403, int(resp['status'])) def test_global_group_create_disabled_token_xml(self): - h = httplib2.Http(".cache") + header = httplib2.Http(".cache") url = '%sgroups' % (utils.URL) body = '<?xml version="1.0" encoding="UTF-8"?> \ <group xmlns="http://docs.openstack.org/identity/api/v2.0" \ id="%s"><description>A description...</description> \ </group>' % self.global_group - resp, content = h.request(url, "POST", body=body, + resp, content = header.request(url, "POST", body=body, headers={"Content-Type": "application/xml", "X-Auth-Token": self.disabled_token, "ACCEPT": "application/xml"}) @@ -214,11 +234,11 @@ class create_global_group_test(global_group_test): self.assertEqual(403, int(resp['status'])) def test_global_group_create_invalid_token(self): - h = httplib2.Http(".cache") + header = httplib2.Http(".cache") url = '%sgroups' % (utils.URL) body = '{"group": { "id": "%s", \ "description": "A description ..." } }' % self.globaltenant - resp, content = h.request(url, "POST", body=body, + resp, content = header.request(url, "POST", body=body, headers={"Content-Type": "application/json", "X-Auth-Token": 'nonexsitingtoken'}) if int(resp['status']) == 500: @@ -228,13 +248,13 @@ class create_global_group_test(global_group_test): self.assertEqual(404, int(resp['status'])) def test_global_group_create_invalid_token_xml(self): - h = httplib2.Http(".cache") + header = httplib2.Http(".cache") url = '%sgroups' % (utils.URL) body = '<?xml version="1.0" encoding="UTF-8"?> \ <group xmlns="http://docs.openstack.org/identity/api/v2.0" \ id="%s"><description>A description...</description> \ </group>' % self.global_group - resp, content = h.request(url, "POST", body=body, + resp, content = header.request(url, "POST", body=body, headers={"Content-Type": "application/xml", "X-Auth-Token": 'nonexsitingtoken', "ACCEPT": "application/xml"}) @@ -245,17 +265,16 @@ class create_global_group_test(global_group_test): self.assertEqual(404, int(resp['status'])) -class get_global_groups_test(global_group_test): +class GetGlobalGroupsTest(GlobalGroupTest): def test_get_global_groups(self): - h = httplib2.Http(".cache") - respG, contentG = utils.delete_global_group(self.global_group, - str(self.auth_token)) - respG, contentG = utils.create_global_group(self.global_group, + header = httplib2.Http(".cache") + utils.delete_global_group(self.global_group, str(self.auth_token)) + resp_new, content_new = utils.create_global_group(self.global_group, str(self.auth_token)) url = '%sgroups' % (utils.URL) - resp, content = h.request(url, "GET", body='{}', + resp, content = header.request(url, "GET", body='{}', headers={"Content-Type": "application/json", "X-Auth-Token": self.auth_token}) if int(resp['status']) == 500: @@ -265,11 +284,10 @@ class get_global_groups_test(global_group_test): self.assertEqual(200, int(resp['status'])) def test_get_global_groups_xml(self): - h = httplib2.Http(".cache") - respG, contentG = utils.create_global_group_xml(self.global_group, - str(self.auth_token)) + header = httplib2.Http(".cache") + utils.create_global_group_xml(self.global_group, str(self.auth_token)) url = '%sgroups' % (utils.URL) - resp, content = h.request(url, "GET", body='', + resp, content = header.request(url, "GET", body='', headers={"Content-Type": "application/xml", "X-Auth-Token": self.auth_token, "ACCEPT": "application/xml"}) @@ -280,12 +298,12 @@ class get_global_groups_test(global_group_test): self.assertEqual(200, int(resp['status'])) def test_get_global_groups_unauthorized_token(self): - h = httplib2.Http(".cache") - respG, contentG = utils.create_global_group(self.global_group, + header = httplib2.Http(".cache") + resp_new, content_new = utils.create_global_group(self.global_group, str(self.auth_token)) url = '%sgroups' % (utils.URL) #test for Content-Type = application/json - resp, content = h.request(url, "GET", body='{}', + resp, content = header.request(url, "GET", body='{}', headers={"Content-Type": "application/json", "X-Auth-Token": self.token}) if int(resp['status']) == 500: @@ -295,12 +313,13 @@ class get_global_groups_test(global_group_test): self.assertEqual(401, int(resp['status'])) def test_get_global_groups_unauthorized_token_xml(self): - h = httplib2.Http(".cache") - respG, contentG = utils.create_global_group_xml(self.global_group, - str(self.auth_token)) + header = httplib2.Http(".cache") + resp_new, content_new = utils.create_global_group_xml(\ + self.global_group, + str(self.auth_token)) url = '%sgroups' % (utils.URL) #test for Content-Type = application/json - resp, content = h.request(url, "GET", body='', + resp, content = header.request(url, "GET", body='', headers={"Content-Type": "application/xml", "X-Auth-Token": self.token, "ACCEPT": "application/xml"}) @@ -311,12 +330,12 @@ class get_global_groups_test(global_group_test): self.assertEqual(401, int(resp['status'])) def test_get_global_groups_exp_token(self): - h = httplib2.Http(".cache") - respG, contentG = utils.create_global_group(self.global_group, + header = httplib2.Http(".cache") + resp_new, content_new = utils.create_global_group(self.global_group, str(self.auth_token)) url = '%sgroups' % (utils.URL) #test for Content-Type = application/json - resp, content = h.request(url, "GET", body='{}', + resp, content = header.request(url, "GET", body='{}', headers={"Content-Type": "application/json", "X-Auth-Token": \ self.exp_auth_token}) @@ -327,12 +346,13 @@ class get_global_groups_test(global_group_test): self.assertEqual(403, int(resp['status'])) def test_get_global_groups_exp_token_xml(self): - h = httplib2.Http(".cache") - respG, contentG = utils.create_global_group_xml(self.global_group, - str(self.auth_token)) + header = httplib2.Http(".cache") + resp_new, content_new = utils.create_global_group_xml(\ + self.global_group, + str(self.auth_token)) url = '%sgroups' % (utils.URL) #test for Content-Type = application/json - resp, content = h.request(url, "GET", body='', + resp, content = header.request(url, "GET", body='', headers={"Content-Type": "application/xml", "X-Auth-Token": self.exp_auth_token, "ACCEPT": "application/xml"}) @@ -343,15 +363,15 @@ class get_global_groups_test(global_group_test): self.assertEqual(403, int(resp['status'])) -class get_global_group_test(global_group_test): +class GetGlobalGroupTest(GlobalGroupTest): def test_get_global_group(self): - h = httplib2.Http(".cache") - respG, contentG = utils.create_global_group(self.global_group, + header = httplib2.Http(".cache") + resp_new, content_new = utils.create_global_group(self.global_group, str(self.auth_token)) url = '%sgroups/%s' % (utils.URL, self.global_group) #test for Content-Type = application/json - resp, content = h.request(url, "GET", body='{}', + resp, content = header.request(url, "GET", body='{}', headers={"Content-Type": "application/json", "X-Auth-Token": self.auth_token}) if int(resp['status']) == 500: @@ -361,12 +381,13 @@ class get_global_group_test(global_group_test): self.assertEqual(200, int(resp['status'])) def test_get_global_group_xml(self): - h = httplib2.Http(".cache") - respG, contentG = utils.create_global_group_xml(self.global_group, - str(self.auth_token)) + header = httplib2.Http(".cache") + resp_new, content_new = utils.create_global_group_xml(\ + self.global_group, + str(self.auth_token)) url = '%sgroups/%s' % (utils.URL, self.global_group) #test for Content-Type = application/json - resp, content = h.request(url, "GET", body='', + resp, content = header.request(url, "GET", body='', headers={"Content-Type": "application/xml", "X-Auth-Token": self.auth_token, "ACCEPT": "application/xml"}) @@ -377,12 +398,12 @@ class get_global_group_test(global_group_test): self.assertEqual(200, int(resp['status'])) def test_get_global_group_bad(self): - h = httplib2.Http(".cache") - respG, contentG = utils.create_global_group(self.global_group, + header = httplib2.Http(".cache") + resp_new, content_new = utils.create_global_group(self.global_group, str(self.auth_token)) url = '%sgroups/%s' % (utils.URL, 'global_group_bad') #test for Content-Type = application/json - resp, content = h.request(url, "GET", body='', + resp, content = header.request(url, "GET", body='', headers={"Content-Type": "application/json", "X-Auth-Token": self.auth_token}) if int(resp['status']) == 500: @@ -392,12 +413,13 @@ class get_global_group_test(global_group_test): self.assertEqual(404, int(resp['status'])) def test_get_global_group_bad_xml(self): - h = httplib2.Http(".cache") - respG, contentG = utils.create_global_group_xml(self.global_group, - str(self.auth_token)) + header = httplib2.Http(".cache") + resp_new, content_new = utils.create_global_group_xml(\ + self.global_group, + str(self.auth_token)) url = '%sgroups/%s' % (utils.URL, 'global_group_bad') #test for Content-Type = application/json - resp, content = h.request(url, "GET", body='', + resp, content = header.request(url, "GET", body='', headers={"Content-Type": "application/xml", "X-Auth-Token": self.auth_token, "ACCEPT": "application/xml"}) @@ -408,14 +430,14 @@ class get_global_group_test(global_group_test): self.assertEqual(404, int(resp['status'])) -class update_global_groups_test(global_group_test): +class UpdateGlobalGroupsTest(GlobalGroupTest): def test_update_global_group(self): - h = httplib2.Http(".cache") - respG, contentG = utils.create_global_group(self.global_group, + header = httplib2.Http(".cache") + resp_new, content_new = utils.create_global_group(self.global_group, str(self.auth_token)) url = '%sgroups/%s' % (utils.URL, self.global_group) - resp, content = h.request(url, "PUT", body='{"group":{\ + resp, content = header.request(url, "PUT", body='{"group":{\ "id" : "%s","description" :\ "A New description of the group..."}}' % self.global_group, headers={"Content-Type": "application/json", @@ -431,8 +453,8 @@ class update_global_groups_test(global_group_test): str(body['group']['description'])) def test_update_global_group_xml(self): - h = httplib2.Http(".cache") - respG, contentG = utils.create_global_group(self.global_group, + header = httplib2.Http(".cache") + resp_new, content_new = utils.create_global_group(self.global_group, str(self.auth_token)) url = '%sgroups/%s' % (utils.URL, self.global_group) @@ -441,7 +463,7 @@ class update_global_groups_test(global_group_test): id="%s"><description>A NEW description...</description> \ </group>' % (self.global_group) #test for Content-Type = application/json - resp, content = h.request(url, "PUT", body=data, + resp, content = header.request(url, "PUT", body=data, headers={"Content-Type": "application/xml", "X-Auth-Token": self.auth_token, "ACCEPT": "application/xml"}) @@ -457,15 +479,15 @@ class update_global_groups_test(global_group_test): self.assertEqual('A NEW description...', desc.text) def test_update_global_group_bad(self): - h = httplib2.Http(".cache") - respG, contentG = utils.create_global_group(self.global_group, + header = httplib2.Http(".cache") + resp_new, content_new = utils.create_global_group(self.global_group, str(self.auth_token)) url = '%sgroups/%s' % (utils.URL, self.global_group) data = '{"group": { "description_bad": "A NEW description...", \ "id":"%s" }}'\ % (self.global_group) #test for Content-Type = application/json - resp, content = h.request(url, "PUT", body=data, + resp, content = header.request(url, "PUT", body=data, headers={"Content-Type": "application/json", "X-Auth-Token": self.auth_token}) if int(resp['status']) == 500: @@ -475,16 +497,15 @@ class update_global_groups_test(global_group_test): self.assertEqual(400, int(resp['status'])) def test_update_global_group_bad_xml(self): - h = httplib2.Http(".cache") - respG, contentG = utils.create_global_group_xml(self.global_group, - str(self.auth_token)) + header = httplib2.Http(".cache") + utils.create_global_group_xml(self.global_group, str(self.auth_token)) url = '%sgroups/%s' % (utils.URL, self.global_group) data = '<?xml version="1.0" encoding="UTF-8"?> \ <group xmlns="http://docs.openstack.org/identity/api/v2.0" \ id="%s"><description_bad>A NEW description...</description> \ </group>' % (self.global_group) #test for Content-Type = application/json - resp, content = h.request(url, "PUT", body=data, + resp, content = header.request(url, "PUT", body=data, headers={"Content-Type": "application/xml", "X-Auth-Token": self.auth_token, "ACCEPT": "application/xml"}) @@ -496,22 +517,20 @@ class update_global_groups_test(global_group_test): self.assertEqual(400, int(resp['status'])) def test_update_global_group_not_found(self): - h = httplib2.Http(".cache") - respG, contentG = utils.create_global_group(self.global_group, - str(self.auth_token)) + header = httplib2.Http(".cache") + utils.create_global_group(self.global_group, str(self.auth_token)) url = '%sgroups/NonexistingID' % (utils.URL) data = '{"group": { "description": "A NEW description...", \ "id":"NonexistingID"}}' #test for Content-Type = application/json - resp, content = h.request(url, "GET", body=data, + resp, content = header.request(url, "GET", body=data, headers={"Content-Type": "application/json", "X-Auth-Token": self.auth_token}) self.assertEqual(404, int(resp['status'])) def test_update_global_group_not_found_xml(self): - h = httplib2.Http(".cache") - resp, content = utils.create_tenant_xml(self.globaltenant, - str(self.auth_token)) + header = httplib2.Http(".cache") + utils.create_tenant_xml(self.globaltenant, str(self.auth_token)) url = '%sgroups/NonexistingID' % (utils.URL) data = '<?xml version="1.0" encoding="UTF-8"?> \ <group xmlns="http://docs.openstack.org/identity/api/v2.0" \ @@ -519,7 +538,7 @@ class update_global_groups_test(global_group_test): <description_bad>A NEW description...</description> \ </group>' #test for Content-Type = application/json - resp, content = h.request(url, "GET", body=data, + resp, content = header.request(url, "GET", body=data, headers={"Content-Type": "application/xml", "X-Auth-Token": self.auth_token, "ACCEPT": "application/xml"}) @@ -530,7 +549,7 @@ class update_global_groups_test(global_group_test): self.assertEqual(404, int(resp['status'])) -class delete_global_group_test(global_group_test): +class DeleteGlobalGroupTest(GlobalGroupTest): def test_delete_global_group_not_found(self): resp, content = utils.delete_global_group("test_global_group_1", @@ -543,61 +562,60 @@ class delete_global_group_test(global_group_test): self.assertEqual(404, int(resp['status'])) def test_delete_global_group(self): - resp, content = utils.create_tenant(self.globaltenant, - str(self.auth_token)) - respG, contentG = utils.create_tenant_group('test_global_group_delete', - self.globaltenant, - str(self.auth_token)) - respG, contentG = utils.delete_global_group('test_global_group_delete', - str(self.auth_token)) - resp, content = utils.delete_tenant(self.globaltenant, - str(self.auth_token)) - self.assertEqual(204, int(respG['status'])) + utils.create_tenant(self.globaltenant, str(self.auth_token)) + utils.create_tenant_group('test_global_group_delete', + self.globaltenant, str(self.auth_token)) + resp_new, content_new = utils.delete_global_group(\ + 'test_global_group_delete', + str(self.auth_token)) + resp = utils.delete_tenant(self.globaltenant, str(self.auth_token)) + self.assertEqual(204, int(resp_new['status'])) def test_delete_global_group_xml(self): - resp, content = utils.create_tenant_xml(self.globaltenant, - str(self.auth_token)) - respG, contentG = utils.create_tenant_group_xml(\ - 'test_global_group_delete', - self.globaltenant, - str(self.auth_token)) - respG, contentG = utils.delete_global_group_xml(\ + + utils.create_tenant_xml(self.globaltenant, str(self.auth_token)) + + utils.create_tenant_group_xml('test_global_group_delete', + self.globaltenant, str(self.auth_token)) + + resp_new, content_new = utils.delete_global_group_xml(\ 'test_global_group_delete', str(self.auth_token)) - resp, content = utils.delete_tenant_xml(self.globaltenant, - str(self.auth_token)) - self.assertEqual(204, int(resp['status'])) + + utils.delete_tenant_xml(self.globaltenant, str(self.auth_token)) + + self.assertEqual(204, int(resp_new['status'])) -class add_user_global_group_test(unittest.TestCase): +class AddUserGlobalGroupTest(unittest.TestCase): def setUp(self): - self.token = utils.get_token('joeuser', 'secrete', 'token') self.tenant = utils.get_global_tenant() + self.auth_token = utils.get_auth_token() self.user = utils.get_user() self.userdisabled = utils.get_userdisabled() - self.auth_token = utils.get_auth_token() self.exp_auth_token = utils.get_exp_auth_token() self.disabled_token = utils.get_disabled_token() self.global_group = 'test_global_group' + utils.create_tenant(self.tenant, str(self.auth_token)) + utils.create_user(self.tenant, self.user, self.auth_token) + utils.add_user_json(self.tenant, self.user, self.auth_token) + self.token = utils.get_token(self.user, 'secrete', self.tenant, + 'token') def tearDown(self): - respG, contentG = utils.delete_user_global_group(self.global_group, - self.user, - str(self.auth_token)) + utils.delete_user_global_group(self.global_group, self.user, + str(self.auth_token)) - respG, contentG = utils.delete_user(self.tenant, self.user, - str(self.auth_token)) - resp, content = utils.delete_global_group(self.global_group, - self.auth_token) + utils.delete_user(self.tenant, self.user, str(self.auth_token)) + utils.delete_user(self.tenant, self.user, self.auth_token) + utils.delete_global_group(self.global_group, self.auth_token) def test_add_user_global_group(self): - h = httplib2.Http(".cache") resp, content = utils.create_global_group(self.global_group, str(self.auth_token)) - respG, contentG = utils.create_user(self.tenant, self.user, - str(self.auth_token)) - respG, contentG = utils.add_user_global_group(self.global_group, + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp_new, content_new = utils.add_user_global_group(self.global_group, self.user, str(self.auth_token)) @@ -605,16 +623,15 @@ class add_user_global_group_test(unittest.TestCase): self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - if int(respG['status']) not in (200, 201): - self.fail('Failed due to %d' % int(respG['status'])) + if int(resp_new['status']) not in (200, 201): + self.fail('Failed due to %d' % int(resp_new['status'])) def test_add_user_global_group_xml(self): - h = httplib2.Http(".cache") resp, content = utils.create_global_group(self.global_group, str(self.auth_token)) - respG, contentG = utils.create_user(self.tenant, self.user, - str(self.auth_token)) - respG, contentG = utils.add_user_global_group_xml(self.global_group, + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp_new, content_new = utils.add_user_global_group_xml(\ + self.global_group, self.user, str(self.auth_token)) @@ -622,19 +639,16 @@ class add_user_global_group_test(unittest.TestCase): self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - if int(respG['status']) not in (200, 201): - self.fail('Failed due to %d' % int(respG['status'])) + if int(resp_new['status']) not in (200, 201): + self.fail('Failed due to %d' % int(resp_new['status'])) def test_add_user_global_group_conflict(self): - h = httplib2.Http(".cache") resp, content = utils.create_global_group(self.global_group, str(self.auth_token)) - respG, contentG = utils.create_user(self.tenant, self.user, - str(self.auth_token)) - respG, contentG = utils.add_user_global_group(self.global_group, - self.user, - str(self.auth_token)) - respG, contentG = utils.add_user_global_group(self.global_group, + utils.create_user(self.tenant, self.user, str(self.auth_token)) + utils.add_user_global_group(self.global_group, self.user, + str(self.auth_token)) + resp_new, content_new = utils.add_user_global_group(self.global_group, self.user, str(self.auth_token)) @@ -642,18 +656,16 @@ class add_user_global_group_test(unittest.TestCase): self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - self.assertEqual(409, int(respG['status'])) + self.assertEqual(409, int(resp_new['status'])) def test_add_user_global_group_conflict_xml(self): - h = httplib2.Http(".cache") resp, content = utils.create_global_group(self.global_group, str(self.auth_token)) - respG, contentG = utils.create_user(self.tenant, self.user, - str(self.auth_token)) - respG, contentG = utils.add_user_global_group_xml(self.global_group, - self.user, - str(self.auth_token)) - respG, contentG = utils.add_user_global_group_xml(self.global_group, + utils.create_user(self.tenant, self.user, str(self.auth_token)) + utils.add_user_global_group_xml(self.global_group, self.user, + str(self.auth_token)) + resp_new, content_new = utils.add_user_global_group_xml(\ + self.global_group, self.user, str(self.auth_token)) @@ -661,31 +673,29 @@ class add_user_global_group_test(unittest.TestCase): self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - self.assertEqual(409, int(respG['status'])) + self.assertEqual(409, int(resp_new['status'])) def test_add_user_global_group_unauthorized(self): - h = httplib2.Http(".cache") resp, content = utils.create_global_group(self.global_group, str(self.auth_token)) - respG, contentG = utils.create_user(self.tenant, self.user, - str(self.auth_token)) - respG, contentG = utils.add_user_global_group(self.global_group, + + utils.create_user(self.tenant, self.user, str(self.auth_token)) + + resp_new, content_new = utils.add_user_global_group(self.global_group, self.user, str(self.token)) - if int(resp['status']) == 500: self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - self.assertEqual(401, int(respG['status'])) + self.assertEqual(401, int(resp_new['status'])) def test_add_user_global_group_unauthorized_xml(self): - h = httplib2.Http(".cache") resp, content = utils.create_global_group(self.global_group, str(self.auth_token)) - respG, contentG = utils.create_user(self.tenant, self.user, - str(self.auth_token)) - respG, contentG = utils.add_user_global_group_xml(self.global_group, + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp_new, content_new = utils.add_user_global_group_xml(\ + self.global_group, self.user, str(self.token)) @@ -693,15 +703,14 @@ class add_user_global_group_test(unittest.TestCase): self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - self.assertEqual(401, int(respG['status'])) + self.assertEqual(401, int(resp_new['status'])) def test_add_user_global_group_forbidden(self): - h = httplib2.Http(".cache") resp, content = utils.create_global_group(self.global_group, str(self.auth_token)) - respG, contentG = utils.create_user(self.tenant, self.user, - str(self.auth_token)) - respG, contentG = utils.add_user_global_group(self.global_group, + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp_new, content_new = utils.add_user_global_group(\ + self.global_group, self.user, str(self.disabled_token)) @@ -709,28 +718,26 @@ class add_user_global_group_test(unittest.TestCase): self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - self.assertEqual(403, int(respG['status'])) + self.assertEqual(403, int(resp_new['status'])) def test_add_user_global_group_forbidden_xml(self): - h = httplib2.Http(".cache") resp, content = utils.create_global_group(self.global_group, str(self.auth_token)) - respG, contentG = utils.create_user(self.tenant, self.user, - str(self.auth_token)) - respG, contentG = utils.add_user_global_group_xml(self.global_group, + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp_new, content_new = utils.add_user_global_group_xml(\ + self.global_group, self.user, str(self.disabled_token)) if int(resp['status']) == 500: self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - self.assertEqual(403, int(respG['status'])) + self.assertEqual(403, int(resp_new['status'])) -class get_users_tenant_group_test(unittest.TestCase): +class GetUsersTenantGroupTest(unittest.TestCase): def setUp(self): - self.token = utils.get_token('joeuser', 'secrete', 'token') self.tenant = utils.get_global_tenant() self.user = utils.get_user() self.userdisabled = utils.get_userdisabled() @@ -738,164 +745,148 @@ class get_users_tenant_group_test(unittest.TestCase): self.exp_auth_token = utils.get_exp_auth_token() self.disabled_token = utils.get_disabled_token() self.global_group = 'test_global_group' + utils.create_tenant(self.tenant, str(self.auth_token)) + utils.create_user(self.tenant, self.user, self.auth_token) + utils.add_user_json(self.tenant, self.user, self.auth_token) + self.token = utils.get_token(self.user, 'secrete', self.tenant, + 'token') def tearDown(self): - respG, contentG = utils.delete_user_global_group(self.global_group, - self.user, - str(self.auth_token)) - - respG, contentG = utils.delete_user(self.tenant, self.user, - str(self.auth_token)) - resp, content = utils.delete_global_group(self.global_group, - self.auth_token) + utils.delete_user_global_group(self.global_group, self.user, + str(self.auth_token)) + utils.delete_user(self.tenant, self.user, str(self.auth_token)) + utils.delete_global_group(self.global_group, self.auth_token) def test_get_users_global_group(self): - h = httplib2.Http(".cache") resp, content = utils.create_global_group(self.global_group, str(self.auth_token)) - respG, contentG = utils.create_user(self.tenant, self.user, - str(self.auth_token)) - respG, contentG = utils.add_user_global_group(self.global_group, - self.user, - str(self.auth_token)) - respG, contentG = utils.get_user_global_group(self.global_group, + utils.create_user(self.tenant, self.user, str(self.auth_token)) + utils.add_user_global_group(self.global_group, self.user, + str(self.auth_token)) + resp_new, content_new = utils.get_user_global_group(\ + self.global_group, str(self.auth_token)) if int(resp['status']) == 500: self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - self.assertEqual(200, int(respG['status'])) + self.assertEqual(200, int(resp_new['status'])) def test_get_users_global_group_xml(self): - h = httplib2.Http(".cache") resp, content = utils.create_global_group(self.global_group, str(self.auth_token)) - respG, contentG = utils.create_user(self.tenant, self.user, - str(self.auth_token)) - respG, contentG = utils.add_user_global_group_xml(self.global_group, - self.user, - str(self.auth_token)) - respG, contentG = utils.get_user_global_group_xml(self.global_group, + utils.create_user(self.tenant, self.user, str(self.auth_token)) + utils.add_user_global_group_xml(self.global_group, self.user, + str(self.auth_token)) + resp_new, content_new = utils.get_user_global_group_xml(\ + self.global_group, str(self.auth_token)) if int(resp['status']) == 500: self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - self.assertEqual(200, int(respG['status'])) + self.assertEqual(200, int(resp_new['status'])) def test_get_users_global_group_unauthorized(self): - h = httplib2.Http(".cache") resp, content = utils.create_global_group(self.global_group, str(self.auth_token)) - respG, contentG = utils.create_user(self.tenant, self.user, - str(self.auth_token)) - respG, contentG = utils.add_user_global_group(self.global_group, - self.user, - str(self.auth_token)) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + utils.add_user_global_group(self.global_group, self.user, + str(self.auth_token)) - respG, contentG = utils.get_user_global_group(self.global_group, + resp_new, content_new = utils.get_user_global_group(\ + self.global_group, str(self.token)) if int(resp['status']) == 500: self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - self.assertEqual(401, int(respG['status'])) + self.assertEqual(401, int(resp_new['status'])) def test_get_users_global_group_unauthorized_xml(self): - h = httplib2.Http(".cache") resp, content = utils.create_global_group(self.global_group, str(self.auth_token)) - respG, contentG = utils.create_user(self.tenant, self.user, - str(self.auth_token)) - respG, contentG = utils.add_user_global_group(self.global_group, - self.user, - str(self.auth_token)) - respG, contentG = utils.get_user_global_group_xml(self.global_group, + utils.create_user(self.tenant, self.user, str(self.auth_token)) + utils.add_user_global_group(self.global_group, self.user, + str(self.auth_token)) + resp_new, content_new = utils.get_user_global_group_xml(\ + self.global_group, str(self.token)) if int(resp['status']) == 500: self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - self.assertEqual(401, int(respG['status'])) + self.assertEqual(401, int(resp_new['status'])) def test_get_users_global_group_forbidden(self): - h = httplib2.Http(".cache") resp, content = utils.create_global_group(self.global_group, str(self.auth_token)) - respG, contentG = utils.create_user(self.tenant, self.user, - str(self.auth_token)) - respG, contentG = utils.add_user_global_group(self.global_group, - self.user, - str(self.auth_token)) - respG, contentG = utils.get_user_global_group(self.global_group, + utils.create_user(self.tenant, self.user, str(self.auth_token)) + utils.add_user_global_group(self.global_group, self.user, + str(self.auth_token)) + resp_new, content_new = utils.get_user_global_group(\ + self.global_group, str(self.disabled_token)) if int(resp['status']) == 500: self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - self.assertEqual(403, int(respG['status'])) + self.assertEqual(403, int(resp_new['status'])) def test_get_users_global_group_forbidden_xml(self): - h = httplib2.Http(".cache") resp, content = utils.create_global_group(self.global_group, str(self.auth_token)) - respG, contentG = utils.create_user(self.tenant, self.user, - str(self.auth_token)) - respG, contentG = utils.add_user_global_group(self.global_group, - self.user, - str(self.auth_token)) - respG, contentG = utils.get_user_global_group_xml(self.global_group, + utils.create_user(self.tenant, self.user, str(self.auth_token)) + utils.add_user_global_group(self.global_group, self.user, + str(self.auth_token)) + resp_new, content_new = utils.get_user_global_group_xml(\ + self.global_group, str(self.disabled_token)) if int(resp['status']) == 500: self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - self.assertEqual(403, int(respG['status'])) + self.assertEqual(403, int(resp_new['status'])) def test_get_users_global_group_expired(self): - h = httplib2.Http(".cache") resp, content = utils.create_global_group(self.global_group, str(self.auth_token)) - respG, contentG = utils.create_user(self.tenant, self.user, - str(self.auth_token)) - respG, contentG = utils.add_user_global_group(self.global_group, - self.user, - str(self.auth_token)) - respG, contentG = utils.get_user_global_group(self.global_group, + utils.create_user(self.tenant, self.user, str(self.auth_token)) + utils.add_user_global_group(self.global_group, self.user, + str(self.auth_token)) + resp_new, content_new = utils.get_user_global_group(\ + self.global_group, str(self.exp_auth_token)) if int(resp['status']) == 500: self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - self.assertEqual(403, int(respG['status'])) + self.assertEqual(403, int(resp_new['status'])) def test_get_users_global_group_expired_xml(self): - h = httplib2.Http(".cache") resp, content = utils.create_global_group(self.global_group, str(self.auth_token)) - respG, contentG = utils.create_user(self.tenant, self.user, - str(self.auth_token)) - respG, contentG = utils.add_user_global_group(self.global_group, - self.user, - str(self.auth_token)) - respG, contentG = utils.get_user_global_group_xml(self.global_group, + utils.create_user(self.tenant, self.user, str(self.auth_token)) + utils.add_user_global_group(self.global_group, self.user, + str(self.auth_token)) + resp_new, content_new = utils.get_user_global_group_xml(\ + self.global_group, str(self.exp_auth_token)) if int(resp['status']) == 500: self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - self.assertEqual(403, int(respG['status'])) + self.assertEqual(403, int(resp_new['status'])) -class delete_users_global_group_test(unittest.TestCase): +class DeleteUsersGlobalGroupTest(unittest.TestCase): def setUp(self): - self.token = utils.get_token('joeuser', 'secrete', 'token') self.tenant = utils.get_global_tenant() self.user = utils.get_user() self.userdisabled = utils.get_userdisabled() @@ -903,28 +894,28 @@ class delete_users_global_group_test(unittest.TestCase): self.exp_auth_token = utils.get_exp_auth_token() self.disabled_token = utils.get_disabled_token() self.global_group = 'test_global_group' + utils.create_tenant(self.tenant, str(self.auth_token)) + utils.create_user(self.tenant, self.user, self.auth_token) + utils.add_user_json(self.tenant, self.user, self.auth_token) + self.token = utils.get_token(self.user, 'secrete', self.tenant, + 'token') def tearDown(self): - respG, contentG = utils.delete_user_global_group(self.global_group, - self.user, - str(self.auth_token)) + utils.delete_user_global_group(self.global_group, self.user, + str(self.auth_token)) - respG, contentG = utils.delete_user(self.tenant, self.user, - str(self.auth_token)) - resp, content = utils.delete_global_group(self.global_group, - self.auth_token) + utils.delete_user(self.tenant, self.user, str(self.auth_token)) + utils.delete_global_group(self.global_group, self.auth_token) def test_delete_user_global_group(self): - h = httplib2.Http(".cache") resp, content = utils.create_global_group(self.global_group, str(self.auth_token)) - respG, contentG = utils.create_user(self.tenant, self.user, - str(self.auth_token)) - respG, contentG = utils.add_user_global_group(self.global_group, - self.user, - str(self.auth_token)) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + utils.add_user_global_group(self.global_group, self.user, + str(self.auth_token)) - respG, contentG = utils.delete_user_global_group(self.global_group, + resp_new, content_new = utils.delete_user_global_group(\ + self.global_group, self.user, str(self.auth_token)) @@ -932,68 +923,58 @@ class delete_users_global_group_test(unittest.TestCase): self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - self.assertEqual(204, int(respG['status'])) + self.assertEqual(204, int(resp_new['status'])) def test_delete_user_global_group_xml(self): - h = httplib2.Http(".cache") resp, content = utils.create_global_group(self.global_group, str(self.auth_token)) - respG, contentG = utils.create_user(self.tenant, self.user, - str(self.auth_token)) - respG, contentG = utils.add_user_global_group(self.global_group, - self.user, - str(self.auth_token)) - respG, contentG = utils.delete_user_global_group_xml(self.global_group, + utils.create_user(self.tenant, self.user, str(self.auth_token)) + utils.add_user_global_group(self.global_group, self.user, + str(self.auth_token)) + resp_new, content_new = utils.delete_user_global_group_xml(\ + self.global_group, self.user, str(self.auth_token)) if int(resp['status']) == 500: self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - self.assertEqual(204, int(respG['status'])) + self.assertEqual(204, int(resp_new['status'])) def test_delete_user_global_group_notfound(self): - h = httplib2.Http(".cache") resp, content = utils.create_global_group(self.global_group, str(self.auth_token)) - respG, contentG = utils.create_user(self.tenant, self.user, - str(self.auth_token)) - respG, contentG = utils.add_user_global_group(self.global_group, + utils.create_user(self.tenant, self.user, str(self.auth_token)) + utils.add_user_global_group(self.global_group, self.user, + str(self.disabled_token)) + utils.delete_user_global_group(self.global_group, self.user, + str(self.auth_token)) + resp_new, content_new = utils.delete_user_global_group( + self.global_group, self.user, - str(self.disabled_token)) - respG, contentG = utils.delete_user_global_group(self.global_group, - self.user, - str(self.auth_token)) - respG, contentG = utils.delete_user_global_group(self.global_group, - self.user, - str(self.auth_token)) + str(self.auth_token)) if int(resp['status']) == 500: self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - self.assertEqual(404, int(respG['status'])) + self.assertEqual(404, int(resp_new['status'])) def test_delete_user_global_group_notfound_xml(self): - h = httplib2.Http(".cache") resp, content = utils.create_global_group(self.global_group, str(self.auth_token)) - respG, contentG = utils.create_user(self.tenant, self.user, - str(self.auth_token)) - respG, contentG = utils.add_user_global_group(self.global_group, - self.user, - str(self.disabled_token)) - respG, contentG = utils.delete_user_global_group(self.global_group, - self.user, - str(self.auth_token)) - respG, contentG = utils.delete_user_global_group_xml(self.global_group, - self.user, - str(self.auth_token)) - if int(resp['status']) == 500: self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - self.assertEqual(404, int(respG['status'])) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + utils.add_user_global_group(self.global_group, self.user, + str(self.disabled_token)) + utils.delete_user_global_group(self.global_group, self.user, + str(self.auth_token)) + resp_new, content_new = utils.delete_user_global_group_xml(\ + self.global_group, self.user, + str(self.auth_token)) + self.assertEqual(404, int(resp_new['status'])) if __name__ == '__main__': unittest.main() diff --git a/test/unit/test_keystone.py b/test/unit/test_keystone.py index 9a6fe4df..3b17d9b2 100644 --- a/test/unit/test_keystone.py +++ b/test/unit/test_keystone.py @@ -1,12 +1,14 @@ import logging +from lxml import etree import os import unittest -from lxml import etree + MODULE_EXTENSIONS = set('.py'.split()) TEST_FILES = ['test_authentication.py', 'test_keystone.py', 'test_tenants.py', - 'test_common.py', 'test_users.py','test_tenant_groups.py', + 'test_common.py', 'test_users.py', 'test_tenant_groups.py', 'test_token.py', 'test_version.py', 'test_groups.py'] + def unit_test_extractor(tup, path, filenames): """Pull ``unittest.TestSuite``s from modules in path if the path represents a valid Python package. Accumulate diff --git a/test/unit/test_server.py b/test/unit/test_server.py index a6b98892..294b1e54 100644 --- a/test/unit/test_server.py +++ b/test/unit/test_server.py @@ -65,7 +65,7 @@ class TestServer(unittest.TestCase): self.assertTrue(server.get_auth_token(self.request),"Test Token") def test_get_normalized_request_content_exception(self): - self.assertRaises(fault.IDMFault,server.get_normalized_request_content,None,self.request) + self.assertRaises(fault.IdentityFault,server.get_normalized_request_content,None,self.request) def test_get_normalized_request_content_xml(self): self.request.environ["CONTENT_TYPE"]="application/xml" diff --git a/test/unit/test_tenant_groups.py b/test/unit/test_tenant_groups.py index d6b7ed20..54d9a585 100644 --- a/test/unit/test_tenant_groups.py +++ b/test/unit/test_tenant_groups.py @@ -1,20 +1,35 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# Copyright (c) 2010-2011 OpenStack, LLC. +# +# 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. + + +import httplib2 +import json +from lxml import etree import os import sys -# Need to access identity module sys.path.append(os.path.abspath(os.path.join(os.path.abspath(__file__), '..', '..', '..', '..', 'keystone'))) import unittest -import httplib2 -import json -from lxml import etree import test_common as util -class tenant_group_test(unittest.TestCase): +class TenantGroupTest(unittest.TestCase): def setUp(self): - self.token = util.get_token('joeuser', 'secrete', 'token') self.tenant = util.get_tenant() self.user = util.get_user() self.userdisabled = util.get_userdisabled() @@ -22,24 +37,31 @@ class tenant_group_test(unittest.TestCase): self.exp_auth_token = util.get_exp_auth_token() self.disabled_token = util.get_disabled_token() self.tenant_group = 'test_tenant_group_add' + util.create_tenant(self.tenant, str(self.auth_token)) + util.create_user(self.tenant, self.user, self.auth_token) + util.add_user_json(self.tenant, self.user, self.auth_token) + self.token = util.get_token(self.user, 'secrete', self.tenant, + 'token') def tearDown(self): - resp, content = util.delete_tenant_group(self.tenant_group, + util.delete_tenant_group(self.tenant_group, self.tenant, self.auth_token) - resp, content = util.delete_tenant(self.tenant, self.auth_token) + util.delete_user(self.tenant, self.user, + str(self.auth_token)) + util.delete_tenant(self.tenant, self.auth_token) -class create_tenant_group_test(tenant_group_test): +class CreateTenantGroupTest(TenantGroupTest): def test_tenant_group_create(self): - resp, content = util.delete_tenant(self.tenant, str(self.auth_token)) + resp = util.delete_tenant(self.tenant, str(self.auth_token)) if int(resp['status']) == 500: self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - resp, content = util.create_tenant(self.tenant, str(self.auth_token)) + util.create_tenant(self.tenant, str(self.auth_token)) resp, content = util.delete_tenant_group(self.tenant_group, self.tenant, str(self.auth_token)) @@ -51,7 +73,7 @@ class create_tenant_group_test(tenant_group_test): self.fail('Failed due to %d' % int(resp['status'])) def test_tenant_group_create_xml(self): - resp, content = util.delete_tenant_xml(self.tenant, + resp = util.delete_tenant_xml(self.tenant, str(self.auth_token)) resp, content = util.create_tenant_xml(self.tenant, str(self.auth_token)) @@ -312,7 +334,7 @@ class create_tenant_group_test(tenant_group_test): self.assertEqual(404, int(resp['status'])) -class get_tenant_groups_test(tenant_group_test): +class GetTenantGroupsTest(TenantGroupTest): def test_get_tenant_groups(self): header = httplib2.Http(".cache") @@ -423,7 +445,7 @@ class get_tenant_groups_test(tenant_group_test): self.assertEqual(403, int(resp['status'])) -class get_tenant_group_test(tenant_group_test): +class GetTenantGroupTest(TenantGroupTest): def test_get_tenant_group(self): header = httplib2.Http(".cache") @@ -539,7 +561,7 @@ class get_tenant_group_test(tenant_group_test): self.assertEqual(404, int(resp['status'])) -class update_tenant_group_test(tenant_group_test): +class UpdateTenantGroupTest(TenantGroupTest): def test_update_tenant_group(self): header = httplib2.Http(".cache") @@ -572,7 +594,7 @@ class update_tenant_group_test(tenant_group_test): def test_update_tenant_group_xml(self): header = httplib2.Http(".cache") - resp, content = util.delete_tenant(self.tenant, str(self.auth_token)) + util.delete_tenant(self.tenant, str(self.auth_token)) resp, content = util.create_tenant(self.tenant, str(self.auth_token)) @@ -705,7 +727,7 @@ class update_tenant_group_test(tenant_group_test): self.assertEqual(404, int(resp['status'])) -class delete_tenant_group_test(tenant_group_test): +class DeleteTenantGroupTest(TenantGroupTest): def test_delete_tenant_group_not_found(self): resp, content = util.delete_tenant_group("test_tenant_delete111", @@ -728,7 +750,7 @@ class delete_tenant_group_test(tenant_group_test): resp, content = util.delete_tenant_group('test_tenant_group_delete', "test_tenant_delete", str(self.auth_token)) - resp, content = util.delete_tenant("test_tenant_delete", + resp = util.delete_tenant("test_tenant_delete", str(self.auth_token)) self.assertEqual(204, int(resp['status'])) @@ -741,15 +763,14 @@ class delete_tenant_group_test(tenant_group_test): resp, content = util.delete_tenant_group('test_tenant_group_delete', "test_tenant_delete", str(self.auth_token)) - resp, content = util.delete_tenant_xml("test_tenant_delete", + resp = util.delete_tenant_xml("test_tenant_delete", str(self.auth_token)) self.assertEqual(204, int(resp['status'])) -class add_user_tenant_group_test(tenant_group_test): +class AddUserTenantGroupTest(TenantGroupTest): def setUp(self): - self.token = util.get_token('joeuser', 'secrete', 'token') self.tenant = 'test_tenant' self.user = util.get_user() self.userdisabled = util.get_userdisabled() @@ -757,6 +778,11 @@ class add_user_tenant_group_test(tenant_group_test): self.exp_auth_token = util.get_exp_auth_token() self.disabled_token = util.get_disabled_token() self.tenant_group = 'test_tenant_group_add' + util.create_tenant(self.tenant, str(self.auth_token)) + util.create_user(self.tenant, self.user, self.auth_token) + util.add_user_json(self.tenant, self.user, self.auth_token) + self.token = util.get_token(self.user, 'secrete', self.tenant, + 'token') def tearDown(self): resp, content = util.delete_user_tenant_group(self.tenant, @@ -764,12 +790,12 @@ class add_user_tenant_group_test(tenant_group_test): self.user, str(self.auth_token)) - resp, content = util.delete_user(self.tenant, self.user, + resp = util.delete_user(self.tenant, self.user, str(self.auth_token)) resp, content = util.delete_tenant_group(self.tenant_group, self.tenant, self.auth_token) - resp, content = util.delete_tenant(self.tenant, self.auth_token) + resp = util.delete_tenant(self.tenant, self.auth_token) def test_add_user_tenant_group(self): resp, content = util.create_tenant(self.tenant, str(self.auth_token)) @@ -928,10 +954,9 @@ class add_user_tenant_group_test(tenant_group_test): self.assertEqual(403, int(resp['status'])) -class get_users_tenant_group_test(tenant_group_test): +class GetUsersTenantGroupTest(TenantGroupTest): def setUp(self): - self.token = util.get_token('joeuser', 'secrete', 'token') self.tenant = 'test_tenant' self.user = util.get_user() self.userdisabled = util.get_userdisabled() @@ -939,6 +964,11 @@ class get_users_tenant_group_test(tenant_group_test): self.exp_auth_token = util.get_exp_auth_token() self.disabled_token = util.get_disabled_token() self.tenant_group = 'test_tenant_group_add' + util.create_tenant(self.tenant, str(self.auth_token)) + util.create_user(self.tenant, self.user, self.auth_token) + util.add_user_json(self.tenant, self.user, self.auth_token) + self.token = util.get_token(self.user, 'secrete', self.tenant, + 'token') def tearDown(self): resp, content = util.delete_user_tenant_group(self.tenant, @@ -946,12 +976,12 @@ class get_users_tenant_group_test(tenant_group_test): self.user, str(self.auth_token)) - resp, content = util.delete_user(self.tenant, self.user, + resp = util.delete_user(self.tenant, self.user, str(self.auth_token)) resp, content = util.delete_tenant_group(self.tenant_group, self.tenant, self.auth_token) - resp, content = util.delete_tenant(self.tenant, self.auth_token) + util.delete_tenant(self.tenant, self.auth_token) def test_get_users_tenant_group(self): resp, content = util.create_tenant(self.tenant, str(self.auth_token)) @@ -963,9 +993,9 @@ class get_users_tenant_group_test(tenant_group_test): self.tenant, str(self.auth_token)) - resp, content = util.create_user(self.tenant, self.user, + util.create_user(self.tenant, self.user, str(self.auth_token)) - resp, content = util.add_user_tenant_group(self.tenant, + util.add_user_tenant_group(self.tenant, self.tenant_group, self.user, str(self.auth_token)) @@ -981,12 +1011,12 @@ class get_users_tenant_group_test(tenant_group_test): self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - resp, content = util.create_tenant_group(self.tenant_group, + util.create_tenant_group(self.tenant_group, self.tenant, str(self.auth_token)) - resp, content = util.create_user(self.tenant, self.user, + util.create_user(self.tenant, self.user, str(self.auth_token)) - resp, content = util.add_user_tenant_group_xml(self.tenant, + util.add_user_tenant_group_xml(self.tenant, self.tenant_group, self.user, str(self.auth_token)) @@ -1002,13 +1032,13 @@ class get_users_tenant_group_test(tenant_group_test): self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - resp, content = util.create_tenant_group(self.tenant_group, + util.create_tenant_group(self.tenant_group, self.tenant, str(self.auth_token)) - resp, content = util.create_user(self.tenant, self.user, + util.create_user(self.tenant, self.user, str(self.auth_token)) - resp, content = util.add_user_tenant_group(self.tenant, + util.add_user_tenant_group(self.tenant, self.tenant_group, self.user, self.auth_token) @@ -1025,13 +1055,13 @@ class get_users_tenant_group_test(tenant_group_test): elif int(resp['status']) == 503: self.fail('Service Not Available') - resp, content = util.create_tenant_group(self.tenant_group, + util.create_tenant_group(self.tenant_group, self.tenant, str(self.auth_token)) - resp, content = util.create_user(self.tenant, self.user, + util.create_user(self.tenant, self.user, str(self.auth_token)) - resp, content = util.add_user_tenant_group(self.tenant, + util.add_user_tenant_group(self.tenant, self.tenant_group, self.user, self.auth_token) resp, content = util.get_user_tenant_group_xml(self.tenant, @@ -1045,13 +1075,13 @@ class get_users_tenant_group_test(tenant_group_test): self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - resp, content = util.create_tenant_group(self.tenant_group, + util.create_tenant_group(self.tenant_group, self.tenant, str(self.auth_token)) - resp, content = util.create_user(self.tenant, self.user, + util.create_user(self.tenant, self.user, str(self.auth_token)) - resp, content = util.add_user_tenant_group(self.tenant, + util.add_user_tenant_group(self.tenant, self.tenant_group, self.user, self.auth_token) resp, content = util.get_user_tenant_group(self.tenant, @@ -1066,13 +1096,13 @@ class get_users_tenant_group_test(tenant_group_test): self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - resp, content = util.create_tenant_group(self.tenant_group, + util.create_tenant_group(self.tenant_group, self.tenant, str(self.auth_token)) - resp, content = util.create_user(self.tenant, self.user, + util.create_user(self.tenant, self.user, str(self.auth_token)) - resp, content = util.add_user_tenant_group(self.tenant, + util.add_user_tenant_group(self.tenant, self.tenant_group, self.user, self.auth_token) resp, content = util.get_user_tenant_group_xml(self.tenant, @@ -1087,13 +1117,13 @@ class get_users_tenant_group_test(tenant_group_test): self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - resp, content = util.create_tenant_group(self.tenant_group, + util.create_tenant_group(self.tenant_group, self.tenant, str(self.auth_token)) - resp, content = util.create_user(self.tenant, self.user, + util.create_user(self.tenant, self.user, str(self.auth_token)) - resp, content = util.add_user_tenant_group(self.tenant, + util.add_user_tenant_group(self.tenant, self.tenant_group, self.user, self.auth_token) resp, content = util.get_user_tenant_group(self.tenant, @@ -1107,13 +1137,13 @@ class get_users_tenant_group_test(tenant_group_test): self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - resp, content = util.create_tenant_group(self.tenant_group, + util.create_tenant_group(self.tenant_group, self.tenant, str(self.auth_token)) - resp, content = util.create_user(self.tenant, self.user, + util.create_user(self.tenant, self.user, str(self.auth_token)) - resp, content = util.add_user_tenant_group(self.tenant, + util.add_user_tenant_group(self.tenant, self.tenant_group, self.user, self.auth_token) resp, content = util.get_user_tenant_group_xml(self.tenant, @@ -1123,7 +1153,7 @@ class get_users_tenant_group_test(tenant_group_test): self.assertEqual(403, int(resp['status'])) -class delete_users_tenant_group_test(tenant_group_test): +class DeleteUsersTenantGroupTest(TenantGroupTest): def test_delete_user_tenant_group(self): resp, content = util.create_tenant(self.tenant, str(self.auth_token)) @@ -1131,12 +1161,12 @@ class delete_users_tenant_group_test(tenant_group_test): self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - resp, content = util.create_tenant_group(self.tenant_group, + util.create_tenant_group(self.tenant_group, self.tenant, str(self.auth_token)) - resp, content = util.create_user(self.tenant, self.user, + util.create_user(self.tenant, self.user, str(self.auth_token)) - resp, content = util.add_user_tenant_group(self.tenant, + util.add_user_tenant_group(self.tenant, self.tenant_group, self.user, str(self.auth_token)) @@ -1153,12 +1183,12 @@ class delete_users_tenant_group_test(tenant_group_test): self.fail('Identity Fault') elif int(resp['status']) == 503: self.fail('Service Not Available') - resp, content = util.create_tenant_group(self.tenant_group, + util.create_tenant_group(self.tenant_group, self.tenant, str(self.auth_token)) - resp, content = util.create_user(self.tenant, self.user, + util.create_user(self.tenant, self.user, str(self.auth_token)) - resp, content = util.add_user_tenant_group_xml(self.tenant, + util.add_user_tenant_group_xml(self.tenant, self.tenant_group, self.user, str(self.auth_token)) diff --git a/test/unit/test_tenants.py b/test/unit/test_tenants.py index 1e5254ef..ec2a2569 100644 --- a/test/unit/test_tenants.py +++ b/test/unit/test_tenants.py @@ -1,34 +1,57 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# Copyright (c) 2010-2011 OpenStack, LLC. +# +# 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. + + +import httplib2 +import json +from lxml import etree import os import sys -# Need to access identity module sys.path.append(os.path.abspath(os.path.join(os.path.abspath(__file__), '..', '..', '..', '..', 'keystone'))) import unittest -import httplib2 -import json -from lxml import etree + import test_common as utils -class tenant_test(unittest.TestCase): +class TenantTest(unittest.TestCase): def setUp(self): - self.token = utils.get_token('joeuser', 'secrete', 'token') self.tenant = 'test_tenant' + self.auth_token = utils.get_auth_token() self.user = utils.get_user() self.userdisabled = utils.get_userdisabled() - self.auth_token = utils.get_auth_token() self.exp_auth_token = utils.get_exp_auth_token() self.disabled_token = utils.get_disabled_token() + utils.create_tenant(self.tenant, str(self.auth_token)) + utils.create_user(self.tenant, self.user, self.auth_token) + utils.add_user_json(self.tenant, self.user, self.auth_token) + self.token = utils.get_token(self.user, 'secrete', self.tenant, + 'token') def tearDown(self): - resp, content = utils.delete_tenant(self.tenant, self.auth_token) + utils.delete_user(self.tenant, self.user, self.auth_token) + utils.delete_tenant(self.tenant, self.auth_token) -class create_tenant_test(tenant_test): +class CreateTenantTest(TenantTest): def test_tenant_create(self): - resp, content = utils.delete_tenant(self.tenant, str(self.auth_token)) + utils.delete_user(self.tenant, self.user, self.auth_token) + utils.delete_tenant(self.tenant, str(self.auth_token)) resp, content = utils.create_tenant(self.tenant, str(self.auth_token)) if int(resp['status']) == 500: self.fail('Identity Fault') @@ -40,7 +63,8 @@ class create_tenant_test(tenant_test): self.fail('Failed due to %d' % int(resp['status'])) def test_tenant_create_xml(self): - resp, content = utils.delete_tenant_xml(self.tenant, + utils.delete_user(self.tenant, self.user, self.auth_token) + utils.delete_tenant_xml(self.tenant, str(self.auth_token)) resp, content = utils.create_tenant_xml(self.tenant, str(self.auth_token)) @@ -302,7 +326,7 @@ class create_tenant_test(tenant_test): self.assertEqual(404, int(resp['status'])) -class get_tenants_test(tenant_test): +class GetTenantsTest(TenantTest): def test_get_tenants(self): header = httplib2.Http(".cache") @@ -392,7 +416,7 @@ class get_tenants_test(tenant_test): self.assertEqual(403, int(resp['status'])) -class get_tenant_test(tenant_test): +class GetTenantTest(TenantTest): def test_get_tenant(self): header = httplib2.Http(".cache") @@ -482,7 +506,7 @@ class get_tenant_test(tenant_test): self.assertEqual(404, int(resp['status'])) -class update_tenant_test(tenant_test): +class UpdateTenantTest(TenantTest): def test_update_tenant(self): header = httplib2.Http(".cache") @@ -603,33 +627,33 @@ class update_tenant_test(tenant_test): self.assertEqual(404, int(resp['status'])) -class delete_tenant_test(tenant_test): +class DeleteTenantTest(TenantTest): def test_delete_tenant_not_found(self): #resp,content=utils.create_tenant("test_tenant_delete", # str(self.auth_token)) - resp, content = utils.delete_tenant("test_tenant_delete111", + resp = utils.delete_tenant("test_tenant_delete111", str(self.auth_token)) self.assertEqual(404, int(resp['status'])) def test_delete_tenant_not_found_xml(self): #resp,content=utils.create_tenant("test_tenant_delete", # str(self.auth_token)) - resp, content = utils.delete_tenant_xml("test_tenant_delete111", + resp = utils.delete_tenant_xml("test_tenant_delete111", str(self.auth_token)) self.assertEqual(404, int(resp['status'])) def test_delete_tenant(self): resp, content = utils.create_tenant("test_tenant_delete", str(self.auth_token)) - resp, content = utils.delete_tenant("test_tenant_delete", + resp = utils.delete_tenant("test_tenant_delete", str(self.auth_token)) self.assertEqual(204, int(resp['status'])) def test_delete_tenant_xml(self): resp, content = utils.create_tenant_xml("test_tenant_delete", str(self.auth_token)) - resp, content = utils.delete_tenant_xml("test_tenant_delete", + resp = utils.delete_tenant_xml("test_tenant_delete", str(self.auth_token)) self.assertEqual(204, int(resp['status'])) diff --git a/test/unit/test_token.py b/test/unit/test_token.py index c8b384a5..16818b4f 100644 --- a/test/unit/test_token.py +++ b/test/unit/test_token.py @@ -1,23 +1,41 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# Copyright (c) 2010-2011 OpenStack, LLC. +# +# 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. + + +import httplib2 import os import sys -# Need to access identity module sys.path.append(os.path.abspath(os.path.join(os.path.abspath(__file__), '..', '..', '..', '..', 'keystone'))) import unittest -import httplib2 + import test_common as utils -class validate_token(unittest.TestCase): +class ValidateToken(unittest.TestCase): def setUp(self): - self.token = utils.get_token('joeuser', 'secrete', 'token') self.tenant = utils.get_tenant() - self.user = utils.get_user() - self.userdisabled = utils.get_userdisabled() + self.token = utils.get_token('joeuser', 'secrete', self.tenant, + 'token') + #self.user = utils.get_user() + #self.userdisabled = utils.get_userdisabled() self.auth_token = utils.get_auth_token() self.exp_auth_token = utils.get_exp_auth_token() - self.disabled_token = utils.get_disabled_token() + #self.disabled_token = utils.get_disabled_token() def tearDown(self): utils.delete_token(self.token, self.auth_token) diff --git a/test/unit/test_users.py b/test/unit/test_users.py index 0de24603..21811a3c 100644 --- a/test/unit/test_users.py +++ b/test/unit/test_users.py @@ -1,363 +1,359 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# Copyright (c) 2010-2011 OpenStack, LLC. +# +# 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. + + +import httplib2 +import json +from lxml import etree import os import sys -# Need to access identity module sys.path.append(os.path.abspath(os.path.join(os.path.abspath(__file__), '..', '..', '..', '..', 'keystone'))) import unittest -from webtest import TestApp -import httplib2 -import json -from lxml import etree - -from test_common import URL, get_token, get_tenant, get_user -from test_common import get_userdisabled, get_auth_token -from test_common import get_exp_auth_token, get_disabled_token -from test_common import delete_token, content_type, get_token_xml -from test_common import get_password, get_email, get_none_token -from test_common import get_non_existing_token, delete_user, delete_user_xml -from test_common import create_user, create_user_xml, handle_user_resp +import test_common as utils +from test_common import URL -class user_test(unittest.TestCase): +class UserTest(unittest.TestCase): def setUp(self): - self.token = get_token('joeuser', 'secrete', 'token') - self.tenant = get_tenant() - self.password = get_password() - self.email = get_email() - self.user = get_user() - self.userdisabled = get_userdisabled() - self.auth_token = get_auth_token() - self.exp_auth_token = get_exp_auth_token() - self.disabled_token = get_disabled_token() - self.missing_token = get_none_token() - self.invalid_token = get_non_existing_token() + self.tenant = utils.get_tenant() + self.password = utils.get_password() + self.email = utils.get_email() + self.user = utils.get_user() + self.userdisabled = utils.get_userdisabled() + self.auth_token = utils.get_auth_token() + self.exp_auth_token = utils.get_exp_auth_token() + self.disabled_token = utils.get_disabled_token() + self.missing_token = utils.get_none_token() + self.invalid_token = utils.get_non_existing_token() + utils.create_tenant(self.tenant, str(self.auth_token)) + utils.add_user_json(self.tenant, self.user, self.auth_token) + self.token = utils.get_token(self.user, 'secrete', self.tenant, + 'token') def tearDown(self): - - resp, content = delete_user(self.tenant, self.user, - str(self.auth_token)) + utils.delete_user(self.tenant, self.user, str(self.auth_token)) -class create_user_test(user_test): +class CreateUserTest(UserTest): def test_a_user_create_json(self): - resp, content = create_user(self.tenant, self.user, - str(self.auth_token)) + + resp = utils.delete_user(self.tenant, self.user, str(self.auth_token)) + + resp, content = utils.create_user(self.tenant, 'test_user1', + str(self.auth_token)) + self.user = 'test_user1' resp_val = int(resp['status']) - handle_user_resp(self, content, resp_val, content_type(resp)) + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) self.assertEqual(201, resp_val) def test_a_user_create_xml(self): - resp, content = delete_user_xml(self.tenant, self.user, - str(self.auth_token)) - resp, content = create_user_xml(self.tenant, self.user, - str(self.auth_token)) + utils.delete_user_xml(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.create_user_xml(self.tenant, 'test_user1', + str(self.auth_token)) + self.user = 'test_user1' resp_val = int(resp['status']) - handle_user_resp(self, content, resp_val, content_type(resp)) - + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) self.assertEqual(201, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) def test_a_user_create_json_disabled_tenant(self): - resp, content = create_user('0000', self.user, - str(self.auth_token)) + resp, content = utils.create_user('0000', self.user, + str(self.auth_token)) resp_val = int(resp['status']) - handle_user_resp(self, content, resp_val, content_type(resp)) + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) self.assertEqual(403, resp_val) def test_a_user_create_json_disabled_tenant_xml(self): - resp, content = create_user_xml('0000', self.user, - str(self.auth_token)) + resp, content = utils.create_user_xml('0000', self.user, + str(self.auth_token)) resp_val = int(resp['status']) - handle_user_resp(self, content, resp_val, content_type(resp)) + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) self.assertEqual(403, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) - def test_a_user_again_json(self): - resp, content = create_user(self.tenant, self.user, + def test_a_user_create_again_json(self): + resp, content = utils.create_user(self.tenant, self.user, str(self.auth_token)) resp_val = int(resp['status']) - handle_user_resp(self, content, resp_val, content_type(resp)) - resp, content = create_user(self.tenant, self.user, + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) + resp, content = utils.create_user(self.tenant, self.user, str(self.auth_token)) self.assertEqual(409, int(resp['status'])) - def test_a_user_again_xml(self): - resp, content = create_user_xml(self.tenant, self.user, + def test_a_user_create_again_xml(self): + utils.create_user_xml(self.tenant, self.user, str(self.auth_token)) - resp, content = create_user_xml(self.tenant, self.user, + resp, content = utils.create_user_xml(self.tenant, self.user, str(self.auth_token)) content = etree.fromstring(content) resp_val = int(resp['status']) - handle_user_resp(self, content, resp_val, content_type(resp)) + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) + self.assertEqual(409, int(resp['status'])) + self.assertEqual('application/xml', utils.content_type(resp)) + + def test_a_user_create_email_conflict(self): + utils.create_user(self.tenant, self.user, str(self.auth_token), + self.email) + resp, content = utils.create_user(self.tenant, self.user, + str(self.auth_token), + self.email) self.assertEqual(409, int(resp['status'])) - self.assertEqual('application/xml', content_type(resp)) + + def test_a_user_create_email_conflict_xml(self): + utils.create_user_xml(self.tenant, + self.user, + str(self.auth_token), + self.email) + resp, content = utils.create_user_xml(self.tenant, self.user, + str(self.auth_token), + self.email) + content = etree.fromstring(content) + resp_val = int(resp['status']) + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) + self.assertEqual(409, int(resp['status'])) + self.assertEqual('application/xml', utils.content_type(resp)) def test_a_user_create_expired_token(self): - resp, content = create_user(self.tenant, self.user, + resp, content = utils.create_user(self.tenant, self.user, str(self.exp_auth_token)) resp_val = int(resp['status']) - handle_user_resp(self, content, resp_val, content_type(resp)) + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) self.assertEqual(403, int(resp['status'])) def test_a_user_create_expired_token_xml(self): - resp, content = create_user_xml(self.tenant, self.user, - str(self.exp_auth_token)) + resp, content = utils.create_user_xml(self.tenant, self.user, + str(self.exp_auth_token)) resp_val = int(resp['status']) - handle_user_resp(self, content, resp_val, content_type(resp)) + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) self.assertEqual(403, int(resp['status'])) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) def test_a_user_create_disabled_token(self): - resp, content = create_user(self.tenant, self.user, + resp, content = utils.create_user(self.tenant, self.user, str(self.disabled_token)) resp_val = int(resp['status']) - handle_user_resp(self, content, resp_val, content_type(resp)) + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) self.assertEqual(403, int(resp['status'])) def test_a_user_create_disabled_token_xml(self): - resp, content = create_user_xml(self.tenant, self.user, - str(self.disabled_token)) + resp, content = utils.create_user_xml(self.tenant, self.user, + str(self.disabled_token)) resp_val = int(resp['status']) - handle_user_resp(self, content, resp_val, content_type(resp)) + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) self.assertEqual(403, int(resp['status'])) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) def test_a_user_create_missing_token(self): - resp, content = create_user(self.tenant, self.user, + resp, content = utils.create_user(self.tenant, self.user, str(self.missing_token)) resp_val = int(resp['status']) - handle_user_resp(self, content, resp_val, content_type(resp)) + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) self.assertEqual(401, int(resp['status'])) def test_a_user_create_missing_token_xml(self): - resp, content = create_user_xml(self.tenant, self.user, - str(self.missing_token)) + resp, content = utils.create_user_xml(self.tenant, self.user, + str(self.missing_token)) resp_val = int(resp['status']) - handle_user_resp(self, content, resp_val, content_type(resp)) + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) self.assertEqual(401, int(resp['status'])) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) def test_a_user_create_invalid_token(self): - resp, content = create_user(self.tenant, self.user, + resp, content = utils.create_user(self.tenant, self.user, str(self.invalid_token)) resp_val = int(resp['status']) - handle_user_resp(self, content, resp_val, content_type(resp)) + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) self.assertEqual(404, int(resp['status'])) def test_a_user_create_invalid_token_xml(self): - resp, content = create_user_xml(self.tenant, self.user, + resp, content = utils.create_user_xml(self.tenant, self.user, str(self.invalid_token)) resp_val = int(resp['status']) - handle_user_resp(self, content, resp_val, content_type(resp)) + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) self.assertEqual(404, int(resp['status'])) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) -class get_user_test(user_test): +class GetUserTest(UserTest): - def test_a_user_get_json(self): - header = httplib2.Http(".cache") - resp, content = create_user(self.tenant, self.user, - str(self.auth_token)) - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/json", - "X-Auth-Token": self.auth_token}) + def test_a_user_get(self): + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_get_json(self.tenant, self.user, + str(self.auth_token)) resp_val = int(resp['status']) - handle_user_resp(self, content, resp_val, content_type(resp)) + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) self.assertEqual(200, resp_val) def test_a_user_get_xml(self): - header = httplib2.Http(".cache") - resp, content = create_user(self.tenant, self.user, - str(self.auth_token)) - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.auth_token, - "ACCEPT": "application/xml"}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_get_xml(self.tenant, self.user, + str(self.auth_token)) resp_val = int(resp['status']) - handle_user_resp(self, content, resp_val, content_type(resp)) + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) self.assertEqual(200, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) def test_a_user_get_expired_token(self): - header = httplib2.Http(".cache") - resp, content = create_user(self.user, self.tenant, - str(self.auth_token)) - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - #test for Content-Type = application/json - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/json", - "X-Auth-Token": self.exp_auth_token}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_get_json(self.tenant, self.user, + str(self.exp_auth_token)) resp_val = int(resp['status']) - handle_user_resp(self, content, resp_val, content_type(resp)) + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) self.assertEqual(403, resp_val) def test_a_user_get_expired_token_xml(self): - header = httplib2.Http(".cache") - resp, content = create_user(self.user, self.tenant, - str(self.auth_token)) - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - #test for Content-Type = application/json - resp, content = header.request(url, "GET", body='', - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.exp_auth_token, - "ACCEPT": "application/xml"}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_get_xml(self.tenant, self.user, + str(self.exp_auth_token)) resp_val = int(resp['status']) - handle_user_resp(self, content, resp_val, content_type(resp)) + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) self.assertEqual(403, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) def test_a_user_get_disabled_token(self): - header = httplib2.Http(".cache") - resp, content = create_user(self.user, self.tenant, - str(self.auth_token)) - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - #test for Content-Type = application/json - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/json", - "X-Auth-Token": self.disabled_token}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_get_json(self.tenant, + self.user, + str(self.disabled_token)) resp_val = int(resp['status']) - handle_user_resp(self, content, resp_val, content_type(resp)) + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) self.assertEqual(403, resp_val) def test_a_user_get_disabled_token_xml(self): - header = httplib2.Http(".cache") - resp, content = create_user(self.user, self.tenant, - str(self.auth_token)) - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - #test for Content-Type = application/json - resp, content = header.request(url, "GET", body='', - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.disabled_token, - "ACCEPT": "application/xml"}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_get_xml(self.tenant, + self.user, + str(self.disabled_token)) resp_val = int(resp['status']) - handle_user_resp(self, content, resp_val, content_type(resp)) + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) self.assertEqual(403, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) def test_a_user_get_missing_token(self): - header = httplib2.Http(".cache") - resp, content = create_user(self.user, self.tenant, - str(self.auth_token)) - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - #test for Content-Type = application/json - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/json", - "X-Auth-Token": self.missing_token}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_get_json(self.tenant, + self.user, + str(self.missing_token)) resp_val = int(resp['status']) - handle_user_resp(self, content, resp_val, content_type(resp)) + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) self.assertEqual(401, resp_val) def test_a_user_get_missing_token_xml(self): - header = httplib2.Http(".cache") - resp, content = create_user(self.user, self.tenant, - str(self.auth_token)) - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - #test for Content-Type = application/json - resp, content = header.request(url, "GET", body='', - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.missing_token, - "ACCEPT": "application/xml"}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_get_xml(self.tenant, self.user, + str(self.missing_token)) resp_val = int(resp['status']) - handle_user_resp(self, content, resp_val, content_type(resp)) + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) self.assertEqual(401, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) def test_a_user_get_invalid_token(self): - header = httplib2.Http(".cache") - resp, content = create_user(self.user, self.tenant, - str(self.auth_token)) - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - #test for Content-Type = application/json - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/json", - "X-Auth-Token": self.invalid_token}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_get_json(self.tenant, self.user, + str(self.invalid_token)) resp_val = int(resp['status']) - handle_user_resp(self, content, resp_val, content_type(resp)) + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) self.assertEqual(404, resp_val) def test_a_user_get_invalid_token_xml(self): - header = httplib2.Http(".cache") - resp, content = create_user(self.user, self.tenant, - str(self.auth_token)) - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - #test for Content-Type = application/json - resp, content = header.request(url, "GET", body='', - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.invalid_token, - "ACCEPT": "application/xml"}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_get_xml(self.tenant, self.user, + str(self.invalid_token)) resp_val = int(resp['status']) - handle_user_resp(self, content, resp_val, content_type(resp)) + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) self.assertEqual(404, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) def test_a_user_get_disabled_user(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s' % (URL, self.tenant, - self.userdisabled) - #test for Content-Type = application/json - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/json", - "X-Auth-Token": self.auth_token}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_get_json(self.tenant, + self.userdisabled, + str(self.auth_token)) resp_val = int(resp['status']) - - handle_user_resp(self, content, resp_val, content_type(resp)) + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) self.assertEqual(403, resp_val) def test_a_user_get_disabled_user_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.userdisabled) - - resp, content = header.request(url, "GET", body='', - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.auth_token, - "ACCEPT": "application/xml"}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_get_xml(self.tenant, self.userdisabled, + str(self.auth_token)) resp_val = int(resp['status']) - handle_user_resp(self, content, resp_val, content_type(resp)) + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) self.assertEqual(403, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) def test_a_user_get_disabled_tenant(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s' % (URL, '0000', self.userdisabled) - - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/json", - "X-Auth-Token": self.auth_token}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_get_json('0000', self.user, + str(self.auth_token)) resp_val = int(resp['status']) - handle_user_resp(self, content, resp_val, content_type(resp)) + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) self.assertEqual(403, resp_val) def test_a_user_get_disabled_tenant_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s' % (URL, '0000', self.userdisabled) - #test for Content-Type = application/json - resp, content = header.request(url, "GET", body='', - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.auth_token, - "ACCEPT": "application/xml"}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_get_xml('0000', self.user, + str(self.auth_token)) resp_val = int(resp['status']) - handle_user_resp(self, content, resp_val, content_type(resp)) + utils.handle_user_resp(self, content, resp_val, + utils.content_type(resp)) self.assertEqual(403, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', + utils.content_type(resp)) -class delete_user_test(user_test): +class DeleteUserTest(UserTest): - def test_a_user_delete_json(self): - header = httplib2.Http(".cache") - resp, content = create_user(self.tenant, self.user, - str(self.auth_token)) - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - #test for Content-Type = application/json - resp, content = header.request(url, "DELETE", body='{}', - headers={"Content-Type": "application/json", - "X-Auth-Token": self.auth_token}) + def test_a_user_delete(self): + utils.create_user(self.tenant, self.user, + str(self.auth_token)) + resp = utils.delete_user(self.tenant, self.user, + str(self.auth_token)) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') @@ -366,14 +362,10 @@ class delete_user_test(user_test): self.assertEqual(204, resp_val) def test_a_user_delete_xml(self): - header = httplib2.Http(".cache") - resp, content = create_user_xml(self.tenant, self.user, - str(self.auth_token)) - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - resp, content = header.request(url, "DELETE", body='{}', - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.auth_token, - "ACCEPT": "application/xml"}) + utils.create_user(self.tenant, self.user, + str(self.auth_token)) + resp = utils.delete_user_xml(self.tenant, self.user, + str(self.auth_token)) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') @@ -382,14 +374,10 @@ class delete_user_test(user_test): self.assertEqual(204, resp_val) def test_a_user_delete_expired_token(self): - header = httplib2.Http(".cache") - resp, content = create_user(self.user, self.tenant, - str(self.auth_token)) - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - #test for Content-Type = application/json - resp, content = header.request(url, "DELETE", body='{}', - headers={"Content-Type": "application/json", - "X-Auth-Token": self.exp_auth_token}) + utils.create_user(self.tenant, self.user, + str(self.auth_token)) + resp = utils.delete_user(self.tenant, self.user, + str(self.exp_auth_token)) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') @@ -398,32 +386,23 @@ class delete_user_test(user_test): self.assertEqual(403, resp_val) def test_a_user_delete_expired_token_xml(self): - header = httplib2.Http(".cache") - resp, content = create_user(self.user, self.tenant, + utils.create_user(self.tenant, self.user, str(self.auth_token)) - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - #test for Content-Type = application/json - resp, content = header.request(url, "DELETE", body='', - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.exp_auth_token, - "ACCEPT": "application/xml"}) + resp = utils.delete_user_xml(self.tenant, self.user, + str(self.exp_auth_token)) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(403, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) def test_a_user_delete_missing_token(self): - header = httplib2.Http(".cache") - resp, content = create_user(self.user, self.tenant, + utils.create_user(self.tenant, self.user, str(self.auth_token)) - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - #test for Content-Type = application/json - resp, content = header.request(url, "DELETE", body='{}', - headers={"Content-Type": "application/json", - "X-Auth-Token": self.missing_token}) + resp = utils.delete_user(self.tenant, self.user, + str(self.missing_token)) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') @@ -432,32 +411,23 @@ class delete_user_test(user_test): self.assertEqual(401, resp_val) def test_a_user_delete_missing_token_xml(self): - header = httplib2.Http(".cache") - resp, content = create_user(self.user, self.tenant, + utils.create_user(self.tenant, self.user, str(self.auth_token)) - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - #test for Content-Type = application/json - resp, content = header.request(url, "DELETE", body='', - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.missing_token, - "ACCEPT": "application/xml"}) + resp = utils.delete_user_xml(self.tenant, self.user, + str(self.missing_token)) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(401, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) def test_a_user_delete_invalid_token(self): - header = httplib2.Http(".cache") - resp, content = create_user(self.user, self.tenant, + utils.create_user(self.tenant, self.user, str(self.auth_token)) - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - #test for Content-Type = application/json - resp, content = header.request(url, "DELETE", body='{}', - headers={"Content-Type": "application/json", - "X-Auth-Token": self.invalid_token}) + resp = utils.delete_user(self.tenant, self.user, + str(self.invalid_token)) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') @@ -466,32 +436,24 @@ class delete_user_test(user_test): self.assertEqual(404, resp_val) def test_a_user_delete_invalid_token_xml(self): - header = httplib2.Http(".cache") - resp, content = create_user(self.user, self.tenant, + utils.create_user(self.tenant, self.user, str(self.auth_token)) - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - #test for Content-Type = application/json - resp, content = header.request(url, "DELETE", body='', - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.invalid_token, - "ACCEPT": "application/xml"}) + resp = utils.delete_user_xml(self.tenant, self.user, + str(self.invalid_token)) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(404, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) def test_a_user_delete_disabled_tenant(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s' % (URL, '0000', self.userdisabled) - #test for Content-Type = application/json - resp, content = header.request(url, "DELETE", body='{}', - headers={"Content-Type": "application/json", - "X-Auth-Token": self.auth_token}) + utils.create_user(self.tenant, self.user, + str(self.auth_token)) + resp = utils.delete_user("0000", self.user, + str(self.auth_token)) resp_val = int(resp['status']) - if resp_val == 500: self.fail('Identity Fault') elif resp_val == 503: @@ -499,31 +461,23 @@ class delete_user_test(user_test): self.assertEqual(403, resp_val) def test_a_user_delete_disabled_tenant_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s' % (URL, '0000', self.userdisabled) - #test for Content-Type = application/json - resp, content = header.request(url, "DELETE", body='', - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.auth_token, - "ACCEPT": "application/xml"}) + utils.create_user(self.tenant, self.user, + str(self.auth_token)) + resp = utils.delete_user_xml("0000", self.user, + str(self.auth_token)) resp_val = int(resp['status']) - if resp_val == 500: self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(403, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) -class get_users_test(user_test): +class GetUsersTest(UserTest): - def test_users_get_json(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users' % (URL, self.tenant) - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/json", - "X-Auth-Token": self.auth_token}) + def test_users_get(self): + resp, content = utils.users_get_json(self.tenant, self.auth_token) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') @@ -532,26 +486,17 @@ class get_users_test(user_test): self.assertEqual(200, resp_val) def test_users_get_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users' % (URL, self.tenant) - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.auth_token, - "ACCEPT": "application/xml"}) + resp, content = utils.users_get_xml(self.tenant, self.auth_token) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(200, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) - def test_users_get_expired_token_json(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users' % (URL, self.tenant) - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/json", - "X-Auth-Token": self.exp_auth_token}) + def test_users_get_expired_token(self): + resp, content = utils.users_get_json(self.tenant, self.exp_auth_token) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') @@ -560,26 +505,17 @@ class get_users_test(user_test): self.assertEqual(403, resp_val) def test_users_get_expired_token_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users' % (URL, self.tenant) - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.exp_auth_token, - "ACCEPT": "application/xml"}) + resp, content = utils.users_get_xml(self.tenant, self.exp_auth_token) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(403, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) - def test_users_get_disabled_token_json(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users' % (URL, self.tenant) - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/json", - "X-Auth-Token": self.disabled_token}) + def test_users_get_disabled_token(self): + resp, content = utils.users_get_json(self.tenant, self.disabled_token) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') @@ -588,26 +524,17 @@ class get_users_test(user_test): self.assertEqual(403, resp_val) def test_users_get_disabled_token_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users' % (URL, self.tenant) - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.disabled_token, - "ACCEPT": "application/xml"}) + resp, content = utils.users_get_xml(self.tenant, self.disabled_token) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(403, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) - def test_users_get_missing_token_json(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users' % (URL, self.tenant) - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/json", - "X-Auth-Token": self.missing_token}) + def test_users_get_missing_token(self): + resp, content = utils.users_get_json(self.tenant, self.missing_token) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') @@ -616,26 +543,17 @@ class get_users_test(user_test): self.assertEqual(401, resp_val) def test_users_get_missing_token_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users' % (URL, self.tenant) - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.missing_token, - "ACCEPT": "application/xml"}) + resp, content = utils.users_get_xml(self.tenant, self.missing_token) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(401, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) - def test_users_get_invalid_token_json(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users' % (URL, self.tenant) - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/json", - "X-Auth-Token": self.invalid_token}) + def test_users_get_invalid_token(self): + resp, content = utils.users_get_json(self.tenant, self.invalid_token) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') @@ -644,58 +562,41 @@ class get_users_test(user_test): self.assertEqual(404, resp_val) def test_users_get_invalid_token_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users' % (URL, self.tenant) - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.invalid_token, - "ACCEPT": "application/xml"}) + resp, content = utils.users_get_xml(self.tenant, self.invalid_token) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(404, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) - def test_users_get_disabled_tenant_json(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users' % (URL, "0000") - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/json", - "X-Auth-Token": self.auth_token}) + def test_users_get_disabled_tenant(self): + resp, content = utils.users_get_json('0000', self.auth_token) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') - self.assertEqual(403, resp_val) def test_users_get_disabled_tenant_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users' % (URL, "0000") - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.auth_token, - "ACCEPT": "application/xml"}) + resp, content = utils.users_get_xml('0000', self.auth_token) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(403, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) -class get_users_group_test(user_test): +class GetUsersGroupTest(UserTest): - def test_users_group_get_json(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/groups' % (URL, self.tenant, self.user) - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/json", - "X-Auth-Token": self.auth_token}) + def test_users_group_get(self): + resp, content = utils.users_group_get_json(self.tenant, + self.user, + self.auth_token) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') @@ -704,26 +605,21 @@ class get_users_group_test(user_test): self.assertEqual(200, resp_val) def test_users_group_get_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/groups' % (URL, self.tenant, self.user) - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.auth_token, - "ACCEPT": "application/xml"}) + resp, content = utils.users_group_get_xml(self.tenant, + self.user, + self.auth_token) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(200, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) - def test_users_group_get_expired_token_json(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/groups' % (URL, self.tenant, self.user) - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/json", - "X-Auth-Token": self.exp_auth_token}) + def test_users_group_get_expired_token(self): + resp, content = utils.users_group_get_json(self.tenant, + self.user, + self.exp_auth_token) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') @@ -732,26 +628,21 @@ class get_users_group_test(user_test): self.assertEqual(403, resp_val) def test_users_group_get_expired_token_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/groups' % (URL, self.tenant, self.user) - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.exp_auth_token, - "ACCEPT": "application/xml"}) + resp, content = utils.users_group_get_xml(self.tenant, + self.user, + self.exp_auth_token) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(403, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) - def test_users_group_get_disabled_token_json(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/groups' % (URL, self.tenant, self.user) - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/json", - "X-Auth-Token": self.disabled_token}) + def test_users_group_get_disabled_token(self): + resp, content = utils.users_group_get_json(self.tenant, + self.user, + self.disabled_token) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') @@ -760,26 +651,21 @@ class get_users_group_test(user_test): self.assertEqual(403, resp_val) def test_users_group_get_disabled_token_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/groups' % (URL, self.tenant, self.user) - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.disabled_token, - "ACCEPT": "application/xml"}) + resp, content = utils.users_group_get_xml(self.tenant, + self.user, + self.disabled_token) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(403, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) - def test_users_group_get_missing_token_json(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/groups' % (URL, self.tenant, self.user) - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/json", - "X-Auth-Token": self.missing_token}) + def test_users_group_get_missing_token(self): + resp, content = utils.users_group_get_json(self.tenant, + self.user, + self.missing_token) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') @@ -788,26 +674,21 @@ class get_users_group_test(user_test): self.assertEqual(401, resp_val) def test_users_group_get_missing_token_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/groups' % (URL, self.tenant, self.user) - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.missing_token, - "ACCEPT": "application/xml"}) + resp, content = utils.users_group_get_xml(self.tenant, + self.user, + self.missing_token) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(401, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) - def test_users_group_get_invalid_token_json(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/groups' % (URL, self.tenant, self.user) - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/json", - "X-Auth-Token": self.invalid_token}) + def test_users_group_get_invalid_token(self): + resp, content = utils.users_group_get_json(self.tenant, + self.user, + self.invalid_token) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') @@ -816,106 +697,79 @@ class get_users_group_test(user_test): self.assertEqual(404, resp_val) def test_users_group_get_invalid_token_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/groups' % (URL, self.tenant, self.user) - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.invalid_token, - "ACCEPT": "application/xml"}) + resp, content = utils.users_group_get_xml(self.tenant, + self.user, + self.invalid_token) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(404, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) - def test_users_group_get_disabled_tenant_json(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/groups' % (URL, "0000", self.user) - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/json", - "X-Auth-Token": self.auth_token}) + def test_users_group_get_disabled_tenant(self): + resp, content = utils.users_group_get_json('0000', + self.user, + self.auth_token) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') - self.assertEqual(403, resp_val) def test_users_group_get_disabled_tenant_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/groups' % (URL, "0000", self.user) - resp, content = header.request(url, "GET", body='{}', - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.auth_token, - "ACCEPT": "application/xml"}) + resp, content = utils.users_group_get_xml('0000', + self.user, + self.auth_token) resp_val = int(resp['status']) if resp_val == 500: self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(403, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) -class update_user_test(user_test): +class UpdateUserTest(UserTest): - def test_user_update_json(self): - header = httplib2.Http(".cache") - resp, content = create_user(self.tenant, self.user, - str(self.auth_token)) - - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - - data = '{"user": { "email": "updatedjoeuser@rackspace.com"}}' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/json", - "X-Auth-Token": self.auth_token}) + def test_user_update(self): + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_update_json(self.tenant, self.user, + self.auth_token) resp_val = int(resp['status']) - content = json.loads(content) if resp_val == 500: self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') - delete_user(self.tenant, self.user, str(self.auth_token)) + utils.delete_user(self.tenant, self.user, str(self.auth_token)) self.assertEqual(200, resp_val) - self.assertEqual('updatedjoeuser@rackspace.com', \ - content['user']['email']) + self.assertEqual('updatedjoeuser@rackspace.com', + content['user']['email']) def test_user_update_xml(self): - header = httplib2.Http(".cache") - resp, content = create_user_xml(self.tenant, self.user, - str(self.auth_token)) - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - data = '<?xml version="1.0" encoding="UTF-8"?> \ - <user xmlns="http://docs.openstack.org/identity/api/v2.0" \ - email="updatedjoeuser@rackspace.com" />' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.auth_token, - "ACCEPT": "application/xml"}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_update_xml(self.tenant, self.user, + self.auth_token) resp_val = int(resp['status']) - content = etree.fromstring(content) if resp_val == 500: self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') - delete_user(self.tenant, self.user, str(self.auth_token)) + utils.delete_user(self.tenant, self.user, str(self.auth_token)) self.assertEqual(200, resp_val) - self.assertEqual('updatedjoeuser@rackspace.com', content.get("email")) - self.assertEqual('application/xml', content_type(resp)) - - def test_user_update_user_disabled_json(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.userdisabled) - data = '{"user": { "email": "updatedjoeuser@rackspace.com"}}' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/json", - "X-Auth-Token": self.auth_token}) + self.assertEqual('updatedjoeuser@rackspace.com', + content.get("email")) + self.assertEqual('application/xml', utils.content_type(resp)) + + def test_user_update_user_disabled(self): + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_update_json(self.tenant, + self.userdisabled, + self.auth_token) resp_val = int(resp['status']) content = json.loads(content) if resp_val == 500: @@ -925,15 +779,10 @@ class update_user_test(user_test): self.assertEqual(403, resp_val) def test_user_update_user_disabled_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.userdisabled) - data = '<?xml version="1.0" encoding="UTF-8"?> \ - <user xmlns="http://docs.openstack.org/identity/api/v2.0" \ - email="updatedjoeuser@rackspace.com" />' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.auth_token, - "ACCEPT": "application/xml"}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_update_xml(self.tenant, + self.userdisabled, + self.auth_token) resp_val = int(resp['status']) content = etree.fromstring(content) if resp_val == 500: @@ -941,17 +790,14 @@ class update_user_test(user_test): elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(403, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) - def test_user_update_email_conflict_json(self): - header = httplib2.Http(".cache") - resp, content = create_user_xml(self.tenant, self.user, - str(self.auth_token)) - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - data = '{"user": { "email": "joe@rackspace.com"}}' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/json", - "X-Auth-Token": self.auth_token}) + def test_user_update_email_conflict(self): + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_update_json(self.tenant, + self.user, + self.auth_token, + "joe@rackspace.com") resp_val = int(resp['status']) content = json.loads(content) if resp_val == 500: @@ -961,17 +807,11 @@ class update_user_test(user_test): self.assertEqual(409, resp_val) def test_user_update_email_conflict_xml(self): - header = httplib2.Http(".cache") - resp, content = create_user_xml(self.tenant, self.user, - str(self.auth_token)) - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - data = '<?xml version="1.0" encoding="UTF-8"?> \ - <user xmlns="http://docs.openstack.org/identity/api/v2.0" \ - email="joe@rackspace.com" />' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.auth_token, - "ACCEPT": "application/xml"}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_update_xml(self.tenant, + self.user, + self.auth_token, + "joe@rackspace.com") resp_val = int(resp['status']) content = etree.fromstring(content) if resp_val == 500: @@ -979,15 +819,15 @@ class update_user_test(user_test): elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(409, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) def test_user_update_bad_request_json(self): - header = httplib2.Http(".cache") - resp, content = create_user(self.tenant, self.user, + h = httplib2.Http(".cache") + resp, content = utils.create_user(self.tenant, self.user, str(self.auth_token)) url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) data = '{"user_bad": { "bad": "updatedjoeuser@rackspace.com"}}' - resp, content = header.request(url, "PUT", body=data, + resp, content = h.request(url, "PUT", body=data, headers={"Content-Type": "application/json", "X-Auth-Token": self.auth_token}) resp_val = int(resp['status']) @@ -996,18 +836,18 @@ class update_user_test(user_test): self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') - delete_user(self.tenant, self.user, str(self.auth_token)) + utils.delete_user(self.tenant, self.user, str(self.auth_token)) self.assertEqual(400, resp_val) def test_user_update_bad_request_xml(self): - header = httplib2.Http(".cache") - resp, content = create_user_xml(self.tenant, self.user, + h = httplib2.Http(".cache") + resp, content = utils.create_user_xml(self.tenant, self.user, str(self.auth_token)) url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) data = '<?xml version="1.0" encoding="UTF-8"?> \ user xmlns="http://docs.openstack.org/identity/api/v2.0" \ email="updatedjoeuser@rackspace.com" />' - resp, content = header.request(url, "PUT", body=data, + resp, content = h.request(url, "PUT", body=data, headers={"Content-Type": "application/xml", "X-Auth-Token": self.auth_token, "ACCEPT": "application/xml"}) @@ -1017,17 +857,15 @@ class update_user_test(user_test): self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') - delete_user(self.tenant, self.user, str(self.auth_token)) + utils.delete_user(self.tenant, self.user, str(self.auth_token)) self.assertEqual(400, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) - def test_user_update_expired_token_json(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - data = '{"user": { "email": "updatedjoeuser@rackspace.com"}}' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/json", - "X-Auth-Token": self.exp_auth_token}) + def test_user_update_expired_token(self): + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_update_json(self.tenant, + self.user, + self.exp_auth_token) resp_val = int(resp['status']) content = json.loads(content) if resp_val == 500: @@ -1037,15 +875,10 @@ class update_user_test(user_test): self.assertEqual(403, resp_val) def test_user_update_expired_token_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - data = '<?xml version="1.0" encoding="UTF-8"?> \ - <user xmlns="http://docs.openstack.org/identity/api/v2.0" \ - email="updatedjoeuser@rackspace.com" />' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.exp_auth_token, - "ACCEPT": "application/xml"}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_update_xml(self.tenant, + self.user, + self.exp_auth_token) resp_val = int(resp['status']) content = etree.fromstring(content) if resp_val == 500: @@ -1053,15 +886,13 @@ class update_user_test(user_test): elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(403, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) - def test_user_update_disabled_token_json(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - data = '{"user": { "email": "updatedjoeuser@rackspace.com"}}' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/json", - "X-Auth-Token": self.disabled_token}) + def test_user_update_disabled_token(self): + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_update_json(self.tenant, + self.user, + self.disabled_token) resp_val = int(resp['status']) content = json.loads(content) if resp_val == 500: @@ -1071,15 +902,10 @@ class update_user_test(user_test): self.assertEqual(403, resp_val) def test_user_update_disabled_token_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - data = '<?xml version="1.0" encoding="UTF-8"?> \ - <user xmlns="http://docs.openstack.org/identity/api/v2.0" \ - email="updatedjoeuser@rackspace.com" />' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.disabled_token, - "ACCEPT": "application/xml"}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_update_xml(self.tenant, + self.user, + self.disabled_token) resp_val = int(resp['status']) content = etree.fromstring(content) if resp_val == 500: @@ -1087,18 +913,14 @@ class update_user_test(user_test): elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(403, resp_val) - self.assertEqual('application/xml', content_type(resp)) - - def test_user_update_invalid_token_json(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) + self.assertEqual('application/xml', utils.content_type(resp)) - data = '{"user": { "email": "updatedjoeuser@rackspace.com"}}' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/json", - "X-Auth-Token": self.invalid_token}) + def test_user_update_invalid_token(self): + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_update_json(self.tenant, + self.user, + self.invalid_token) resp_val = int(resp['status']) - content = json.loads(content) if resp_val == 500: self.fail('Identity Fault') @@ -1107,15 +929,10 @@ class update_user_test(user_test): self.assertEqual(404, resp_val) def test_user_update_invalid_token_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - data = '<?xml version="1.0" encoding="UTF-8"?> \ - <user xmlns="http://docs.openstack.org/identity/api/v2.0" \ - email="updatedjoeuser@rackspace.com" />' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.invalid_token, - "ACCEPT": "application/xml"}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_update_xml(self.tenant, + self.user, + self.invalid_token) resp_val = int(resp['status']) content = etree.fromstring(content) if resp_val == 500: @@ -1123,15 +940,13 @@ class update_user_test(user_test): elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(404, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) - def test_user_update_missing_token_json(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - data = '{"user": { "email": "updatedjoeuser@rackspace.com"}}' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/json", - "X-Auth-Token": self.missing_token}) + def test_user_update_missing_token(self): + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_update_json(self.tenant, + self.user, + self.missing_token) resp_val = int(resp['status']) content = json.loads(content) if resp_val == 500: @@ -1141,15 +956,10 @@ class update_user_test(user_test): self.assertEqual(401, resp_val) def test_user_update_missing_token_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.user) - data = '<?xml version="1.0" encoding="UTF-8"?> \ - <user xmlns="http://docs.openstack.org/identity/api/v2.0" \ - email="updatedjoeuser@rackspace.com" />' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.missing_token, - "ACCEPT": "application/xml"}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_update_xml(self.tenant, + self.user, + self.missing_token) resp_val = int(resp['status']) content = etree.fromstring(content) if resp_val == 500: @@ -1157,61 +967,47 @@ class update_user_test(user_test): elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(401, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) -class set_password_test(user_test): +class SetPasswordTest(UserTest): - def test_user_password_json(self): - header = httplib2.Http(".cache") - resp, content = create_user(self.tenant, self.user, - str(self.auth_token)) - url = '%stenants/%s/users/%s/password' % (URL, self.tenant, self.user) - data = '{"user": { "password": "p@ssword"}}' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/json", - "X-Auth-Token": self.auth_token}) + def test_user_password(self): + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_password_json(self.tenant, + self.user, + str(self.auth_token)) resp_val = int(resp['status']) content = json.loads(content) if resp_val == 500: self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') - delete_user(self.tenant, self.user, str(self.auth_token)) + utils.delete_user(self.tenant, self.user, str(self.auth_token)) self.assertEqual(200, resp_val) self.assertEqual('p@ssword', content['user']['password']) def test_user_password_xml(self): - header = httplib2.Http(".cache") - resp, content = create_user_xml(self.tenant, self.user, - str(self.auth_token)) - url = '%stenants/%s/users/%s/password' % (URL, self.tenant, self.user) - data = '<?xml version="1.0" encoding="UTF-8"?> \ - <user xmlns="http://docs.openstack.org/identity/api/v2.0" \ - password="p@ssword" />' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.auth_token, - "ACCEPT": "application/xml"}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_password_xml(self.tenant, + self.user, + str(self.auth_token)) resp_val = int(resp['status']) content = etree.fromstring(content) if resp_val == 500: self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') - delete_user(self.tenant, self.user, str(self.auth_token)) + utils.delete_user(self.tenant, self.user, str(self.auth_token)) self.assertEqual(200, resp_val) self.assertEqual('p@ssword', content.get("password")) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) - def test_user_password_user_disabled_json(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/password' \ - % (URL, self.tenant, self.userdisabled) - data = '{"user": { "password": "p@ssword"}}' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/json", - "X-Auth-Token": self.auth_token}) + def test_user_password_user_disabled(self): + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_password_json(self.tenant, + self.userdisabled, + str(self.auth_token)) resp_val = int(resp['status']) content = json.loads(content) if resp_val == 500: @@ -1221,15 +1017,10 @@ class set_password_test(user_test): self.assertEqual(403, resp_val) def test_user_password_user_disabled_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s' % (URL, self.tenant, self.userdisabled) - data = '<?xml version="1.0" encoding="UTF-8"?> \ - <user xmlns="http://docs.openstack.org/identity/api/v2.0" \ - password="p@ssword" />' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.auth_token, - "ACCEPT": "application/xml"}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_password_xml(self.tenant, + self.userdisabled, + str(self.auth_token)) resp_val = int(resp['status']) content = etree.fromstring(content) if resp_val == 500: @@ -1237,15 +1028,15 @@ class set_password_test(user_test): elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(403, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) def test_user_password_bad_request_json(self): - header = httplib2.Http(".cache") - resp, content = create_user(self.tenant, self.user, + h = httplib2.Http(".cache") + utils.create_user(self.tenant, self.user, str(self.auth_token)) url = '%stenants/%s/users/%s/password' % (URL, self.tenant, self.user) data = '{"user_bad": { "password": "p@ssword"}}' - resp, content = header.request(url, "PUT", body=data, + resp, content = h.request(url, "PUT", body=data, headers={"Content-Type": "application/json", "X-Auth-Token": self.auth_token}) resp_val = int(resp['status']) @@ -1254,18 +1045,17 @@ class set_password_test(user_test): self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') - delete_user(self.tenant, self.user, str(self.auth_token)) + utils.delete_user(self.tenant, self.user, str(self.auth_token)) self.assertEqual(400, resp_val) def test_user_password_bad_request_xml(self): - header = httplib2.Http(".cache") - resp, content = create_user_xml(self.tenant, self.user, - str(self.auth_token)) + h = httplib2.Http(".cache") + utils.create_user_xml(self.tenant, self.user, str(self.auth_token)) url = '%stenants/%s/users/%s/password' % (URL, self.tenant, self.user) data = '<?xml version="1.0" encoding="UTF-8"?> \ user xmlns="http://docs.openstack.org/identity/api/v2.0" \ password="p@ssword" />' - resp, content = header.request(url, "PUT", body=data, + resp, content = h.request(url, "PUT", body=data, headers={"Content-Type": "application/xml", "X-Auth-Token": self.auth_token, "ACCEPT": "application/xml"}) @@ -1275,17 +1065,15 @@ class set_password_test(user_test): self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') - delete_user(self.tenant, self.user, str(self.auth_token)) + utils.delete_user(self.tenant, self.user, str(self.auth_token)) self.assertEqual(400, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) - def test_user_password_expired_token_json(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/password' % (URL, self.tenant, self.user) - data = '{"user": { "password": "p@ssword"}}' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/json", - "X-Auth-Token": self.exp_auth_token}) + def test_user_password_expired_token(self): + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_password_json(self.tenant, + self.user, + str(self.exp_auth_token)) resp_val = int(resp['status']) content = json.loads(content) if resp_val == 500: @@ -1295,15 +1083,10 @@ class set_password_test(user_test): self.assertEqual(403, resp_val) def test_user_password_expired_token_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/password' % (URL, self.tenant, self.user) - data = '<?xml version="1.0" encoding="UTF-8"?> \ - <user xmlns="http://docs.openstack.org/identity/api/v2.0" \ - password="p@ssword" />' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.exp_auth_token, - "ACCEPT": "application/xml"}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_password_xml(self.tenant, + self.user, + str(self.exp_auth_token)) resp_val = int(resp['status']) content = etree.fromstring(content) if resp_val == 500: @@ -1311,15 +1094,13 @@ class set_password_test(user_test): elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(403, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) - def test_user_password_disabled_token_json(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/password' % (URL, self.tenant, self.user) - data = '{"user": { "password": "p@ssword"}}' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/json", - "X-Auth-Token": self.disabled_token}) + def test_user_password_disabled_token(self): + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_password_json(self.tenant, + self.user, + str(self.disabled_token)) resp_val = int(resp['status']) content = json.loads(content) if resp_val == 500: @@ -1329,15 +1110,10 @@ class set_password_test(user_test): self.assertEqual(403, resp_val) def test_user_password_disabled_token_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/password' % (URL, self.tenant, self.user) - data = '<?xml version="1.0" encoding="UTF-8"?> \ - <user xmlns="http://docs.openstack.org/identity/api/v2.0" \ - password="p@ssword" />' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.disabled_token, - "ACCEPT": "application/xml"}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_password_xml(self.tenant, + self.user, + str(self.disabled_token)) resp_val = int(resp['status']) content = etree.fromstring(content) if resp_val == 500: @@ -1345,15 +1121,15 @@ class set_password_test(user_test): elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(403, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) - def test_user_password_invalid_token_json(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/password' % (URL, self.tenant, self.user) - data = '{"user": { "password": "p@ssword"}}' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/json", - "X-Auth-Token": self.invalid_token}) + def test_user_password_invalid_token(self): + utils.create_user(self.tenant, + self.user, + str(self.auth_token)) + resp, content = utils.user_password_json(self.tenant, + self.user, + str(self.invalid_token)) resp_val = int(resp['status']) content = json.loads(content) if resp_val == 500: @@ -1363,15 +1139,10 @@ class set_password_test(user_test): self.assertEqual(404, resp_val) def test_user_password_invalid_token_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/password' % (URL, self.tenant, self.user) - data = '<?xml version="1.0" encoding="UTF-8"?> \ - <user xmlns="http://docs.openstack.org/identity/api/v2.0" \ - password="p@ssword" />' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.invalid_token, - "ACCEPT": "application/xml"}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_password_xml(self.tenant, + self.user, + str(self.invalid_token)) resp_val = int(resp['status']) content = etree.fromstring(content) if resp_val == 500: @@ -1379,15 +1150,13 @@ class set_password_test(user_test): elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(404, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) - def test_user_password_missing_token_json(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/password' % (URL, self.tenant, self.user) - data = '{"user": { "password": "p@ssword"}}' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/json", - "X-Auth-Token": self.missing_token}) + def test_user_password_missing_token(self): + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_password_json(self.tenant, + self.user, + str(self.missing_token)) resp_val = int(resp['status']) content = json.loads(content) if resp_val == 500: @@ -1397,15 +1166,10 @@ class set_password_test(user_test): self.assertEqual(401, resp_val) def test_user_password_missing_token_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/password' % (URL, self.tenant, self.user) - data = '<?xml version="1.0" encoding="UTF-8"?> \ - <user xmlns="http://docs.openstack.org/identity/api/v2.0" \ - password="p@ssword" />' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.missing_token, - "ACCEPT": "application/xml"}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_password_xml(self.tenant, + self.user, + str(self.missing_token)) resp_val = int(resp['status']) content = etree.fromstring(content) if resp_val == 500: @@ -1413,61 +1177,49 @@ class set_password_test(user_test): elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(401, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) -class set_enabled_test(user_test): +class SetEnabledTest(UserTest): - def test_user_enabled_json(self): - header = httplib2.Http(".cache") - resp, content = create_user(self.tenant, self.user, - str(self.auth_token)) - url = '%stenants/%s/users/%s/enabled' % (URL, self.tenant, self.user) - data = {"user": {"enabled": True}} - resp, content = header.request(url, "PUT", body=json.dumps(data), - headers={"Content-Type": "application/json", - "X-Auth-Token": self.auth_token}) + def test_user_enabled(self): + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_enabled_json(self.tenant, + self.user, + str(self.auth_token)) resp_val = int(resp['status']) - content = json.loads(content) if resp_val == 500: self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') - delete_user(self.tenant, self.user, str(self.auth_token)) + utils.delete_user(self.tenant, self.user, str(self.auth_token)) self.assertEqual(200, resp_val) self.assertEqual(True, content['user']['enabled']) def test_user_enabled_xml(self): - header = httplib2.Http(".cache") - resp, content = create_user_xml(self.tenant, self.user, - str(self.auth_token)) - url = '%stenants/%s/users/%s/enabled' % (URL, self.tenant, self.user) - data = '<?xml version="1.0" encoding="UTF-8"?> \ - <user xmlns="http://docs.openstack.org/identity/api/v2.0" \ - enabled="true" />' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.auth_token, - "ACCEPT": "application/xml"}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_enabled_xml(self.tenant, + self.user, + str(self.auth_token)) resp_val = int(resp['status']) content = etree.fromstring(content) if resp_val == 500: self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') - delete_user(self.tenant, self.user, str(self.auth_token)) + utils.delete_user(self.tenant, self.user, str(self.auth_token)) self.assertEqual(200, resp_val) self.assertEqual('true', content.get("enabled")) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) def test_user_enabled_bad_request_json(self): - header = httplib2.Http(".cache") - resp, content = create_user(self.tenant, self.user, + h = httplib2.Http(".cache") + utils.create_user(self.tenant, self.user, str(self.auth_token)) url = '%stenants/%s/users/%s/enabled' % (URL, self.tenant, self.user) data = '{"user_bad": { "enabled": true}}' - resp, content = header.request(url, "PUT", body=data, + resp, content = h.request(url, "PUT", body=data, headers={"Content-Type": "application/json", "X-Auth-Token": self.auth_token}) resp_val = int(resp['status']) @@ -1476,18 +1228,18 @@ class set_enabled_test(user_test): self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') - delete_user(self.tenant, self.user, str(self.auth_token)) + utils.delete_user(self.tenant, self.user, str(self.auth_token)) self.assertEqual(400, resp_val) def test_user_enabled_bad_request_xml(self): - header = httplib2.Http(".cache") - resp, content = create_user_xml(self.tenant, self.user, + h = httplib2.Http(".cache") + utils.create_user_xml(self.tenant, self.user, str(self.auth_token)) url = '%stenants/%s/users/%s/enabled' % (URL, self.tenant, self.user) data = '<?xml version="1.0" encoding="UTF-8"?> \ user xmlns="http://docs.openstack.org/identity/api/v2.0" \ enabled="true" />' - resp, content = header.request(url, "PUT", body=data, + resp, content = h.request(url, "PUT", body=data, headers={"Content-Type": "application/xml", "X-Auth-Token": self.auth_token, "ACCEPT": "application/xml"}) @@ -1497,17 +1249,42 @@ class set_enabled_test(user_test): self.fail('Identity Fault') elif resp_val == 503: self.fail('Service Not Available') - delete_user(self.tenant, self.user, str(self.auth_token)) + utils.delete_user(self.tenant, self.user, str(self.auth_token)) self.assertEqual(400, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) - def test_user_enabled_expired_token_json(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/enabled' % (URL, self.tenant, self.user) - data = '{"user": { "enabled": true}}' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/json", - "X-Auth-Token": self.exp_auth_token}) + def test_user_enabled_disabled_tenant(self): + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_enabled_json('0000', + self.user, + str(self.auth_token)) + resp_val = int(resp['status']) + content = json.loads(content) + if resp_val == 500: + self.fail('Identity Fault') + elif resp_val == 503: + self.fail('Service Not Available') + self.assertEqual(403, resp_val) + + def test_user_enabled_disabled_tenant_xml(self): + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_enabled_xml('0000', + self.user, + str(self.auth_token)) + resp_val = int(resp['status']) + content = etree.fromstring(content) + if resp_val == 500: + self.fail('Identity Fault') + elif resp_val == 503: + self.fail('Service Not Available') + self.assertEqual(403, resp_val) + self.assertEqual('application/xml', utils.content_type(resp)) + + def test_user_enabled_expired_token(self): + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_enabled_json(self.tenant, + self.user, + str(self.exp_auth_token)) resp_val = int(resp['status']) content = json.loads(content) if resp_val == 500: @@ -1517,15 +1294,10 @@ class set_enabled_test(user_test): self.assertEqual(403, resp_val) def test_user_enabled_expired_token_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/enabled' % (URL, self.tenant, self.user) - data = '<?xml version="1.0" encoding="UTF-8"?> \ - <user xmlns="http://docs.openstack.org/identity/api/v2.0" \ - enabled="true" />' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.exp_auth_token, - "ACCEPT": "application/xml"}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_enabled_xml(self.tenant, + self.user, + str(self.exp_auth_token)) resp_val = int(resp['status']) content = etree.fromstring(content) if resp_val == 500: @@ -1533,15 +1305,13 @@ class set_enabled_test(user_test): elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(403, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) - def test_user_enabled_disabled_token_json(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/enabled' % (URL, self.tenant, self.user) - data = '{"user": { "enabled": true}}' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/json", - "X-Auth-Token": self.disabled_token}) + def test_user_enabled_disabled_token(self): + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_enabled_json(self.tenant, + self.user, + str(self.disabled_token)) resp_val = int(resp['status']) content = json.loads(content) if resp_val == 500: @@ -1551,15 +1321,10 @@ class set_enabled_test(user_test): self.assertEqual(403, resp_val) def test_user_enabled_disabled_token_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/enabled' % (URL, self.tenant, self.user) - data = '<?xml version="1.0" encoding="UTF-8"?> \ - <user xmlns="http://docs.openstack.org/identity/api/v2.0" \ - enabled="true" />' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.disabled_token, - "ACCEPT": "application/xml"}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_enabled_xml(self.tenant, + self.user, + str(self.disabled_token)) resp_val = int(resp['status']) content = etree.fromstring(content) if resp_val == 500: @@ -1567,15 +1332,13 @@ class set_enabled_test(user_test): elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(403, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) - def test_user_enabled_invalid_token_json(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/enabled' % (URL, self.tenant, self.user) - data = '{"user": { "enabled": true}}' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/json", - "X-Auth-Token": self.invalid_token}) + def test_user_enabled_invalid_token(self): + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_enabled_json(self.tenant, + self.user, + str(self.invalid_token)) resp_val = int(resp['status']) content = json.loads(content) if resp_val == 500: @@ -1585,15 +1348,10 @@ class set_enabled_test(user_test): self.assertEqual(404, resp_val) def test_user_enabled_invalid_token_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/enabled' % (URL, self.tenant, self.user) - data = '<?xml version="1.0" encoding="UTF-8"?> \ - <user xmlns="http://docs.openstack.org/identity/api/v2.0" \ - enabled="true" />' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/xml",\ - "X-Auth-Token": self.invalid_token, - "ACCEPT": "application/xml"}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_enabled_xml(self.tenant, + self.user, + str(self.invalid_token)) resp_val = int(resp['status']) content = etree.fromstring(content) if resp_val == 500: @@ -1601,15 +1359,13 @@ class set_enabled_test(user_test): elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(404, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) - def test_user_enabled_missing_token_json(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/enabled' % (URL, self.tenant, self.user) - data = '{"user": { "enabled": true}}' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/json", - "X-Auth-Token": self.missing_token}) + def test_user_enabled_missing_token(self): + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_enabled_json(self.tenant, + self.user, + str(self.missing_token)) resp_val = int(resp['status']) content = json.loads(content) if resp_val == 500: @@ -1619,15 +1375,10 @@ class set_enabled_test(user_test): self.assertEqual(401, resp_val) def test_user_enabled_missing_token_xml(self): - header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/password' % (URL, self.tenant, self.user) - data = '<?xml version="1.0" encoding="UTF-8"?> \ - <user xmlns="http://docs.openstack.org/identity/api/v2.0" \ - enabled="true" />' - resp, content = header.request(url, "PUT", body=data, - headers={"Content-Type": "application/xml", - "X-Auth-Token": self.missing_token, - "ACCEPT": "application/xml"}) + utils.create_user(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.user_enabled_xml(self.tenant, + self.user, + str(self.missing_token)) resp_val = int(resp['status']) content = etree.fromstring(content) if resp_val == 500: @@ -1635,7 +1386,198 @@ class set_enabled_test(user_test): elif resp_val == 503: self.fail('Service Not Available') self.assertEqual(401, resp_val) - self.assertEqual('application/xml', content_type(resp)) + self.assertEqual('application/xml', utils.content_type(resp)) + + +class AddUserTest(UserTest): + + def setUp(self): + self.token = utils.get_token('joeuser', 'secrete', '1234') + self.tenant = utils.get_another_tenant() + self.password = utils.get_password() + self.email = utils.get_email() + self.user = 'joeuser' + self.userdisabled = utils.get_userdisabled() + self.auth_token = utils.get_auth_token() + self.exp_auth_token = utils.get_exp_auth_token() + self.disabled_token = utils.get_disabled_token() + self.missing_token = utils.get_none_token() + self.invalid_token = utils.get_non_existing_token() + + def tearDown(self): + utils.delete_user(self.tenant, self.user, str(self.auth_token)) + utils.delete_tenant(self.tenant, str(self.auth_token)) + + def test_add_user_tenant(self): + utils.create_tenant(self.tenant, str(self.auth_token)) + resp, content = utils.add_user_json(self.tenant, + self.user, + str(self.auth_token)) + resp_val = int(resp['status']) + if resp_val == 500: + self.fail('Identity Fault') + elif resp_val == 503: + self.fail('Service Not Available') + self.assertEqual(200, resp_val) + + def test_add_user_tenant_xml(self): + utils.create_tenant(self.tenant, str(self.auth_token)) + resp, content = utils.add_user_xml(self.tenant, + self.user, + str(self.auth_token)) + resp_val = int(resp['status']) + if resp_val == 500: + self.fail('Identity Fault') + elif resp_val == 503: + self.fail('Service Not Available') + self.assertEqual(200, resp_val) + + def test_add_user_tenant_conflict(self): + utils.create_tenant(self.tenant, str(self.auth_token)) + utils.add_user_json(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.add_user_json(self.tenant, + self.user, + str(self.auth_token)) + + resp_val = int(resp['status']) + if resp_val == 500: + self.fail('Identity Fault') + elif resp_val == 503: + self.fail('Service Not Available') + self.assertEqual(409, resp_val) + + def test_add_user_tenant_conflict_xml(self): + utils.create_tenant(self.tenant, str(self.auth_token)) + utils.add_user_xml(self.tenant, self.user, str(self.auth_token)) + resp, content = utils.add_user_xml(self.tenant, + self.user, + str(self.auth_token)) + resp_val = int(resp['status']) + if resp_val == 500: + self.fail('Identity Fault') + elif resp_val == 503: + self.fail('Service Not Available') + self.assertEqual(409, resp_val) + + def test_add_user_tenant_expired_token(self): + utils.create_tenant(self.tenant, str(self.auth_token)) + resp, content = utils.add_user_json(self.tenant, + self.user, + str(self.exp_auth_token)) + resp_val = int(resp['status']) + if resp_val == 500: + self.fail('Identity Fault') + elif resp_val == 503: + self.fail('Service Not Available') + self.assertEqual(403, resp_val) + + def test_add_user_tenant_expired_token_xml(self): + utils.create_tenant(self.tenant, str(self.auth_token)) + resp, content = utils.add_user_xml(self.tenant, + self.user, + str(self.exp_auth_token)) + resp_val = int(resp['status']) + if resp_val == 500: + self.fail('Identity Fault') + elif resp_val == 503: + self.fail('Service Not Available') + self.assertEqual(403, resp_val) + + def test_add_user_tenant_disabled_token(self): + utils.create_tenant(self.tenant, str(self.auth_token)) + resp, content = utils.add_user_json(self.tenant, + self.user, + str(self.disabled_token)) + resp_val = int(resp['status']) + if resp_val == 500: + self.fail('Identity Fault') + elif resp_val == 503: + self.fail('Service Not Available') + self.assertEqual(403, resp_val) + + def test_add_user_tenant_disabled_token_xml(self): + utils.create_tenant(self.tenant, str(self.auth_token)) + resp, content = utils.add_user_xml(self.tenant, + self.user, + str(self.disabled_token)) + resp_val = int(resp['status']) + if resp_val == 500: + self.fail('Identity Fault') + elif resp_val == 503: + self.fail('Service Not Available') + self.assertEqual(403, resp_val) + + def test_add_user_tenant_invalid_token(self): + utils.create_tenant(self.tenant, str(self.auth_token)) + resp, content = utils.add_user_json(self.tenant, + self.user, + str(self.invalid_token)) + resp_val = int(resp['status']) + if resp_val == 500: + self.fail('Identity Fault') + elif resp_val == 503: + self.fail('Service Not Available') + self.assertEqual(404, resp_val) + + def test_add_user_tenant_invalid_token_xml(self): + utils.create_tenant(self.tenant, str(self.auth_token)) + resp, content = utils.add_user_xml(self.tenant, + self.user, + str(self.invalid_token)) + resp_val = int(resp['status']) + if resp_val == 500: + self.fail('Identity Fault') + elif resp_val == 503: + self.fail('Service Not Available') + self.assertEqual(404, resp_val) + + def test_add_user_tenant_missing_token(self): + utils.create_tenant(self.tenant, str(self.auth_token)) + resp, content = utils.add_user_json(self.tenant, + self.user, + str(self.missing_token)) + resp_val = int(resp['status']) + if resp_val == 500: + self.fail('Identity Fault') + elif resp_val == 503: + self.fail('Service Not Available') + self.assertEqual(401, resp_val) + + def test_add_user_tenant_missing_token_xml(self): + utils.create_tenant(self.tenant, str(self.auth_token)) + resp, content = utils.add_user_xml(self.tenant, + self.user, + str(self.missing_token)) + resp_val = int(resp['status']) + if resp_val == 500: + self.fail('Identity Fault') + elif resp_val == 503: + self.fail('Service Not Available') + self.assertEqual(401, resp_val) + + def test_add_user_tenant_disabled_tenant(self): + utils.create_tenant(self.tenant, str(self.auth_token)) + resp, content = utils.add_user_json('0000', + self.user, + str(self.auth_token)) + resp_val = int(resp['status']) + if resp_val == 500: + self.fail('Identity Fault') + elif resp_val == 503: + self.fail('Service Not Available') + self.assertEqual(403, resp_val) + + def test_add_user_tenant_disabled_tenant_xml(self): + utils.create_tenant(self.tenant, str(self.auth_token)) + resp, content = utils.add_user_xml('0000', + self.user, + str(self.auth_token)) + resp_val = int(resp['status']) + if resp_val == 500: + self.fail('Identity Fault') + elif resp_val == 503: + self.fail('Service Not Available') + self.assertEqual(403, resp_val) if __name__ == '__main__': unittest.main() diff --git a/test/unit/test_version.py b/test/unit/test_version.py index 76b013ab..3e98935e 100644 --- a/test/unit/test_version.py +++ b/test/unit/test_version.py @@ -1,14 +1,31 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# Copyright (c) 2010-2011 OpenStack, LLC. +# +# 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. + + +import httplib2 import os import sys -# Need to access identity module sys.path.append(os.path.abspath(os.path.join(os.path.abspath(__file__), '..', '..', '..', '..', 'keystone'))) import unittest -import httplib2 + import test_common as utils -class version_test(unittest.TestCase): +class VersionTest(unittest.TestCase): #Given _a_ to make inherited test cases in an order. #here to call below method will call as last test case |
