Merge "Add tests for our cells integration"
This commit is contained in:
		
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										200
									
								
								cratonclient/tests/cassettes/TestCells-test_create.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										200
									
								
								cratonclient/tests/cassettes/TestCells-test_create.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,200 @@ | ||||
| http_interactions: | ||||
| - recorded_at: '2017-03-21T15:20:14' | ||||
|   request: | ||||
|     body: | ||||
|       encoding: utf-8 | ||||
|       string: "{\n  \"name\": \"cells-cloud-TestCells-test_create\"\n}" | ||||
|     headers: | ||||
|       Accept: '*/*' | ||||
|       Accept-Encoding: gzip, deflate | ||||
|       Connection: keep-alive | ||||
|       Content-Length: '45' | ||||
|       Content-Type: application/json | ||||
|       User-Agent: python-cratonclient/0.0.1 | ||||
|       X-Auth-Project: <craton-demo-project> | ||||
|       X-Auth-Token: <craton-demo-token> | ||||
|       X-Auth-User: <craton-demo-username> | ||||
|     method: POST | ||||
|     uri: <craton-url>/clouds | ||||
|   response: | ||||
|     body: | ||||
|       encoding: null | ||||
|       string: "{\n  \"project_id\": \"<craton-demo-project>\",\n  \"name\": \"cells-cloud-TestCells-test_create\"\ | ||||
|         ,\n  \"note\": null,\n  \"updated_at\": null,\n  \"variables\": {},\n  \"\ | ||||
|         created_at\": \"2017-03-21T00:10:38.118921\",\n  \"id\": 14\n}" | ||||
|     headers: | ||||
|       Content-Length: '221' | ||||
|       Content-Type: application/json | ||||
|       Date: Tue, 21 Mar 2017 00:10:38 GMT | ||||
|       Location: <craton-url>/clouds/14 | ||||
|       Server: WSGIServer/0.2 CPython/3.5.2 | ||||
|       x-openstack-request-id: req-f9b76b9e-566d-4280-a969-06e60741e34c | ||||
|     status: | ||||
|       code: 201 | ||||
|       message: CREATED | ||||
|     url: <craton-url>/clouds | ||||
| - recorded_at: '2017-03-21T15:20:14' | ||||
|   request: | ||||
|     body: | ||||
|       encoding: utf-8 | ||||
|       string: "{\n  \"name\": \"cells-region-TestCells-test_create\",\n  \"cloud_id\"\ | ||||
|         : 14\n}" | ||||
|     headers: | ||||
|       Accept: '*/*' | ||||
|       Accept-Encoding: gzip, deflate | ||||
|       Connection: keep-alive | ||||
|       Content-Length: '62' | ||||
|       Content-Type: application/json | ||||
|       User-Agent: python-cratonclient/0.0.1 | ||||
|       X-Auth-Project: <craton-demo-project> | ||||
|       X-Auth-Token: <craton-demo-token> | ||||
|       X-Auth-User: <craton-demo-username> | ||||
|     method: POST | ||||
|     uri: <craton-url>/regions | ||||
|   response: | ||||
|     body: | ||||
|       encoding: null | ||||
|       string: "{\n  \"project_id\": \"<craton-demo-project>\",\n  \"name\": \"cells-region-TestCells-test_create\"\ | ||||
|         ,\n  \"note\": null,\n  \"updated_at\": null,\n  \"variables\": {},\n  \"\ | ||||
|         created_at\": \"2017-03-21T00:10:38.212043\",\n  \"id\": 10,\n  \"cloud_id\"\ | ||||
|         : 14\n}" | ||||
|     headers: | ||||
|       Content-Length: '240' | ||||
|       Content-Type: application/json | ||||
|       Date: Tue, 21 Mar 2017 00:10:38 GMT | ||||
|       Location: <craton-url>/regions/10 | ||||
|       Server: WSGIServer/0.2 CPython/3.5.2 | ||||
|       x-openstack-request-id: req-689fd261-4625-4b28-b973-54c3ff7b9025 | ||||
|     status: | ||||
|       code: 201 | ||||
|       message: CREATED | ||||
|     url: <craton-url>/regions | ||||
| - recorded_at: '2017-03-21T15:20:14' | ||||
|   request: | ||||
|     body: | ||||
|       encoding: utf-8 | ||||
|       string: "{\n  \"variables\": {\n    \"a\": \"b\"\n  },\n  \"name\": \"cell-0\"\ | ||||
|         ,\n  \"cloud_id\": 14,\n  \"region_id\": 10,\n  \"note\": \"This is a test\ | ||||
|         \ cell. There are many like it, but this is mine\"\n}" | ||||
|     headers: | ||||
|       Accept: '*/*' | ||||
|       Accept-Encoding: gzip, deflate | ||||
|       Connection: keep-alive | ||||
|       Content-Length: '149' | ||||
|       Content-Type: application/json | ||||
|       User-Agent: python-cratonclient/0.0.1 | ||||
|       X-Auth-Project: <craton-demo-project> | ||||
|       X-Auth-Token: <craton-demo-token> | ||||
|       X-Auth-User: <craton-demo-username> | ||||
|     method: POST | ||||
|     uri: <craton-url>/cells | ||||
|   response: | ||||
|     body: | ||||
|       encoding: null | ||||
|       string: "{\n  \"project_id\": \"<craton-demo-project>\",\n  \"name\": \"cell-0\"\ | ||||
|         ,\n  \"note\": \"This is a test cell. There are many like it, but this is\ | ||||
|         \ mine\",\n  \"updated_at\": null,\n  \"variables\": {\n    \"a\": \"b\"\n\ | ||||
|         \  },\n  \"created_at\": \"2017-03-21T00:10:38.345855\",\n  \"id\": 30,\n\ | ||||
|         \  \"region_id\": 10,\n  \"cloud_id\": 14\n}" | ||||
|     headers: | ||||
|       Content-Length: '306' | ||||
|       Content-Type: application/json | ||||
|       Date: Tue, 21 Mar 2017 00:10:38 GMT | ||||
|       Location: <craton-url>/cells/30 | ||||
|       Server: WSGIServer/0.2 CPython/3.5.2 | ||||
|       x-openstack-request-id: req-d5262b2f-63bd-4eb5-80a2-d0d5a9d7c79e | ||||
|     status: | ||||
|       code: 201 | ||||
|       message: CREATED | ||||
|     url: <craton-url>/cells | ||||
| - recorded_at: '2017-03-21T15:20:14' | ||||
|   request: | ||||
|     body: | ||||
|       encoding: utf-8 | ||||
|       string: '' | ||||
|     headers: | ||||
|       Accept: '*/*' | ||||
|       Accept-Encoding: gzip, deflate | ||||
|       Connection: keep-alive | ||||
|       Content-Length: '0' | ||||
|       User-Agent: python-cratonclient/0.0.1 | ||||
|       X-Auth-Project: <craton-demo-project> | ||||
|       X-Auth-Token: <craton-demo-token> | ||||
|       X-Auth-User: <craton-demo-username> | ||||
|     method: DELETE | ||||
|     uri: <craton-url>/cells/30 | ||||
|   response: | ||||
|     body: | ||||
|       encoding: null | ||||
|       string: '' | ||||
|     headers: | ||||
|       Content-Length: '0' | ||||
|       Content-Type: application/json | ||||
|       Date: Tue, 21 Mar 2017 00:10:38 GMT | ||||
|       Server: WSGIServer/0.2 CPython/3.5.2 | ||||
|       x-openstack-request-id: req-6431152a-df0a-461b-8983-7a92eb58939b | ||||
|     status: | ||||
|       code: 204 | ||||
|       message: NO CONTENT | ||||
|     url: <craton-url>/cells/30 | ||||
| - recorded_at: '2017-03-21T15:20:14' | ||||
|   request: | ||||
|     body: | ||||
|       encoding: utf-8 | ||||
|       string: '' | ||||
|     headers: | ||||
|       Accept: '*/*' | ||||
|       Accept-Encoding: gzip, deflate | ||||
|       Connection: keep-alive | ||||
|       Content-Length: '0' | ||||
|       User-Agent: python-cratonclient/0.0.1 | ||||
|       X-Auth-Project: <craton-demo-project> | ||||
|       X-Auth-Token: <craton-demo-token> | ||||
|       X-Auth-User: <craton-demo-username> | ||||
|     method: DELETE | ||||
|     uri: <craton-url>/regions/10 | ||||
|   response: | ||||
|     body: | ||||
|       encoding: null | ||||
|       string: '' | ||||
|     headers: | ||||
|       Content-Length: '0' | ||||
|       Content-Type: application/json | ||||
|       Date: Tue, 21 Mar 2017 00:10:38 GMT | ||||
|       Server: WSGIServer/0.2 CPython/3.5.2 | ||||
|       x-openstack-request-id: req-92e9871b-7c2b-49ad-a778-4ec9f8f7047d | ||||
|     status: | ||||
|       code: 204 | ||||
|       message: NO CONTENT | ||||
|     url: <craton-url>/regions/10 | ||||
| - recorded_at: '2017-03-21T15:20:14' | ||||
|   request: | ||||
|     body: | ||||
|       encoding: utf-8 | ||||
|       string: '' | ||||
|     headers: | ||||
|       Accept: '*/*' | ||||
|       Accept-Encoding: gzip, deflate | ||||
|       Connection: keep-alive | ||||
|       Content-Length: '0' | ||||
|       User-Agent: python-cratonclient/0.0.1 | ||||
|       X-Auth-Project: <craton-demo-project> | ||||
|       X-Auth-Token: <craton-demo-token> | ||||
|       X-Auth-User: <craton-demo-username> | ||||
|     method: DELETE | ||||
|     uri: <craton-url>/clouds/14 | ||||
|   response: | ||||
|     body: | ||||
|       encoding: null | ||||
|       string: '' | ||||
|     headers: | ||||
|       Content-Length: '0' | ||||
|       Content-Type: application/json | ||||
|       Date: Tue, 21 Mar 2017 00:10:38 GMT | ||||
|       Server: WSGIServer/0.2 CPython/3.5.2 | ||||
|       x-openstack-request-id: req-8c1c3e29-5d12-40a0-b7df-6ecf991e431b | ||||
|     status: | ||||
|       code: 204 | ||||
|       message: NO CONTENT | ||||
|     url: <craton-url>/clouds/14 | ||||
| recorded_with: betamax/0.8.0 | ||||
							
								
								
									
										227
									
								
								cratonclient/tests/cassettes/TestCells-test_delete.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										227
									
								
								cratonclient/tests/cassettes/TestCells-test_delete.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,227 @@ | ||||
