)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"5cd8a84b926f02ad8985e5646dd69431f5b2a3c9","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Marek Denis \u003cmarek.denis@cern.ch\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-10-05 11:47:49 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adds a base class for functional tests"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ifd27edad8f004c42c4b9c7fad412394d01c5eaa8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7a2fa921_bd08002a","line":7,"updated":"2015-10-05 16:40:47.000000000","message":"Please provide bp/spec link here as it is clear that this change is a part of something bigger","commit_id":"ece0f73df3af6df8005d505f17ef593c3fa66626"}],"keystone/tests/common/auth.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"9a1f64c36ef960d92b316b679cde33c9fb5bacaa","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            auth_data[\u0027identity\u0027][\u0027kerberos\u0027] \u003d {}"},{"line_number":82,"context_line":"        if token:"},{"line_number":83,"context_line":"            auth_data[\u0027identity\u0027][\u0027methods\u0027].append(\u0027token\u0027)"},{"line_number":84,"context_line":"            auth_data[\u0027identity\u0027][\u0027token\u0027] \u003d self.build_token_auth(token)"},{"line_number":85,"context_line":"        if user_id or username:"},{"line_number":86,"context_line":"            auth_data[\u0027identity\u0027][\u0027methods\u0027].append(\u0027password\u0027)"},{"line_number":87,"context_line":"            auth_data[\u0027identity\u0027][\u0027password\u0027] \u003d self.build_password_auth("}],"source_content_type":"text/x-python","patch_set":14,"id":"7a2fa921_4ef9c97f","line":84,"updated":"2015-10-06 14:10:12.000000000","message":"it looks like build_authentication_request is the only method that needs to be interfaced with. Maybe we should make the other methods in this module private so that is more clear to the user?","commit_id":"d056416d375f3707ece5dccfecd1680c8ea0e3f8"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"17fd0155a117ef5335194848706255dbedbf92fb","unresolved":false,"context_lines":[{"line_number":14,"context_line":"class AuthTestMixin(object):"},{"line_number":15,"context_line":"    \"\"\"To hold auth building helper functions.\"\"\""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"    def build_auth_scope(self, project_id\u003dNone, project_name\u003dNone,"},{"line_number":18,"context_line":"                         project_domain_id\u003dNone, project_domain_name\u003dNone,"},{"line_number":19,"context_line":"                         domain_id\u003dNone, domain_name\u003dNone, trust_id\u003dNone,"},{"line_number":20,"context_line":"                         unscoped\u003dNone):"}],"source_content_type":"text/x-python","patch_set":20,"id":"da85f559_e56795e8","line":17,"updated":"2015-11-13 14:58:58.000000000","message":"I think this should be private, that way we are communicating to people writing test code that they should interact with build_authentication_request(). Unless these are exposed and used in the unit tests already?","commit_id":"7aa4f6c2ccb03b9ee73047fd7f002aa98ab8644b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"17fd0155a117ef5335194848706255dbedbf92fb","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            scope_data[\u0027OS-TRUST:trust\u0027][\u0027id\u0027] \u003d trust_id"},{"line_number":46,"context_line":"        return scope_data"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def build_password_auth(self, user_id\u003dNone, username\u003dNone,"},{"line_number":49,"context_line":"                            user_domain_id\u003dNone, user_domain_name\u003dNone,"},{"line_number":50,"context_line":"                            password\u003dNone):"},{"line_number":51,"context_line":"        password_data \u003d {\u0027user\u0027: {}}"}],"source_content_type":"text/x-python","patch_set":20,"id":"da85f559_0565f9df","line":48,"updated":"2015-11-13 14:58:58.000000000","message":"Same comment here.","commit_id":"7aa4f6c2ccb03b9ee73047fd7f002aa98ab8644b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"17fd0155a117ef5335194848706255dbedbf92fb","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        password_data[\u0027user\u0027][\u0027password\u0027] \u003d password"},{"line_number":63,"context_line":"        return password_data"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def build_token_auth(self, token):"},{"line_number":66,"context_line":"        return {\u0027id\u0027: token}"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def build_authentication_request(self, token\u003dNone, user_id\u003dNone,"}],"source_content_type":"text/x-python","patch_set":20,"id":"da85f559_a502edb2","line":65,"updated":"2015-11-13 14:58:58.000000000","message":"Same comment here.","commit_id":"7aa4f6c2ccb03b9ee73047fd7f002aa98ab8644b"}],"keystone/tests/functional/core.py":[{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"f888c0a2cf247328cb5e9a5fad6dfe330db4986e","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            \u0027domain_id\u0027: os.environ.get(\u0027KSTEST_USER_DOMAIN_ID\u0027, \u0027default\u0027)"},{"line_number":40,"context_line":"        }"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        self.project_id \u003d os.environ.get(\u0027KSTEST_PROJECT_ID\u0027)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        super(BaseTestCase, self).setUp()"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_994a5325","line":42,"updated":"2015-07-22 12:51:33.000000000","message":"who sets this variable?","commit_id":"3d963ca216cce5b6d0662bdc56ec20da0e6281de"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"489a2c88c9e88ddda8bf68cc1c77274756206e23","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            \u0027domain_id\u0027: os.environ.get(\u0027KSTEST_USER_DOMAIN_ID\u0027, \u0027default\u0027)"},{"line_number":40,"context_line":"        }"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        self.project_id \u003d os.environ.get(\u0027KSTEST_PROJECT_ID\u0027)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        super(BaseTestCase, self).setUp()"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_a424c6c4","line":42,"in_reply_to":"3a50d1a3_994a5325","updated":"2015-07-22 13:15:32.000000000","message":"you, when you want to run this testsuite on you local machine with your devstack.","commit_id":"3d963ca216cce5b6d0662bdc56ec20da0e6281de"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"b5e0f4558c14dd85ba9d8309a2602baf91722709","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            \u0027domain_id\u0027: os.environ.get(\u0027KSTEST_USER_DOMAIN_ID\u0027, \u0027default\u0027)"},{"line_number":40,"context_line":"        }"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        self.project_id \u003d os.environ.get(\u0027KSTEST_PROJECT_ID\u0027)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        super(BaseTestCase, self).setUp()"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_ff5fb7e2","line":42,"in_reply_to":"3a50d1a3_a424c6c4","updated":"2015-07-22 13:20:06.000000000","message":"Hm, ok. Do I understand correctly, that there is no setup that would create a project and give the user corresponding roles?","commit_id":"3d963ca216cce5b6d0662bdc56ec20da0e6281de"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"201261bf31c6198d010be079258d7cf8a4e10825","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            \u0027domain_id\u0027: os.environ.get(\u0027KSTEST_USER_DOMAIN_ID\u0027, \u0027default\u0027)"},{"line_number":40,"context_line":"        }"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        self.project_id \u003d os.environ.get(\u0027KSTEST_PROJECT_ID\u0027)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        super(BaseTestCase, self).setUp()"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_0a06e385","line":42,"in_reply_to":"3a50d1a3_ff5fb7e2","updated":"2015-07-22 13:39:13.000000000","message":"I\u0027m sure there will be at some point, but I only want set up here that will be used in *every* test case.","commit_id":"3d963ca216cce5b6d0662bdc56ec20da0e6281de"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"f888c0a2cf247328cb5e9a5fad6dfe330db4986e","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            username\u003duser[\u0027name\u0027], user_domain_name\u003duser[\u0027domain_id\u0027],"},{"line_number":54,"context_line":"            password\u003duser[\u0027password\u0027], project_id\u003dself.project_id)"},{"line_number":55,"context_line":"        r \u003d requests.post(self.PUBLIC_URL + \u0027/v3/auth/tokens\u0027,"},{"line_number":56,"context_line":"                          headers\u003d{\u0027content-type\u0027: \u0027application/json\u0027},"},{"line_number":57,"context_line":"                          json\u003dbody)"},{"line_number":58,"context_line":"        return r"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_b9f06ffe","line":56,"updated":"2015-07-22 12:51:33.000000000","message":"this should use request_headers defined above","commit_id":"3d963ca216cce5b6d0662bdc56ec20da0e6281de"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6d6aa9ee9f645bd4993c6026f92935050f11d6e1","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            username\u003duser[\u0027name\u0027], user_domain_name\u003duser[\u0027domain_id\u0027],"},{"line_number":54,"context_line":"            password\u003duser[\u0027password\u0027], project_id\u003dself.project_id)"},{"line_number":55,"context_line":"        r \u003d requests.post(self.PUBLIC_URL + \u0027/v3/auth/tokens\u0027,"},{"line_number":56,"context_line":"                          headers\u003d{\u0027content-type\u0027: \u0027application/json\u0027},"},{"line_number":57,"context_line":"                          json\u003dbody)"},{"line_number":58,"context_line":"        return r"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa1b9901_f84ff4bb","line":56,"in_reply_to":"3a50d1a3_b9f06ffe","updated":"2015-08-25 13:41:08.000000000","message":"++","commit_id":"3d963ca216cce5b6d0662bdc56ec20da0e6281de"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"489a2c88c9e88ddda8bf68cc1c77274756206e23","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            username\u003duser[\u0027name\u0027], user_domain_name\u003duser[\u0027domain_id\u0027],"},{"line_number":54,"context_line":"            password\u003duser[\u0027password\u0027], project_id\u003dself.project_id)"},{"line_number":55,"context_line":"        r \u003d requests.post(self.PUBLIC_URL + \u0027/v3/auth/tokens\u0027,"},{"line_number":56,"context_line":"                          headers\u003d{\u0027content-type\u0027: \u0027application/json\u0027},"},{"line_number":57,"context_line":"                          json\u003dbody)"},{"line_number":58,"context_line":"        return r"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_a40b6629","line":56,"in_reply_to":"3a50d1a3_b9f06ffe","updated":"2015-07-22 13:15:32.000000000","message":"yep","commit_id":"3d963ca216cce5b6d0662bdc56ec20da0e6281de"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"d483a972331ce4a3f9d81088c8afebc28ba71567","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            username\u003duser[\u0027name\u0027], user_domain_name\u003duser[\u0027domain_id\u0027],"},{"line_number":54,"context_line":"            password\u003duser[\u0027password\u0027], project_id\u003dself.project_id)"},{"line_number":55,"context_line":"        r \u003d requests.post(self.PUBLIC_URL + \u0027/v3/auth/tokens\u0027,"},{"line_number":56,"context_line":"                          headers\u003d{\u0027content-type\u0027: \u0027application/json\u0027},"},{"line_number":57,"context_line":"                          json\u003dbody)"},{"line_number":58,"context_line":"        return r"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9a1a9d01_c407c37f","line":56,"in_reply_to":"fa1b9901_f84ff4bb","updated":"2015-10-05 09:52:05.000000000","message":"Done","commit_id":"3d963ca216cce5b6d0662bdc56ec20da0e6281de"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6d6aa9ee9f645bd4993c6026f92935050f11d6e1","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        return r"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def get_scoped_token(self, user):"},{"line_number":61,"context_line":"        \"\"\"Convenience method for getting unscoped token"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        This method doesn\u0027t do any token validaton."},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa1b9901_58bce06b","line":61,"updated":"2015-08-25 13:41:08.000000000","message":"the get_scoped_token_raw() method seems build scope into the request. maybe we should remove the unscoped part from this doc string.","commit_id":"3d963ca216cce5b6d0662bdc56ec20da0e6281de"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"d483a972331ce4a3f9d81088c8afebc28ba71567","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        return r"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def get_scoped_token(self, user):"},{"line_number":61,"context_line":"        \"\"\"Convenience method for getting unscoped token"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        This method doesn\u0027t do any token validaton."},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9a1a9d01_c47ca3ed","line":61,"in_reply_to":"fa1b9901_58bce06b","updated":"2015-10-05 09:52:05.000000000","message":"Done","commit_id":"3d963ca216cce5b6d0662bdc56ec20da0e6281de"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6d6aa9ee9f645bd4993c6026f92935050f11d6e1","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        :returns: An OpenStack token for further use"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        \"\"\""},{"line_number":68,"context_line":"        r \u003d self.get_scoped_token_raw(user)"},{"line_number":69,"context_line":"        return r.headers.get(\u0027X-Subject-Token\u0027)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def get_scoped_admin_token(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa1b9901_98811892","line":68,"updated":"2015-08-25 13:41:08.000000000","message":"this method seems like it\u0027s returning a scoped token, but the doc strings say it\u0027s unscoped?","commit_id":"3d963ca216cce5b6d0662bdc56ec20da0e6281de"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"9a1f64c36ef960d92b316b679cde33c9fb5bacaa","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.project_id \u003d os.environ.get(\u0027KSTEST_PROJECT_ID\u0027)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        # A swich whether a subcasses tearDown() should clean the data or not."},{"line_number":45,"context_line":"        # Sometimes it\u0027s not worth the efferd as the VM will be cleaned"},{"line_number":46,"context_line":"        # immediately once the tests are finished."},{"line_number":47,"context_line":"        self.do_cleanup \u003d os.environ.get(\u0027KSTEST_CLEANUP\u0027, False)"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"7a2fa921_0e4af1c5","line":45,"updated":"2015-10-06 14:10:12.000000000","message":"effort?\n\ns/VM/environment/ ?","commit_id":"d056416d375f3707ece5dccfecd1680c8ea0e3f8"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"9a1f64c36ef960d92b316b679cde33c9fb5bacaa","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        # A swich whether a subcasses tearDown() should clean the data or not."},{"line_number":45,"context_line":"        # Sometimes it\u0027s not worth the efferd as the VM will be cleaned"},{"line_number":46,"context_line":"        # immediately once the tests are finished."},{"line_number":47,"context_line":"        self.do_cleanup \u003d os.environ.get(\u0027KSTEST_CLEANUP\u0027, False)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        super(BaseTestCase, self).setUp()"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a2fa921_6e6b651f","line":46,"updated":"2015-10-06 14:10:12.000000000","message":"s/once/after/","commit_id":"d056416d375f3707ece5dccfecd1680c8ea0e3f8"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"9a1f64c36ef960d92b316b679cde33c9fb5bacaa","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        super(BaseTestCase, self).setUp()"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def get_scoped_token_raw(self, user):"},{"line_number":52,"context_line":"        \"\"\"Convenience method so that we can test authenticated requests"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        :returns: urllib3.Response object"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"7a2fa921_4e55494e","line":52,"updated":"2015-10-06 14:10:12.000000000","message":"What about adding something to the docstring about the \u0027raw\u0027 part of this method?","commit_id":"d056416d375f3707ece5dccfecd1680c8ea0e3f8"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"1b5e16e0f3a913d36ff5dd1b62e78856f5afd902","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        super(BaseTestCase, self).setUp()"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def get_scoped_token_raw(self, user):"},{"line_number":52,"context_line":"        \"\"\"Convenience method so that we can test authenticated requests"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        :returns: urllib3.Response object"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"7a2fa921_3714e042","line":52,"in_reply_to":"7a2fa921_4e55494e","updated":"2015-10-06 14:49:11.000000000","message":"i changed the method name to get_scoped_token_response","commit_id":"d056416d375f3707ece5dccfecd1680c8ea0e3f8"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"9a1f64c36ef960d92b316b679cde33c9fb5bacaa","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                          json\u003dbody)"},{"line_number":63,"context_line":"        return r"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def get_scoped_token(self, user):"},{"line_number":66,"context_line":"        \"\"\"Convenience method for getting scoped token"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        This method doesn\u0027t do any token validaton."}],"source_content_type":"text/x-python","patch_set":14,"id":"7a2fa921_ee9a1514","line":65,"updated":"2015-10-06 14:10:12.000000000","message":"this user has to be a dictionary, right? \n\nWhat is required to be in that dictionary?","commit_id":"d056416d375f3707ece5dccfecd1680c8ea0e3f8"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"1b5e16e0f3a913d36ff5dd1b62e78856f5afd902","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                          json\u003dbody)"},{"line_number":63,"context_line":"        return r"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def get_scoped_token(self, user):"},{"line_number":66,"context_line":"        \"\"\"Convenience method for getting scoped token"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        This method doesn\u0027t do any token validaton."}],"source_content_type":"text/x-python","patch_set":14,"id":"7a2fa921_f71d0867","line":65,"in_reply_to":"7a2fa921_ee9a1514","updated":"2015-10-06 14:49:11.000000000","message":"yes","commit_id":"d056416d375f3707ece5dccfecd1680c8ea0e3f8"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"9a1f64c36ef960d92b316b679cde33c9fb5bacaa","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        This method doesn\u0027t do any token validaton."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        :returns: An OpenStack token for further use"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        \"\"\""},{"line_number":73,"context_line":"        r \u003d self.get_scoped_token_raw(user)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a2fa921_eef3f571","line":70,"updated":"2015-10-06 14:10:12.000000000","message":"This returns a string, representing an OpenStack token, right?","commit_id":"d056416d375f3707ece5dccfecd1680c8ea0e3f8"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"1b5e16e0f3a913d36ff5dd1b62e78856f5afd902","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        This method doesn\u0027t do any token validaton."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        :returns: An OpenStack token for further use"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        \"\"\""},{"line_number":73,"context_line":"        r \u003d self.get_scoped_token_raw(user)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a2fa921_fc2f2f9f","line":70,"in_reply_to":"7a2fa921_eef3f571","updated":"2015-10-06 14:49:11.000000000","message":"yes","commit_id":"d056416d375f3707ece5dccfecd1680c8ea0e3f8"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"e0c02cb96a705dc61be90ca81ff06fa667e466f6","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        :param user: A dictionary with user information like \u0027username\u0027,"},{"line_number":56,"context_line":"        \u0027password\u0027, \u0027domain_id\u0027"},{"line_number":57,"context_line":"        :returns: urllib3.Response object"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        \"\"\""},{"line_number":60,"context_line":"        body \u003d self.build_authentication_request("}],"source_content_type":"text/x-python","patch_set":18,"id":"3a29b11f_8a7346b1","line":57,"updated":"2015-10-19 17:36:39.000000000","message":"should we make it so that this won\u0027t conflict with https://review.openstack.org/#/c/229837/8 ?","commit_id":"a287b81ef75a3b64f8bb8ef04625a80b7bcbf22e"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"17fd0155a117ef5335194848706255dbedbf92fb","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        r \u003d requests.post(self.PUBLIC_URL + \u0027/v3/auth/tokens\u0027,"},{"line_number":64,"context_line":"                          headers\u003dself.request_headers,"},{"line_number":65,"context_line":"                          json\u003dbody)"},{"line_number":66,"context_line":"        return r"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def get_scoped_token(self, user):"},{"line_number":69,"context_line":"        \"\"\"Convenience method for getting scoped token"}],"source_content_type":"text/x-python","patch_set":20,"id":"da85f559_45454115","line":66,"updated":"2015-11-13 14:58:58.000000000","message":"we don\u0027t necessarily need to create `r`, might be easier to just return:\n\n    return requests.post(...)","commit_id":"7aa4f6c2ccb03b9ee73047fd7f002aa98ab8644b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"074cfb3d0faa66cc0285b2db4620b1ac4bcd33fe","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        super(BaseTestCase, self).setUp()"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def _http_headers(self, token\u003dNone):"},{"line_number":47,"context_line":"        headers \u003d {\u0027content-type\u0027: \u0027application/json\u0027}"},{"line_number":48,"context_line":"        if token:"},{"line_number":49,"context_line":"            headers[\u0027X-Auth-Token\u0027] \u003d token"},{"line_number":50,"context_line":"        return headers"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def get_scoped_token_response(self, user):"},{"line_number":53,"context_line":"        \"\"\"Convenience method so that we can test authenticated requests"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        :param user: A dictionary with user information like \u0027username\u0027,"},{"line_number":56,"context_line":"        \u0027password\u0027, \u0027domain_id\u0027"},{"line_number":57,"context_line":"        :returns: urllib3.Response object"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        \"\"\""},{"line_number":60,"context_line":"        body \u003d self.build_authentication_request("},{"line_number":61,"context_line":"            username\u003duser[\u0027name\u0027], user_domain_name\u003duser[\u0027domain_id\u0027],"},{"line_number":62,"context_line":"            password\u003duser[\u0027password\u0027], project_id\u003dself.project_id)"},{"line_number":63,"context_line":"        return requests.post(self.PUBLIC_URL + \u0027/v3/auth/tokens\u0027,"},{"line_number":64,"context_line":"                             headers\u003dself.request_headers,"},{"line_number":65,"context_line":"                             json\u003dbody)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def get_scoped_token(self, user):"},{"line_number":68,"context_line":"        \"\"\"Convenience method for getting scoped token"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        This method doesn\u0027t do any token validaton."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        :param user: A dictionary with user information like \u0027username\u0027,"},{"line_number":73,"context_line":"        \u0027password\u0027, \u0027domain_id\u0027"},{"line_number":74,"context_line":"        :returns: An OpenStack token for further use"},{"line_number":75,"context_line":"        :rtype: str"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        \"\"\""},{"line_number":78,"context_line":"        r \u003d self.get_scoped_token_response(user)"},{"line_number":79,"context_line":"        return r.headers.get(\u0027X-Subject-Token\u0027)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def get_scoped_admin_token(self):"},{"line_number":82,"context_line":"        return self.get_scoped_token(self.admin)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    def get_scoped_user_token(self):"},{"line_number":85,"context_line":"        return self.get_scoped_token(self.user)"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a68dd71_411c2cc1","line":85,"range":{"start_line":46,"start_character":4,"end_line":85,"end_character":47},"updated":"2016-01-21 15:51:40.000000000","message":"Do you think all of these would be common enough to live in keystone/tests/common/auth.py ? They are auth specific.","commit_id":"e04758e50ab4be22e25a8927861cb0afdf4124ac"}],"keystone/tests/unit/test_v3.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"61fb20477f2c7034e7c31d5773e987b353ee0248","unresolved":false,"context_lines":[{"line_number":38,"context_line":"TIME_FORMAT \u003d unit.TIME_FORMAT"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class AuthTestMixin(object):"},{"line_number":42,"context_line":"    \"\"\"To hold auth building helper functions.\"\"\""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def build_auth_scope(self, project_id\u003dNone, project_name\u003dNone,"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a68dd71_208f0576","line":41,"range":{"start_line":41,"start_character":0,"end_line":41,"end_character":28},"updated":"2016-01-26 03:49:05.000000000","message":"you can remove this in a follow on patch","commit_id":"e04758e50ab4be22e25a8927861cb0afdf4124ac"}],"tox.ini":[{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"b9e7177254ed0b6cc7bd12a5e56c996a73371499","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    KSTEST_USER_PASSWORD"},{"line_number":91,"context_line":"    KSTEST_USER_DOMAIN_ID"},{"line_number":92,"context_line":"    KSTEST_PROJECT_ID"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"[flake8]"},{"line_number":95,"context_line":"filename\u003d *.py,keystone-all,keystone-manage"},{"line_number":96,"context_line":"show-source \u003d true"}],"source_content_type":"text/x-properties","patch_set":14,"id":"7a2fa921_ee0a15d2","line":93,"updated":"2015-10-06 14:00:34.000000000","message":"i think we should also pass those variables to debug environment, as this is a way to run functional tests with pdb in the code.","commit_id":"d056416d375f3707ece5dccfecd1680c8ea0e3f8"}]}
