)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"061f95c8ac7fbb2830a907d64adfc1be950cd169","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Brant Knudson \u003cbknudson@us.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-07-25 17:28:26 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add a test for revoking a scoped token from an unscoped"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There was no test that showed that when a scoped token created from"},{"line_number":10,"context_line":"an unscoped token is revoked that the unscoped token also winds up"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"baada198_76abf01d","line":7,"updated":"2014-07-26 00:49:47.000000000","message":"The commit should now mention the additional tests you added for domain-scoped and v2 scoped tokens?","commit_id":"2867804445518d0a0d63a2c5a228a7a40a876357"}],"keystone/tests/test_v3_auth.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9cdfc39123eed2d3b3ac9a88ba42f3bcc8aba7e0","unresolved":false,"context_lines":[{"line_number":1229,"context_line":"        # the scoped token can be revoked, and the unscoped token remains"},{"line_number":1230,"context_line":"        # valid."},{"line_number":1231,"context_line":""},{"line_number":1232,"context_line":"        # FIXME(blk-u): This isn\u0027t working right. The unscoped token should"},{"line_number":1233,"context_line":"        # remain valid. See bug 1347318."},{"line_number":1234,"context_line":""},{"line_number":1235,"context_line":"        # Get an unscoped token"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_6427e563","line":1232,"updated":"2014-07-25 02:20:39.000000000","message":"s/working right/working correctly/","commit_id":"76b238add247a8beaac6ab182871e8ea631468c0"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e5c66a48e095aa59ce5da932cbc450f09d0ff864","unresolved":false,"context_lines":[{"line_number":1229,"context_line":"        # the scoped token can be revoked, and the unscoped token remains"},{"line_number":1230,"context_line":"        # valid."},{"line_number":1231,"context_line":""},{"line_number":1232,"context_line":"        # FIXME(blk-u): This isn\u0027t working right. The unscoped token should"},{"line_number":1233,"context_line":"        # remain valid. See bug 1347318."},{"line_number":1234,"context_line":""},{"line_number":1235,"context_line":"        # Get an unscoped token"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_42b9cdea","line":1232,"in_reply_to":"baada198_6427e563","updated":"2014-07-25 22:28:54.000000000","message":"Done","commit_id":"76b238add247a8beaac6ab182871e8ea631468c0"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9cdfc39123eed2d3b3ac9a88ba42f3bcc8aba7e0","unresolved":false,"context_lines":[{"line_number":1238,"context_line":"            body\u003dself.build_authentication_request("},{"line_number":1239,"context_line":"                user_id\u003dself.user1[\u0027id\u0027],"},{"line_number":1240,"context_line":"                password\u003dself.user1[\u0027password\u0027]))"},{"line_number":1241,"context_line":"        unscoped_token \u003d r.headers[\u0027X-Subject-Token\u0027]"},{"line_number":1242,"context_line":""},{"line_number":1243,"context_line":"        # Get a project-scoped token from the unscoped token"},{"line_number":1244,"context_line":"        r \u003d self.post("}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_24d88d52","line":1241,"updated":"2014-07-25 02:20:39.000000000","message":"there\u0027s a shortcut for this if you want it - i think:\n\n  unscoped_token \u003d self.get_requested_token(self.build_authentication_request(...))","commit_id":"76b238add247a8beaac6ab182871e8ea631468c0"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e5c66a48e095aa59ce5da932cbc450f09d0ff864","unresolved":false,"context_lines":[{"line_number":1238,"context_line":"            body\u003dself.build_authentication_request("},{"line_number":1239,"context_line":"                user_id\u003dself.user1[\u0027id\u0027],"},{"line_number":1240,"context_line":"                password\u003dself.user1[\u0027password\u0027]))"},{"line_number":1241,"context_line":"        unscoped_token \u003d r.headers[\u0027X-Subject-Token\u0027]"},{"line_number":1242,"context_line":""},{"line_number":1243,"context_line":"        # Get a project-scoped token from the unscoped token"},{"line_number":1244,"context_line":"        r \u003d self.post("}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_62bed1d5","line":1241,"in_reply_to":"baada198_24d88d52","updated":"2014-07-25 22:28:54.000000000","message":"Done","commit_id":"76b238add247a8beaac6ab182871e8ea631468c0"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"743d91e9906a719bcd4ee399ffeb237913f4d4d3","unresolved":false,"context_lines":[{"line_number":1291,"context_line":"                  headers\u003d{\u0027X-Subject-Token\u0027: unscoped_token},"},{"line_number":1292,"context_line":"                  expected_status\u003d404)  # FIXME(blk-u): This should be 200!"},{"line_number":1293,"context_line":""},{"line_number":1294,"context_line":"    def get_v2_token(self, token\u003dNone, project_id\u003dNone):"},{"line_number":1295,"context_line":"        body \u003d {"},{"line_number":1296,"context_line":"            \u0027auth\u0027: {"},{"line_number":1297,"context_line":"            },"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_df45c844","line":1294,"updated":"2014-07-25 13:58:43.000000000","message":"Is this something that could be put into a common place? Might be useful for other cases too. \n\nOr we can move it there once we start using it in other places.","commit_id":"76b238add247a8beaac6ab182871e8ea631468c0"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e5c66a48e095aa59ce5da932cbc450f09d0ff864","unresolved":false,"context_lines":[{"line_number":1291,"context_line":"                  headers\u003d{\u0027X-Subject-Token\u0027: unscoped_token},"},{"line_number":1292,"context_line":"                  expected_status\u003d404)  # FIXME(blk-u): This should be 200!"},{"line_number":1293,"context_line":""},{"line_number":1294,"context_line":"    def get_v2_token(self, token\u003dNone, project_id\u003dNone):"},{"line_number":1295,"context_line":"        body \u003d {"},{"line_number":1296,"context_line":"            \u0027auth\u0027: {"},{"line_number":1297,"context_line":"            },"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_42a0eda4","line":1294,"in_reply_to":"baada198_df45c844","updated":"2014-07-25 22:28:54.000000000","message":"It is actually used in other places and it was before this change. :(","commit_id":"76b238add247a8beaac6ab182871e8ea631468c0"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9cdfc39123eed2d3b3ac9a88ba42f3bcc8aba7e0","unresolved":false,"context_lines":[{"line_number":1294,"context_line":"    def get_v2_token(self, token\u003dNone, project_id\u003dNone):"},{"line_number":1295,"context_line":"        body \u003d {"},{"line_number":1296,"context_line":"            \u0027auth\u0027: {"},{"line_number":1297,"context_line":"            },"},{"line_number":1298,"context_line":"        }"},{"line_number":1299,"context_line":""},{"line_number":1300,"context_line":"        if token:"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_e4c0554c","line":1297,"updated":"2014-07-25 02:20:39.000000000","message":"open and close on one line if you\u0027re going to do that","commit_id":"76b238add247a8beaac6ab182871e8ea631468c0"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e5c66a48e095aa59ce5da932cbc450f09d0ff864","unresolved":false,"context_lines":[{"line_number":1294,"context_line":"    def get_v2_token(self, token\u003dNone, project_id\u003dNone):"},{"line_number":1295,"context_line":"        body \u003d {"},{"line_number":1296,"context_line":"            \u0027auth\u0027: {"},{"line_number":1297,"context_line":"            },"},{"line_number":1298,"context_line":"        }"},{"line_number":1299,"context_line":""},{"line_number":1300,"context_line":"        if token:"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_e2c9017a","line":1297,"in_reply_to":"baada198_e4c0554c","updated":"2014-07-25 22:28:54.000000000","message":"Done","commit_id":"76b238add247a8beaac6ab182871e8ea631468c0"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9cdfc39123eed2d3b3ac9a88ba42f3bcc8aba7e0","unresolved":false,"context_lines":[{"line_number":1335,"context_line":"        # The project-scoped token is invalidated."},{"line_number":1336,"context_line":"        self.head(\u0027/auth/tokens\u0027,"},{"line_number":1337,"context_line":"                  headers\u003d{\u0027X-Subject-Token\u0027: project_scoped_token},"},{"line_number":1338,"context_line":"                  expected_status\u003d200)  # FIXME(blk-u): This should be 404."},{"line_number":1339,"context_line":""},{"line_number":1340,"context_line":"        # The unscoped token should still be valid."},{"line_number":1341,"context_line":"        self.head(\u0027/auth/tokens\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_a491fd53","line":1338,"updated":"2014-07-25 02:20:39.000000000","message":"wtf","commit_id":"76b238add247a8beaac6ab182871e8ea631468c0"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"743d91e9906a719bcd4ee399ffeb237913f4d4d3","unresolved":false,"context_lines":[{"line_number":1335,"context_line":"        # The project-scoped token is invalidated."},{"line_number":1336,"context_line":"        self.head(\u0027/auth/tokens\u0027,"},{"line_number":1337,"context_line":"                  headers\u003d{\u0027X-Subject-Token\u0027: project_scoped_token},"},{"line_number":1338,"context_line":"                  expected_status\u003d200)  # FIXME(blk-u): This should be 404."},{"line_number":1339,"context_line":""},{"line_number":1340,"context_line":"        # The unscoped token should still be valid."},{"line_number":1341,"context_line":"        self.head(\u0027/auth/tokens\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_3fd40446","line":1338,"in_reply_to":"baada198_a491fd53","updated":"2014-07-25 13:58:43.000000000","message":"so... revoke doesn\u0027t work for v2... at all?","commit_id":"76b238add247a8beaac6ab182871e8ea631468c0"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"79bc4347eca9ebb44d1d12f3d44bb002e3ff1947","unresolved":false,"context_lines":[{"line_number":1263,"context_line":"                  headers\u003d{\u0027X-Subject-Token\u0027: token},"},{"line_number":1264,"context_line":"                  expected_status\u003d404)"},{"line_number":1265,"context_line":""},{"line_number":1266,"context_line":"    def test_revoke_token_from_token(self):"},{"line_number":1267,"context_line":"        # Test that a scoped token can be requested from an unscoped token,"},{"line_number":1268,"context_line":"        # the scoped token can be revoked, and the unscoped token remains"},{"line_number":1269,"context_line":"        # valid."}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_028407af","line":1266,"updated":"2014-07-28 17:00:01.000000000","message":"this is using v3 tokens, correct?","commit_id":"43b83f3dbcc05ea73e8d7efd51fed69157f30d92"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fa0040584d4d001197e67459996006a74790c9b6","unresolved":false,"context_lines":[{"line_number":1263,"context_line":"                  headers\u003d{\u0027X-Subject-Token\u0027: token},"},{"line_number":1264,"context_line":"                  expected_status\u003d404)"},{"line_number":1265,"context_line":""},{"line_number":1266,"context_line":"    def test_revoke_token_from_token(self):"},{"line_number":1267,"context_line":"        # Test that a scoped token can be requested from an unscoped token,"},{"line_number":1268,"context_line":"        # the scoped token can be revoked, and the unscoped token remains"},{"line_number":1269,"context_line":"        # valid."}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_dd01103a","line":1266,"in_reply_to":"baada198_028407af","updated":"2014-07-28 17:28:09.000000000","message":"yes, this is using v3 tokens. build_authentication_request creates a v3 request body","commit_id":"43b83f3dbcc05ea73e8d7efd51fed69157f30d92"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"79bc4347eca9ebb44d1d12f3d44bb002e3ff1947","unresolved":false,"context_lines":[{"line_number":1336,"context_line":"        # Get a project-scoped token from the unscoped token"},{"line_number":1337,"context_line":"        project_scoped_token \u003d self.get_v2_token("},{"line_number":1338,"context_line":"            token\u003dunscoped_token, project_id\u003dself.default_domain_project[\u0027id\u0027])"},{"line_number":1339,"context_line":""},{"line_number":1340,"context_line":"        # revoke the project-scoped token."},{"line_number":1341,"context_line":"        self.delete(\u0027/auth/tokens\u0027,"},{"line_number":1342,"context_line":"                    headers\u003d{\u0027X-Subject-Token\u0027: project_scoped_token},"}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_82665727","line":1339,"updated":"2014-07-28 17:00:01.000000000","message":"We don\u0027t need a check here to make sure the project_scoped_token is valid?","commit_id":"43b83f3dbcc05ea73e8d7efd51fed69157f30d92"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fa0040584d4d001197e67459996006a74790c9b6","unresolved":false,"context_lines":[{"line_number":1336,"context_line":"        # Get a project-scoped token from the unscoped token"},{"line_number":1337,"context_line":"        project_scoped_token \u003d self.get_v2_token("},{"line_number":1338,"context_line":"            token\u003dunscoped_token, project_id\u003dself.default_domain_project[\u0027id\u0027])"},{"line_number":1339,"context_line":""},{"line_number":1340,"context_line":"        # revoke the project-scoped token."},{"line_number":1341,"context_line":"        self.delete(\u0027/auth/tokens\u0027,"},{"line_number":1342,"context_line":"                    headers\u003d{\u0027X-Subject-Token\u0027: project_scoped_token},"}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_3da12c3a","line":1339,"in_reply_to":"baada198_82665727","updated":"2014-07-28 17:28:09.000000000","message":"If the token wasn\u0027t valid here then that would be a different bug. I assume we\u0027ve got a test somewhere that verifies that when you get a scoped token from an unscoped one then the token is valid. If there isn\u0027t a test that shows this then a test should be added for it. This test doesn\u0027t need to validate that getting a scoped token from an unscoped one works... it\u0027s supposed to be validating that revocation works.","commit_id":"43b83f3dbcc05ea73e8d7efd51fed69157f30d92"}]}
