)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"cff6d3af9c949d2e3b75aa996c410566053d1514","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Use revocation events for lightweight tokens"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Allow lightweight tokens to take advantage of revocation events."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I850b94f4e324e6ec76e964eca8e2769144c39a98"},{"line_number":12,"context_line":"Implements: bp klw-tokens"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"ba7be1f8_feb2a9e3","line":9,"updated":"2015-03-02 20:21:02.000000000","message":"It would be nice, although not necessary, to say something about the bug here. This feels like a new feature, but in reality it\u0027s a broken \u0027if\u0027 statement from the previous review.","commit_id":"a83a8d3126c52bae0129ff5ae1c7574c9e3ef47e"}],"keystone/tests/unit/test_v3_auth.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"c3ca11c5023214de08dd4a633dd82aae04efa3cf","unresolved":false,"context_lines":[{"line_number":4089,"context_line":"        self.get(\u0027/auth/tokens\u0027, headers\u003dheaders, expected_status\u003d404)"},{"line_number":4090,"context_line":""},{"line_number":4091,"context_line":"    def test_unscoped_token_is_invalid_after_disabling_user(self):"},{"line_number":4092,"context_line":"        auth_data \u003d self.build_authentication_request("},{"line_number":4093,"context_line":"            user_id\u003dself.user[\u0027id\u0027],"},{"line_number":4094,"context_line":"            password\u003dself.user[\u0027password\u0027])"},{"line_number":4095,"context_line":"        resp \u003d self.post(\u0027/auth/tokens\u0027, body\u003dauth_data, expected_status\u003d201)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_3cc30d39","line":4092,"updated":"2015-02-26 07:13:12.000000000","message":"line 4092-4100 could use some refactoring as that logic are shared among three tests","commit_id":"dd8f460093fb68f161ace3f3d9467b1933a011e0"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"600f17def37b73be819419de1aa616896e7f70fc","unresolved":false,"context_lines":[{"line_number":4089,"context_line":"        self.get(\u0027/auth/tokens\u0027, headers\u003dheaders, expected_status\u003d404)"},{"line_number":4090,"context_line":""},{"line_number":4091,"context_line":"    def test_unscoped_token_is_invalid_after_disabling_user(self):"},{"line_number":4092,"context_line":"        auth_data \u003d self.build_authentication_request("},{"line_number":4093,"context_line":"            user_id\u003dself.user[\u0027id\u0027],"},{"line_number":4094,"context_line":"            password\u003dself.user[\u0027password\u0027])"},{"line_number":4095,"context_line":"        resp \u003d self.post(\u0027/auth/tokens\u0027, body\u003dauth_data, expected_status\u003d201)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_12cc6588","line":4092,"in_reply_to":"ba7be1f8_3cc30d39","updated":"2015-02-26 12:46:08.000000000","message":"I believe Jorge has some refactoring done locally, but we\u0027re coordinating as to not overwrite each others work.","commit_id":"dd8f460093fb68f161ace3f3d9467b1933a011e0"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"c3ca11c5023214de08dd4a633dd82aae04efa3cf","unresolved":false,"context_lines":[{"line_number":4108,"context_line":"    def test_unscoped_token_is_invalid_after_disabling_user_domain(self):"},{"line_number":4109,"context_line":"        auth_data \u003d self.build_authentication_request("},{"line_number":4110,"context_line":"            user_id\u003dself.user[\u0027id\u0027],"},{"line_number":4111,"context_line":"            user_domain_id\u003dself.user[\u0027domain_id\u0027],"},{"line_number":4112,"context_line":"            password\u003dself.user[\u0027password\u0027])"},{"line_number":4113,"context_line":""},{"line_number":4114,"context_line":"        resp \u003d self.post(\u0027/auth/tokens\u0027, body\u003dauth_data, expected_status\u003d201)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_9cbcf9bc","line":4111,"updated":"2015-02-26 07:13:12.000000000","message":"don\u0027t need to specify user_domain_id as user_id is already unique","commit_id":"dd8f460093fb68f161ace3f3d9467b1933a011e0"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"c3ca11c5023214de08dd4a633dd82aae04efa3cf","unresolved":false,"context_lines":[{"line_number":4191,"context_line":"        self.get(\u0027/auth/tokens\u0027, headers\u003dheaders, expected_status\u003d404)"},{"line_number":4192,"context_line":""},{"line_number":4193,"context_line":"    def test_project_scoped_token_is_invalid_after_disabling_user(self):"},{"line_number":4194,"context_line":"        auth_data \u003d self.build_authentication_request("},{"line_number":4195,"context_line":"            user_id\u003dself.user[\u0027id\u0027],"},{"line_number":4196,"context_line":"            password\u003dself.user[\u0027password\u0027],"},{"line_number":4197,"context_line":"            project_id\u003dself.project_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_bce61de6","line":4194,"updated":"2015-02-26 07:13:12.000000000","message":"same as above, this code could use some refactoring","commit_id":"dd8f460093fb68f161ace3f3d9467b1933a011e0"},{"author":{"_account_id":13152,"name":"Jorge Munoz","email":"elkidster@gmail.com","username":"jmunoz"},"change_message_id":"05325fc4b80086051981e96e965073f7bea6f997","unresolved":false,"context_lines":[{"line_number":4071,"context_line":"        resp \u003d self.post(\u0027/auth/tokens\u0027, body\u003dauth_data, expected_status\u003d201)"},{"line_number":4072,"context_line":"        token \u003d resp.headers.get(\u0027X-Subject-Token\u0027)"},{"line_number":4073,"context_line":"        if trust_token:"},{"line_number":4074,"context_line":"            self.assertTrue(token.startswith(\u0027KLWT01\u0027))"},{"line_number":4075,"context_line":"        else:"},{"line_number":4076,"context_line":"            self.assertTrue(token.startswith(\u0027KLWT00\u0027))"},{"line_number":4077,"context_line":"        return token"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_d2024608","line":4074,"updated":"2015-03-02 15:54:19.000000000","message":"String matchers for standard and trust tokens should be used here as-well.","commit_id":"73848df5740be74aac8c99d32d6c34480bc858ca"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1ed116a78a53f2d37e932882b53f7e9e4417995c","unresolved":false,"context_lines":[{"line_number":4071,"context_line":"        resp \u003d self.post(\u0027/auth/tokens\u0027, body\u003dauth_data, expected_status\u003d201)"},{"line_number":4072,"context_line":"        token \u003d resp.headers.get(\u0027X-Subject-Token\u0027)"},{"line_number":4073,"context_line":"        if trust_token:"},{"line_number":4074,"context_line":"            self.assertTrue(token.startswith(\u0027KLWT01\u0027))"},{"line_number":4075,"context_line":"        else:"},{"line_number":4076,"context_line":"            self.assertTrue(token.startswith(\u0027KLWT00\u0027))"},{"line_number":4077,"context_line":"        return token"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_98b46f36","line":4074,"in_reply_to":"ba7be1f8_d2024608","updated":"2015-03-02 16:27:43.000000000","message":"Done, nice catch.","commit_id":"73848df5740be74aac8c99d32d6c34480bc858ca"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"965d2a6cacd55cc10c0309a918753ff97467e2e3","unresolved":false,"context_lines":[{"line_number":4071,"context_line":"        resp \u003d self.post(\u0027/auth/tokens\u0027, body\u003dauth_data, expected_status\u003d201)"},{"line_number":4072,"context_line":"        token \u003d resp.headers.get(\u0027X-Subject-Token\u0027)"},{"line_number":4073,"context_line":"        if trust_token:"},{"line_number":4074,"context_line":"            self.assertTrue(token, self.trust_matcher)"},{"line_number":4075,"context_line":"        else:"},{"line_number":4076,"context_line":"            self.assertTrue(token, self.standard_matcher)"},{"line_number":4077,"context_line":"        return token"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba7be1f8_fe70e9a5","line":4074,"updated":"2015-03-02 20:16:16.000000000","message":"These have the same problem as the parent review. assertTrue asserts that the expression token is true and will only use the matcher, as an error message, if the assertion is False.","commit_id":"a83a8d3126c52bae0129ff5ae1c7574c9e3ef47e"}]}