| http_interactions: | ||||
| - recorded_at: '2017-03-21T15:20:14' | ||||
|   request: | ||||
|     body: | ||||
|       encoding: utf-8 | ||||
|       string: "{\n  \"name\": \"cells-cloud-TestCells-test_delete\"\n}" | ||||
|     headers: | ||||
|       Accept: '*/*' | ||||
|       Accept-Encoding: gzip, deflate | ||||
|       Connection: keep-alive | ||||
|       Content-Length: '45' | ||||
|       Content-Type: application/json | ||||
|       User-Agent: python-cratonclient/0.0.1 | ||||
|       X-Auth-Project: <craton-demo-project> | ||||
|       X-Auth-Token: <craton-demo-token> | ||||
|       X-Auth-User: <craton-demo-username> | ||||
|     method: POST | ||||
|     uri: <craton-url>/clouds | ||||
|   response: | ||||
|     body: | ||||
|       encoding: null | ||||
|       string: "{\n  \"project_id\": \"<craton-demo-project>\",\n  \"name\": \"cells-cloud-TestCells-test_delete\"\ | ||||
|         ,\n  \"note\": null,\n  \"updated_at\": null,\n  \"variables\": {},\n  \"\ | ||||
|         created_at\": \"2017-03-21T00:10:38.237204\",\n  \"id\": 15\n}" | ||||
|     headers: | ||||
|       Content-Length: '221' | ||||
|       Content-Type: application/json | ||||
|       Date: Tue, 21 Mar 2017 00:10:38 GMT | ||||
|       Location: <craton-url>/clouds/15 | ||||
|       Server: WSGIServer/0.2 CPython/3.5.2 | ||||
|       x-openstack-request-id: req-095849cf-b6ae-4c5f-a616-491a4381d9a7 | ||||
|     status: | ||||
|       code: 201 | ||||
|       message: CREATED | ||||
|     url: <craton-url>/clouds | ||||
| - recorded_at: '2017-03-21T15:20:14' | ||||
|   request: | ||||
|     body: | ||||
|       encoding: utf-8 | ||||
|       string: "{\n  \"name\": \"cells-region-TestCells-test_delete\",\n  \"cloud_id\"\ | ||||
|         : 15\n}" | ||||
|     headers: | ||||
|       Accept: '*/*' | ||||
|       Accept-Encoding: gzip, deflate | ||||
|       Connection: keep-alive | ||||
|       Content-Length: '62' | ||||
|       Content-Type: application/json | ||||
|       User-Agent: python-cratonclient/0.0.1 | ||||
|       X-Auth-Project: <craton-demo-project> | ||||
|       X-Auth-Token: <craton-demo-token> | ||||
|       X-Auth-User: <craton-demo-username> | ||||
|     method: POST | ||||
|     uri: <craton-url>/regions | ||||
|   response: | ||||
|     body: | ||||
|       encoding: null | ||||
|       string: "{\n  \"project_id\": \"<craton-demo-project>\",\n  \"name\": \"cells-region-TestCells-test_delete\"\ | ||||
|         ,\n  \"note\": null,\n  \"updated_at\": null,\n  \"variables\": {},\n  \"\ | ||||
|         created_at\": \"2017-03-21T00:10:38.370396\",\n  \"id\": 11,\n  \"cloud_id\"\ | ||||
|         : 15\n}" | ||||
|     headers: | ||||
|       Content-Length: '240' | ||||
|       Content-Type: application/json | ||||
|       Date: Tue, 21 Mar 2017 00:10:38 GMT | ||||
|       Location: <craton-url>/regions/11 | ||||
|       Server: WSGIServer/0.2 CPython/3.5.2 | ||||
|       x-openstack-request-id: req-2d162165-4187-4d44-bea3-9c1760438c60 | ||||
|     status: | ||||
|       code: 201 | ||||
|       message: CREATED | ||||
|     url: <craton-url>/regions | ||||
| - recorded_at: '2017-03-21T15:20:14' | ||||
|   request: | ||||
|     body: | ||||
|       encoding: utf-8 | ||||
|       string: "{\n  \"name\": \"cell-to-delete\",\n  \"cloud_id\": 15,\n  \"region_id\"\ | ||||
|         : 11\n}" | ||||
|     headers: | ||||
|       Accept: '*/*' | ||||
|       Accept-Encoding: gzip, deflate | ||||
|       Connection: keep-alive | ||||
|       Content-Length: '59' | ||||
|       Content-Type: application/json | ||||
|       User-Agent: python-cratonclient/0.0.1 | ||||
|       X-Auth-Project: <craton-demo-project> | ||||
|       X-Auth-Token: <craton-demo-token> | ||||
|       X-Auth-User: <craton-demo-username> | ||||
|     method: POST | ||||
|     uri: <craton-url>/cells | ||||
|   response: | ||||
|     body: | ||||
|       encoding: null | ||||
|       string: "{\n  \"project_id\": \"<craton-demo-project>\",\n  \"name\": \"cell-to-delete\"\ | ||||
|         ,\n  \"note\": null,\n  \"updated_at\": null,\n  \"variables\": {},\n  \"\ | ||||
|         created_at\": \"2017-03-21T00:10:38.487204\",\n  \"id\": 33,\n  \"region_id\"\ | ||||
|         : 11,\n  \"cloud_id\": 15\n}" | ||||
|     headers: | ||||
|       Content-Length: '239' | ||||
|       Content-Type: application/json | ||||
|       Date: Tue, 21 Mar 2017 00:10:38 GMT | ||||
|       Location: <craton-url>/cells/33 | ||||
|       Server: WSGIServer/0.2 CPython/3.5.2 | ||||
|       x-openstack-request-id: req-81fee3a8-7f8c-4424-b8d3-d790b294efd6 | ||||
|     status: | ||||
|       code: 201 | ||||
|       message: CREATED | ||||
|     url: <craton-url>/cells | ||||
| - recorded_at: '2017-03-21T15:20:14' | ||||
|   request: | ||||
|     body: | ||||
|       encoding: utf-8 | ||||
|       string: '' | ||||
|     headers: | ||||
|       Accept: '*/*' | ||||
|       Accept-Encoding: gzip, deflate | ||||
|       Connection: keep-alive | ||||
|       Content-Length: '0' | ||||
|       User-Agent: python-cratonclient/0.0.1 | ||||
|       X-Auth-Project: <craton-demo-project> | ||||
|       X-Auth-Token: <craton-demo-token> | ||||
|       X-Auth-User: <craton-demo-username> | ||||
|     method: DELETE | ||||
|     uri: <craton-url>/cells/33 | ||||
|   response: | ||||
|     body: | ||||
|       encoding: null | ||||
|       string: '' | ||||
|     headers: | ||||
|       Content-Length: '0' | ||||
|       Content-Type: application/json | ||||
|       Date: Tue, 21 Mar 2017 00:10:38 GMT | ||||
|       Server: WSGIServer/0.2 CPython/3.5.2 | ||||
|       x-openstack-request-id: req-755ac568-87ef-4a36-ae4c-9639e8306df7 | ||||
|     status: | ||||
|       code: 204 | ||||
|       message: NO CONTENT | ||||
|     url: <craton-url>/cells/33 | ||||
| - recorded_at: '2017-03-21T15:20:14' | ||||
|   request: | ||||
|     body: | ||||
|       encoding: utf-8 | ||||
|       string: '' | ||||
|     headers: | ||||
|       Accept: '*/*' | ||||
|       Accept-Encoding: gzip, deflate | ||||
|       Connection: keep-alive | ||||
|       User-Agent: python-cratonclient/0.0.1 | ||||
|       X-Auth-Project: <craton-demo-project> | ||||
|       X-Auth-Token: <craton-demo-token> | ||||
|       X-Auth-User: <craton-demo-username> | ||||
|     method: GET | ||||
|     uri: <craton-url>/cells/33 | ||||
|   response: | ||||
|     body: | ||||
|       encoding: utf-8 | ||||
|       string: '{"message": "Not Found", "status": 404}' | ||||
|     headers: | ||||
|       Content-Length: '46' | ||||
|       Content-Type: text/html; charset=utf-8 | ||||
|       Date: Tue, 21 Mar 2017 00:10:38 GMT | ||||
|       Server: WSGIServer/0.2 CPython/3.5.2 | ||||
|       x-openstack-request-id: req-67c08f6b-a2f5-4ce9-a12e-c34119d9f521 | ||||
|     status: | ||||
|       code: 404 | ||||
|       message: NOT FOUND | ||||
|     url: <craton-url>/cells/33 | ||||
| - recorded_at: '2017-03-21T15:20:14' | ||||
|   request: | ||||
|     body: | ||||
|       encoding: utf-8 | ||||
|       string: '' | ||||
|     headers: | ||||
|       Accept: '*/*' | ||||
|       Accept-Encoding: gzip, deflate | ||||
|       Connection: keep-alive | ||||
|       Content-Length: '0' | ||||
|       User-Agent: python-cratonclient/0.0.1 | ||||
|       X-Auth-Project: <craton-demo-project> | ||||
|       X-Auth-Token: <craton-demo-token> | ||||
|       X-Auth-User: <craton-demo-username> | ||||
|     method: DELETE | ||||
|     uri: <craton-url>/regions/11 | ||||
|   response: | ||||
|     body: | ||||
|       encoding: null | ||||
|       string: '' | ||||
|     headers: | ||||
|       Content-Length: '0' | ||||
|       Content-Type: application/json | ||||
|       Date: Tue, 21 Mar 2017 00:10:38 GMT | ||||
|       Server: WSGIServer/0.2 CPython/3.5.2 | ||||
|       x-openstack-request-id: req-c97e15dc-9562-4e9e-8a73-9e63fc7e2951 | ||||
|     status: | ||||
|       code: 204 | ||||
|       message: NO CONTENT | ||||
|     url: <craton-url>/regions/11 | ||||
| - recorded_at: '2017-03-21T15:20:15' | ||||
|   request: | ||||
|     body: | ||||
|       encoding: utf-8 | ||||
|       string: '' | ||||
|     headers: | ||||
|       Accept: '*/*' | ||||
|       Accept-Encoding: gzip, deflate | ||||
|       Connection: keep-alive | ||||
|       Content-Length: '0' | ||||
|       User-Agent: python-cratonclient/0.0.1 | ||||
|       X-Auth-Project: <craton-demo-project> | ||||
|       X-Auth-Token: <craton-demo-token> | ||||
|       X-Auth-User: <craton-demo-username> | ||||
|     method: DELETE | ||||
|     uri: <craton-url>/clouds/15 | ||||
|   response: | ||||
|     body: | ||||
|       encoding: null | ||||
|       string: '' | ||||
|     headers: | ||||
|       Content-Length: '0' | ||||
|       Content-Type: application/json | ||||
|       Date: Tue, 21 Mar 2017 00:10:38 GMT | ||||
|       Server: WSGIServer/0.2 CPython/3.5.2 | ||||
|       x-openstack-request-id: req-0dfe349e-fe39-40c5-bfab-ccca0456f142 | ||||
|     status: | ||||
|       code: 204 | ||||
|       message: NO CONTENT | ||||
|     url: <craton-url>/clouds/15 | ||||
| recorded_with: betamax/0.8.0 | ||||
							
								
								
									
										4774
									
								
								cratonclient/tests/cassettes/TestCells-test_manual_pagination.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4774
									
								
								cratonclient/tests/cassettes/TestCells-test_manual_pagination.yaml
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -0,0 +1,234 @@ | ||||
| http_interactions: | ||||
| - recorded_at: '2017-03-21T15:20:14' | ||||
|   request: | ||||
|     body: | ||||
|       encoding: utf-8 | ||||
|       string: "{\n  \"name\": \"cells-cloud-TestCells-test_update_existing_cell\"\n\ | ||||
|         }" | ||||
|     headers: | ||||
|       Accept: '*/*' | ||||
|       Accept-Encoding: gzip, deflate | ||||
|       Connection: keep-alive | ||||
|       Content-Length: '59' | ||||
|       Content-Type: application/json | ||||
|       User-Agent: python-cratonclient/0.0.1 | ||||
|       X-Auth-Project: <craton-demo-project> | ||||
|       X-Auth-Token: <craton-demo-token> | ||||
|       X-Auth-User: <craton-demo-username> | ||||
|     method: POST | ||||
|     uri: <craton-url>/clouds | ||||
|   response: | ||||
|     body: | ||||
|       encoding: null | ||||
|       string: "{\n  \"project_id\": \"<craton-demo-project>\",\n  \"name\": \"cells-cloud-TestCells-test_update_existing_cell\"\ | ||||
|         ,\n  \"note\": null,\n  \"updated_at\": null,\n  \"variables\": {},\n  \"\ | ||||
|         created_at\": \"2017-03-21T00:10:38.318952\",\n  \"id\": 16\n}" | ||||
|     headers: | ||||
|       Content-Length: '235' | ||||
|       Content-Type: application/json | ||||
|       Date: Tue, 21 Mar 2017 00:10:38 GMT | ||||
|       Location: <craton-url>/clouds/16 | ||||
|       Server: WSGIServer/0.2 CPython/3.5.2 | ||||
|       x-openstack-request-id: req-5b08fd6a-d2c2-4ec1-bddc-c92c2d544e2f | ||||
|     status: | ||||
|       code: 201 | ||||
|       message: CREATED | ||||
|     url: <craton-url>/clouds | ||||
| - recorded_at: '2017-03-21T15:20:14' | ||||
|   request: | ||||
|     body: | ||||
|       encoding: utf-8 | ||||
|       string: "{\n  \"name\": \"cells-region-TestCells-test_update_existing_cell\"\ | ||||
|         ,\n  \"cloud_id\": 16\n}" | ||||
|     headers: | ||||
|       Accept: '*/*' | ||||
|       Accept-Encoding: gzip, deflate | ||||
|       Connection: keep-alive | ||||
|       Content-Length: '76' | ||||
|       Content-Type: application/json | ||||
|       User-Agent: python-cratonclient/0.0.1 | ||||
|       X-Auth-Project: <craton-demo-project> | ||||
|       X-Auth-Token: <craton-demo-token> | ||||
|       X-Auth-User: <craton-demo-username> | ||||
|     method: POST | ||||
|     uri: <craton-url>/regions | ||||
|   response: | ||||
|     body: | ||||
|       encoding: null | ||||
|       string: "{\n  \"project_id\": \"<craton-demo-project>\",\n  \"name\": \"cells-region-TestCells-test_update_existing_cell\"\ | ||||
|         ,\n  \"note\": null,\n  \"updated_at\": null,\n  \"variables\": {},\n  \"\ | ||||
|         created_at\": \"2017-03-21T00:10:38.443485\",\n  \"id\": 12,\n  \"cloud_id\"\ | ||||
|         : 16\n}" | ||||
|     headers: | ||||
|       Content-Length: '254' | ||||
|       Content-Type: application/json | ||||
|       Date: Tue, 21 Mar 2017 00:10:38 GMT | ||||
|       Location: <craton-url>/regions/12 | ||||
|       Server: WSGIServer/0.2 CPython/3.5.2 | ||||
|       x-openstack-request-id: req-0b5cffb5-81f1-4580-847a-8d282a3479ae | ||||
|     status: | ||||
|       code: 201 | ||||
|       message: CREATED | ||||
|     url: <craton-url>/regions | ||||
| - recorded_at: '2017-03-21T15:20:14' | ||||
|   request: | ||||
|     body: | ||||
|       encoding: utf-8 | ||||
|       string: "{\n  \"variables\": {\n    \"out-with\": \"the-old\"\n  },\n  \"name\"\ | ||||
|         : \"cell-to-update\",\n  \"cloud_id\": 16,\n  \"region_id\": 12,\n  \"note\"\ | ||||
|         : \"Original note\"\n}" | ||||
|     headers: | ||||
|       Accept: '*/*' | ||||
|       Accept-Encoding: gzip, deflate | ||||
|       Connection: keep-alive | ||||
|       Content-Length: '122' | ||||
|       Content-Type: application/json | ||||
|       User-Agent: python-cratonclient/0.0.1 | ||||
|       X-Auth-Project: <craton-demo-project> | ||||
|       X-Auth-Token: <craton-demo-token> | ||||
|       X-Auth-User: <craton-demo-username> | ||||
|     method: POST | ||||
|     uri: <craton-url>/cells | ||||
|   response: | ||||
|     body: | ||||
|       encoding: null | ||||
|       string: "{\n  \"project_id\": \"<craton-demo-project>\",\n  \"name\": \"cell-to-update\"\ | ||||
|         ,\n  \"note\": \"Original note\",\n  \"updated_at\": null,\n  \"variables\"\ | ||||
|         : {\n    \"out-with\": \"the-old\"\n  },\n  \"created_at\": \"2017-03-21T00:10:38.584541\"\ | ||||
|         ,\n  \"id\": 36,\n  \"region_id\": 12,\n  \"cloud_id\": 16\n}" | ||||
|     headers: | ||||
|       Content-Length: '279' | ||||
|       Content-Type: application/json | ||||
|       Date: Tue, 21 Mar 2017 00:10:38 GMT | ||||
|       Location: <craton-url>/cells/36 | ||||
|       Server: WSGIServer/0.2 CPython/3.5.2 | ||||
|       x-openstack-request-id: req-091847d6-f965-4ee1-a898-0bbb61c1dd87 | ||||
|     status: | ||||
|       code: 201 | ||||
|       message: CREATED | ||||
|     url: <craton-url>/cells | ||||
| - recorded_at: '2017-03-21T15:20:14' | ||||
|   request: | ||||
|     body: | ||||
|       encoding: utf-8 | ||||
|       string: "{\n  \"note\": \"Updated note.\"\n}" | ||||
|     headers: | ||||
|       Accept: '*/*' | ||||
|       Accept-Encoding: gzip, deflate | ||||
|       Connection: keep-alive | ||||
|       Content-Length: '25' | ||||
|       Content-Type: application/json | ||||
|       User-Agent: python-cratonclient/0.0.1 | ||||
|       X-Auth-Project: <craton-demo-project> | ||||
|       X-Auth-Token: <craton-demo-token> | ||||
|       X-Auth-User: <craton-demo-username> | ||||
|     method: PUT | ||||
|     uri: <craton-url>/cells/36 | ||||
|   response: | ||||
|     body: | ||||
|       encoding: null | ||||
|       string: "{\n  \"project_id\": \"<craton-demo-project>\",\n  \"name\": \"cell-to-update\"\ | ||||
|         ,\n  \"note\": \"Updated note.\",\n  \"updated_at\": \"2017-03-21T00:10:38.693373\"\ | ||||
|         ,\n  \"created_at\": \"2017-03-21T00:10:38.000000\",\n  \"id\": 36,\n  \"\ | ||||
|         region_id\": 12,\n  \"cloud_id\": 16\n}" | ||||
|     headers: | ||||
|       Content-Length: '255' | ||||
|       Content-Type: application/json | ||||
|       Date: Tue, 21 Mar 2017 00:10:38 GMT | ||||
|       Server: WSGIServer/0.2 CPython/3.5.2 | ||||
|       x-openstack-request-id: req-893bb83f-8327-4047-8dd3-d304f16812b1 | ||||
|     status: | ||||
|       code: 200 | ||||
|       message: OK | ||||
|     url: <craton-url>/cells/36 | ||||
| - recorded_at: '2017-03-21T15:20:14' | ||||
|   request: | ||||
|     body: | ||||
|       encoding: utf-8 | ||||
|       string: '' | ||||
|     headers: | ||||
|       Accept: '*/*' | ||||
|       Accept-Encoding: gzip, deflate | ||||
|       Connection: keep-alive | ||||
|       Content-Length: '0' | ||||
|       User-Agent: python-cratonclient/0.0.1 | ||||
|       X-Auth-Project: <craton-demo-project> | ||||
|       X-Auth-Token: <craton-demo-token> | ||||
|       X-Auth-User: <craton-demo-username> | ||||
|     method: DELETE | ||||
|     uri: <craton-url>/cells/36 | ||||
|   response: | ||||
|     body: | ||||
|       encoding: null | ||||
|       string: '' | ||||
|     headers: | ||||
|       Content-Length: '0' | ||||
|       Content-Type: application/json | ||||
|       Date: Tue, 21 Mar 2017 00:10:38 GMT | ||||
|       Server: WSGIServer/0.2 CPython/3.5.2 | ||||
|       x-openstack-request-id: req-31e44ca6-df4c-4a07-88b1-2b5e6afd06e0 | ||||
|     status: | ||||
|       code: 204 | ||||
|       message: NO CONTENT | ||||
|     url: <craton-url>/cells/36 | ||||
| - recorded_at: '2017-03-21T15:20:15' | ||||
|   request: | ||||
|     body: | ||||
|       encoding: utf-8 | ||||
|       string: '' | ||||
|     headers: | ||||
|       Accept: '*/*' | ||||
|       Accept-Encoding: gzip, deflate | ||||
|       Connection: keep-alive | ||||
|       Content-Length: '0' | ||||
|       User-Agent: python-cratonclient/0.0.1 | ||||
|       X-Auth-Project: <craton-demo-project> | ||||
|       X-Auth-Token: <craton-demo-token> | ||||
|       X-Auth-User: <craton-demo-username> | ||||
|     method: DELETE | ||||
|     uri: <craton-url>/regions/12 | ||||
|   response: | ||||
|     body: | ||||
|       encoding: null | ||||
|       string: '' | ||||
|     headers: | ||||
|       Content-Length: '0' | ||||
|       Content-Type: application/json | ||||
|       Date: Tue, 21 Mar 2017 00:10:38 GMT | ||||
|       Server: WSGIServer/0.2 CPython/3.5.2 | ||||
|       x-openstack-request-id: req-d89882d3-a917-4d72-8028-29e8f9638397 | ||||
|     status: | ||||
|       code: 204 | ||||
|       message: NO CONTENT | ||||
|     url: <craton-url>/regions/12 | ||||
| - recorded_at: '2017-03-21T15:20:15' | ||||
|   request: | ||||
|     body: | ||||
|       encoding: utf-8 | ||||
|       string: '' | ||||
|     headers: | ||||
|       Accept: '*/*' | ||||
|       Accept-Encoding: gzip, deflate | ||||
|       Connection: keep-alive | ||||
|       Content-Length: '0' | ||||
|       User-Agent: python-cratonclient/0.0.1 | ||||
|       X-Auth-Project: <craton-demo-project> | ||||
|       X-Auth-Token: <craton-demo-token> | ||||
|       X-Auth-User: <craton-demo-username> | ||||
|     method: DELETE | ||||
|     uri: <craton-url>/clouds/16 | ||||
|   response: | ||||
|     body: | ||||
|       encoding: null | ||||
|       string: '' | ||||
|     headers: | ||||
|       Content-Length: '0' | ||||
|       Content-Type: application/json | ||||
|       Date: Tue, 21 Mar 2017 00:10:39 GMT | ||||
|       Server: WSGIServer/0.2 CPython/3.5.2 | ||||
|       x-openstack-request-id: req-d1881451-1653-4c6d-b533-d5dc59382939 | ||||
|     status: | ||||
|       code: 204 | ||||
|       message: NO CONTENT | ||||
|     url: <craton-url>/clouds/16 | ||||
| recorded_with: betamax/0.8.0 | ||||
| @@ -74,6 +74,26 @@ class BetamaxTestCase(base.TestCase): | ||||
|             'project': CRATON_ROOT_PROJECT, | ||||
|         } | ||||
|  | ||||
|     def cleanupHost(self, host): | ||||
|         """Add a cleanup task for the host.""" | ||||
|         self.addCleanup(self.client.hosts.delete, host.id) | ||||
|         return host | ||||
|  | ||||
|     def cleanupCloud(self, cloud): | ||||
|         """Add a cleanup task for the cloud.""" | ||||
|         self.addCleanup(self.client.clouds.delete, cloud.id) | ||||
|         return cloud | ||||
|  | ||||
|     def cleanupRegion(self, region): | ||||
|         """Add a cleanup task for the region.""" | ||||
|         self.addCleanup(self.client.regions.delete, region.id) | ||||
|         return region | ||||
|  | ||||
|     def cleanupCell(self, cell): | ||||
|         """Add a cleanup task for the cell.""" | ||||
|         self.addCleanup(self.client.cells.delete, cell.id) | ||||
|         return cell | ||||
|  | ||||
|     def create_client(self, username, token, project): | ||||
|         """Create a Craton client using Craton Auth.""" | ||||
|         self.session = auth.craton_auth( | ||||
|   | ||||
							
								
								
									
										122
									
								
								cratonclient/tests/integration/v1/test_cells.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										122
									
								
								cratonclient/tests/integration/v1/test_cells.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,122 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
|  | ||||
| # 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. | ||||
| """Module containing the cratonclient.v1.cells integration tests.""" | ||||
|  | ||||
| from cratonclient import exceptions | ||||
| from cratonclient.tests.integration import base | ||||
|  | ||||
|  | ||||
| class TestCells(base.BetamaxTestCase): | ||||
|     """CellsManager integration tests.""" | ||||
|  | ||||
|     def setUp(self): | ||||
|         """Prepare our cells test case.""" | ||||
|         super(TestCells, self).setUp() | ||||
|         self.create_demo_client() | ||||
|         self.cloud = self.cleanupCloud(self.client.clouds.create( | ||||
|             name='cells-cloud-{}'.format(self.cassette_name) | ||||
|         )) | ||||
|         self.region = self.cleanupRegion(self.client.regions.create( | ||||
|             name='cells-region-{}'.format(self.cassette_name), | ||||
|             cloud_id=self.cloud.id, | ||||
|         )) | ||||
|  | ||||
|     def test_create(self): | ||||
|         """Test creation of a cell via the API.""" | ||||
|         note = 'This is a test cell. There are many like it, but this is mine' | ||||
|         cell = self.cleanupCell(self.client.cells.create( | ||||
|             name='cell-0', | ||||
|             region_id=self.region.id, | ||||
|             cloud_id=self.cloud.id, | ||||
|             note=note, | ||||
|             variables={'a': 'b'}, | ||||
|         )) | ||||
|  | ||||
|         self.assertEqual('cell-0', cell.name) | ||||
|         self.assertEqual(self.region.id, cell.region_id) | ||||
|         self.assertEqual(self.cloud.id, cell.cloud_id) | ||||
|         self.assertEqual(note, cell.note) | ||||
|  | ||||
|     def test_delete(self): | ||||
|         """Test deleting a cell after creating it.""" | ||||
|         cell = self.client.cells.create( | ||||
|             name='cell-to-delete', | ||||
|             region_id=self.region.id, | ||||
|             cloud_id=self.cloud.id, | ||||
|         ) | ||||
|  | ||||
|         self.assertEqual('cell-to-delete', cell.name) | ||||
|         self.assertTrue(self.client.cells.delete(cell.id)) | ||||
|         self.assertRaises(exceptions.NotFound, self.client.cells.get, cell.id) | ||||
|  | ||||
|     def test_autopagination_when_listing(self): | ||||
|         """Verify the client autopaginates lists of cells.""" | ||||
|         note_str = 'This was created automatically for pagination. ({}/63)' | ||||
|         for i in range(0, 63): | ||||
|             self.cleanupCell(self.client.cells.create( | ||||
|                 name='pagination-cell-{}'.format(i), | ||||
|                 region_id=self.region.id, | ||||
|                 cloud_id=self.cloud.id, | ||||
|                 note=note_str.format(i), | ||||
|             )) | ||||
|  | ||||
|         cells = list(self.client.cells.list()) | ||||
|         self.assertEqual(63, len(cells)) | ||||
|  | ||||
|     def test_manual_pagination(self): | ||||
|         """Verify manual pagination of cells.""" | ||||
|         note_str = 'This was created automatically for pagination. ({}/63)' | ||||
|         for i in range(0, 63): | ||||
|             self.cleanupCell(self.client.cells.create( | ||||
|                 name='pagination-cell-{}'.format(i), | ||||
|                 region_id=self.region.id, | ||||
|                 cloud_id=self.cloud.id, | ||||
|                 note=note_str.format(i), | ||||
|             )) | ||||
|  | ||||
|         cells = list(self.client.cells.list(autopaginate=False)) | ||||
|         self.assertEqual(30, len(cells)) | ||||
|  | ||||
|         next_page = list(self.client.cells.list( | ||||
|             marker=cells[-1].id, | ||||
|             autopaginate=False, | ||||
|         )) | ||||
|         self.assertEqual(30, len(next_page)) | ||||
|  | ||||
|         last_page = list(self.client.cells.list( | ||||
|             marker=next_page[-1].id, | ||||
|             autopaginate=False, | ||||
|         )) | ||||
|         self.assertEqual(3, len(last_page)) | ||||
|  | ||||
|     def test_update_existing_cell(self): | ||||
|         """Verify we can update a cell.""" | ||||
|         cell = self.cleanupCell(self.client.cells.create( | ||||
|             name='cell-to-update', | ||||
|             region_id=self.region.id, | ||||
|             cloud_id=self.cloud.id, | ||||
|             note='Original note', | ||||
|             variables={'out-with': 'the-old'}, | ||||
|         )) | ||||
|  | ||||
|         self.assertEqual('cell-to-update', cell.name) | ||||
|         self.assertEqual('Original note', cell.note) | ||||
|  | ||||
|         updated_cell = self.client.cells.update( | ||||
|             item_id=cell.id, | ||||
|             note='Updated note.', | ||||
|         ) | ||||
|         self.assertEqual(cell.id, updated_cell.id) | ||||
|         self.assertEqual(cell.name, updated_cell.name) | ||||
|         self.assertEqual('Updated note.', updated_cell.note) | ||||
| @@ -24,20 +24,13 @@ class TestHosts(base.BetamaxTestCase): | ||||
|         """Prepare our hosts test case.""" | ||||
|         super(TestHosts, self).setUp() | ||||
|         self.create_demo_client() | ||||
|         self.cloud = self.client.clouds.create( | ||||
|         self.cloud = self.cleanupCloud(self.client.clouds.create( | ||||
|             name='cloud-{}'.format(self.cassette_name), | ||||
|         ) | ||||
|         self.addCleanup(self.client.clouds.delete, self.cloud.id) | ||||
|         self.region = self.client.regions.create( | ||||
|         )) | ||||
|         self.region = self.cleanupRegion(self.client.regions.create( | ||||
|             name='region-{}'.format(self.cassette_name), | ||||
|             cloud_id=self.cloud.id, | ||||
|         ) | ||||
|         self.addCleanup(self.client.regions.delete, self.region.id) | ||||
|  | ||||
|     def cleanupHost(self, host): | ||||
|         """Add a cleanup task for this host.""" | ||||
|         self.addCleanup(self.client.hosts.delete, host.id) | ||||
|         return host | ||||
|         )) | ||||
|  | ||||
|     def test_create(self): | ||||
|         """Test creation of hosts via the Python API.""" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Jenkins
					Jenkins