)]}'
{"tempest/services/identity/v3/json/identity_client.py":[{"author":{"_account_id":7186,"name":"Matthieu Huin","email":"mhuin@redhat.com","username":"mhu"},"change_message_id":"3483a89d4fcabdf8c23b3322429c40fe1407369f","unresolved":false,"context_lines":[{"line_number":369,"context_line":"            \u0027project_id\u0027: project_id,"},{"line_number":370,"context_line":"            \u0027impersonation\u0027: impersonation,"},{"line_number":371,"context_line":"            \u0027roles\u0027: roles,"},{"line_number":372,"context_line":"            \u0027expires_at\u0027: expires_at"},{"line_number":373,"context_line":"        }"},{"line_number":374,"context_line":"        post_body \u003d json.dumps({\u0027trust\u0027: post_body})"},{"line_number":375,"context_line":"        resp, body \u003d self.post(\u0027OS-TRUST/trusts\u0027, post_body, self.headers)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FfpQ%3D","line":372,"updated":"2013-11-04 15:28:07.000000000","message":"expires_at could be a datetime object, formatted with isoformat()","commit_id":"c901e9343308a024b208a9a00684c55d9ed704ff"},{"author":{"_account_id":4328,"name":"Steven Hardy","email":"steven.hardy@suse.com","username":"shardy"},"change_message_id":"da48368deae6bd07ab64a6c5a3344b3f68eb8b51","unresolved":false,"context_lines":[{"line_number":369,"context_line":"            \u0027project_id\u0027: project_id,"},{"line_number":370,"context_line":"            \u0027impersonation\u0027: impersonation,"},{"line_number":371,"context_line":"            \u0027roles\u0027: roles,"},{"line_number":372,"context_line":"            \u0027expires_at\u0027: expires_at"},{"line_number":373,"context_line":"        }"},{"line_number":374,"context_line":"        post_body \u003d json.dumps({\u0027trust\u0027: post_body})"},{"line_number":375,"context_line":"        resp, body \u003d self.post(\u0027OS-TRUST/trusts\u0027, post_body, self.headers)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FTlI%3D","line":372,"in_reply_to":"AAAATn%2F%2FfpQ%3D","updated":"2013-11-12 11:37:58.000000000","message":"Yes, that\u0027s the way we do it in keystoneclient, but for the purposes of these tests, it\u0027s handy to be able to control the string from the tests, e.g so we can explicitly test invalid/malformed expires_at strings (I found a bug related to this, see https://bugs.launchpad.net/keystone/+bug/1246831, which is the reason for test_trust_expire_invalid)\n\nIf the scope for the tempest tests is only for non-error-path tests, I can do as you suggest, but I\u0027d prefer to leave some basic error path testing in and leave the string formatting in the tests rather than this API code.","commit_id":"c901e9343308a024b208a9a00684c55d9ed704ff"},{"author":{"_account_id":7186,"name":"Matthieu Huin","email":"mhuin@redhat.com","username":"mhu"},"change_message_id":"3483a89d4fcabdf8c23b3322429c40fe1407369f","unresolved":false,"context_lines":[{"line_number":463,"context_line":"        return super(V3TokenClientJSON, self).request(method, url,"},{"line_number":464,"context_line":"                                                      headers\u003dheaders,"},{"line_number":465,"context_line":"                                                      body\u003dbody)"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FfrU%3D","line":466,"updated":"2013-11-04 15:28:07.000000000","message":"It\u0027d be nice to have a way to generate a token from a trust (and test that). I\u0027ve been working on it on my own so feel free to use this, if it is any help: http://pastebin.com/JMH1HbPJ","commit_id":"c901e9343308a024b208a9a00684c55d9ed704ff"},{"author":{"_account_id":4328,"name":"Steven Hardy","email":"steven.hardy@suse.com","username":"shardy"},"change_message_id":"da48368deae6bd07ab64a6c5a3344b3f68eb8b51","unresolved":false,"context_lines":[{"line_number":463,"context_line":"        return super(V3TokenClientJSON, self).request(method, url,"},{"line_number":464,"context_line":"                                                      headers\u003dheaders,"},{"line_number":465,"context_line":"                                                      body\u003dbody)"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FTlY%3D","line":466,"in_reply_to":"AAAATn%2F%2FfrU%3D","updated":"2013-11-12 11:37:58.000000000","message":"Yes, I\u0027ve been working on adding that test, I was planning to get the basic trust lifecycle tests in, then post a followup patch which tests consuming the trusts.  I can just create one big patch if that\u0027s preferred.","commit_id":"c901e9343308a024b208a9a00684c55d9ed704ff"}],"tempest/services/identity/v3/xml/identity_client.py":[{"author":{"_account_id":7186,"name":"Matthieu Huin","email":"mhuin@redhat.com","username":"mhu"},"change_message_id":"3483a89d4fcabdf8c23b3322429c40fe1407369f","unresolved":false,"context_lines":[{"line_number":364,"context_line":"        return resp, body"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"    def create_trust(self, trustor_user_id, trustee_user_id, project_id,"},{"line_number":368,"context_line":"                     role_names, impersonation, expires_at):"},{"line_number":369,"context_line":"        \"\"\"Creates a trust.\"\"\""},{"line_number":370,"context_line":"        print \"SHDEBUG expires_at\u003d%s\" % expires_at"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Ffq8%3D","line":367,"updated":"2013-11-04 15:28:07.000000000","message":"just out of curiosity, is the trusts XML format documented somewhere ?","commit_id":"c901e9343308a024b208a9a00684c55d9ed704ff"},{"author":{"_account_id":4328,"name":"Steven Hardy","email":"steven.hardy@suse.com","username":"shardy"},"change_message_id":"da48368deae6bd07ab64a6c5a3344b3f68eb8b51","unresolved":false,"context_lines":[{"line_number":364,"context_line":"        return resp, body"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"    def create_trust(self, trustor_user_id, trustee_user_id, project_id,"},{"line_number":368,"context_line":"                     role_names, impersonation, expires_at):"},{"line_number":369,"context_line":"        \"\"\"Creates a trust.\"\"\""},{"line_number":370,"context_line":"        print \"SHDEBUG expires_at\u003d%s\" % expires_at"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FPgg%3D","line":367,"in_reply_to":"AAAATn%2F%2Ffq8%3D","updated":"2013-11-12 11:37:58.000000000","message":"I don\u0027t think so, but is every keystone API documented in JSON and XML format?  I\u0027m not sure.  I\u0027m using this doc as my reference:\n\nhttps://github.com/openstack/identity-api/blob/master/openstack-identity-api/v3/src/markdown/identity-api-v3-os-trust-ext.md\n\nAnyway, I just added this test because most/all other APIs test both JSON and XML format, and as it turns out trusts XML format is broken, ref this bug:\n\nhttps://bugs.launchpad.net/keystone/+bug/1246941\n\nI guess we can hope for some XML docs related to that bugfix which will allow me to complete this part of the tests.\n\nFor my (Heat\u0027s) use-case, I\u0027d be quite happy to drop the XML tests, but I have been assuming that Tempest requires testing both JSON and XML versions of the API surface for all API\u0027s?","commit_id":"c901e9343308a024b208a9a00684c55d9ed704ff"}]}
