)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"46e5c3654e06ba129c8e82f3de78c93bd18166bc","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-08-05 17:02:53 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Introduce test cases for Identity Provider"},{"line_number":8,"context_line":"Address Steve/Terry comment from patch 1"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Change-Id: Ibe34f28d7ae77d139a6e0edf4fe04215c371c9a8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a4dcd0f_a9c9fd5a","line":8,"updated":"2015-08-06 06:34:35.000000000","message":"put a new line between lines 7 and 8 for better formatting.\n\nalso, you don\u0027t have to say that you\u0027re addressing our comments, that\u0027s a given. the description should say why you are doing these changes.","commit_id":"8af79ffc2f231f60e080ce3da090a79255f44ec5"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"3796d750ea2628df34514dff3be223fc7633628d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Kelvin Lui \u003ckelvinlittle@yahoo.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-08-06 17:12:44 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Introduce test cases for Identity Provider"},{"line_number":8,"context_line":"Address Steve/Terry comment from patch 1"},{"line_number":9,"context_line":"Address Steve comment from patch 2"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1a4dcd0f_da33a060","line":7,"updated":"2015-08-07 12:10:44.000000000","message":"Maybe just get rid of these two lines \u0027Address.*\u0027","commit_id":"30b7b5a29240740c66cd6cf96ca8af9f7c60e154"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"712dc8c4a26110879dd1580f3ce18e8a2a08e82e","unresolved":false,"context_lines":[{"line_number":11,"context_line":"  * delete"},{"line_number":12,"context_line":"  * set"},{"line_number":13,"context_line":"  * list"},{"line_number":14,"context_line":"  * show "},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ibe34f28d7ae77d139a6e0edf4fe04215c371c9a8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"fa1b9901_1dfb3749","line":14,"updated":"2015-08-21 16:10:42.000000000","message":"nit: remove the white space","commit_id":"8fb19bc2a93c6cf6fa71c809dd47c6123a523b04"}],"functional/tests/identity/v3/test_identity.py":[{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"6a89ac8f35c48b23e5424f08f7f1ce61ff07fb1f","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"BASIC_LIST_HEADERS \u003d [\u0027ID\u0027, \u0027Name\u0027]"},{"line_number":21,"context_line":"IDENTITY_LIST_HEADERS \u003d [\u0027ID\u0027, \u0027Enabled\u0027, \u0027Description\u0027]"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class IdentityTests(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_b7a8868e","line":21,"updated":"2015-08-05 20:10:42.000000000","message":"I can\u0027t think of why we\u0027d want this here.","commit_id":"670722b3b2b61d8115841e72a83bcd1f614d8b80"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"46e5c3654e06ba129c8e82f3de78c93bd18166bc","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"BASIC_LIST_HEADERS \u003d [\u0027ID\u0027, \u0027Name\u0027]"},{"line_number":21,"context_line":"IDENTITY_LIST_HEADERS \u003d [\u0027ID\u0027, \u0027Enabled\u0027, \u0027Description\u0027]"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class IdentityTests(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_a97b3d27","line":21,"updated":"2015-08-06 06:34:35.000000000","message":"call this IDP_LIST_HEADERS, and move it to line 47","commit_id":"8af79ffc2f231f60e080ce3da090a79255f44ec5"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"0405e0999d69e4d6be0d8e36a019bced9fdb100a","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"BASIC_LIST_HEADERS \u003d [\u0027ID\u0027, \u0027Name\u0027]"},{"line_number":21,"context_line":"IDENTITY_LIST_HEADERS \u003d [\u0027ID\u0027, \u0027Enabled\u0027, \u0027Description\u0027]"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class IdentityTests(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_75cc0abb","line":21,"updated":"2015-08-20 15:58:35.000000000","message":"move this to line 46 and call it:\n\n  IDENTITY_PROVIDER_LIST_HEADERS\n\nIdentity headers is too generic, and this only applies to identity providers","commit_id":"b82121412bd530413a3eca8ffaeeb0c5bbc47d71"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"a130c5de3fe862fe55e900ea22e3747fc57b0443","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"BASIC_LIST_HEADERS \u003d [\u0027ID\u0027, \u0027Name\u0027]"},{"line_number":21,"context_line":"IDENTITY_LIST_HEADERS \u003d [\u0027ID\u0027, \u0027Enabled\u0027, \u0027Description\u0027]"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class IdentityTests(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_b6bdaf03","line":21,"in_reply_to":"fa1b9901_75cc0abb","updated":"2015-08-21 04:16:25.000000000","message":"++","commit_id":"b82121412bd530413a3eca8ffaeeb0c5bbc47d71"}],"functional/tests/identity/v3/test_idp.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"1e584dbcfa6ae1bf664538847e9e820f61987f8b","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    def test_idp_create(self):"},{"line_number":21,"context_line":"        self._create_dummy_idp()"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def test_user_delete(self):"},{"line_number":24,"context_line":"        identity_provider \u003d self._create_dummy_user(add_clean_up\u003dFalse)"},{"line_number":25,"context_line":"        raw_output \u003d self.openstack(\u0027identity provider delete %s\u0027"},{"line_number":26,"context_line":"                                    % identity_provider)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_d7ef52e7","line":23,"updated":"2015-08-05 20:07:40.000000000","message":"change this to:\n\n  test_idp_delete(self):\n\nand all the others from user to idp","commit_id":"670722b3b2b61d8115841e72a83bcd1f614d8b80"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"6a89ac8f35c48b23e5424f08f7f1ce61ff07fb1f","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    def test_idp_create(self):"},{"line_number":21,"context_line":"        self._create_dummy_idp()"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def test_user_delete(self):"},{"line_number":24,"context_line":"        identity_provider \u003d self._create_dummy_user(add_clean_up\u003dFalse)"},{"line_number":25,"context_line":"        raw_output \u003d self.openstack(\u0027identity provider delete %s\u0027"},{"line_number":26,"context_line":"                                    % identity_provider)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_978a2a1a","line":23,"updated":"2015-08-05 20:10:42.000000000","message":"names on these tests are suffering from copy pasta.","commit_id":"670722b3b2b61d8115841e72a83bcd1f614d8b80"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"1e584dbcfa6ae1bf664538847e9e820f61987f8b","unresolved":false,"context_lines":[{"line_number":21,"context_line":"        self._create_dummy_idp()"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def test_user_delete(self):"},{"line_number":24,"context_line":"        identity_provider \u003d self._create_dummy_user(add_clean_up\u003dFalse)"},{"line_number":25,"context_line":"        raw_output \u003d self.openstack(\u0027identity provider delete %s\u0027"},{"line_number":26,"context_line":"                                    % identity_provider)"},{"line_number":27,"context_line":"        self.assertEqual(0, len(raw_output))"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_f7c36e55","line":24,"updated":"2015-08-05 20:07:40.000000000","message":"calling the wrong function here, you want to create a dummy idp, not a dummy user\n\n  idp \u003d self._create_dummy_idp(add_clean_up\u003dFalse)\n\nyou do this a few times below, too.","commit_id":"670722b3b2b61d8115841e72a83bcd1f614d8b80"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"6a89ac8f35c48b23e5424f08f7f1ce61ff07fb1f","unresolved":false,"context_lines":[{"line_number":21,"context_line":"        self._create_dummy_idp()"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def test_user_delete(self):"},{"line_number":24,"context_line":"        identity_provider \u003d self._create_dummy_user(add_clean_up\u003dFalse)"},{"line_number":25,"context_line":"        raw_output \u003d self.openstack(\u0027identity provider delete %s\u0027"},{"line_number":26,"context_line":"                                    % identity_provider)"},{"line_number":27,"context_line":"        self.assertEqual(0, len(raw_output))"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_f7a84e79","line":24,"updated":"2015-08-05 20:10:42.000000000","message":"you mean idp","commit_id":"670722b3b2b61d8115841e72a83bcd1f614d8b80"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"46e5c3654e06ba129c8e82f3de78c93bd18166bc","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        self.assertEqual(0, len(raw_output))"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def test_idp_show(self):"},{"line_number":30,"context_line":"        identity_provider \u003d self._create_dummy_idp(add_clean_up\u003dFalse)"},{"line_number":31,"context_line":"        raw_output \u003d self.openstack(\u0027identity provider show %s\u0027"},{"line_number":32,"context_line":"                                    % identity_provider)"},{"line_number":33,"context_line":"        items \u003d self.parse_show(raw_output)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_c9da494b","line":30,"updated":"2015-08-06 06:34:35.000000000","message":"set add_clean_up to True here, since you\u0027re not deleting the idp in the test","commit_id":"8af79ffc2f231f60e080ce3da090a79255f44ec5"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"46e5c3654e06ba129c8e82f3de78c93bd18166bc","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        raw_output \u003d self.openstack(\u0027identity provider show %s\u0027"},{"line_number":32,"context_line":"                                    % identity_provider)"},{"line_number":33,"context_line":"        items \u003d self.parse_show(raw_output)"},{"line_number":34,"context_line":"        self.assert_show_fields(items, self.USER_FIELDS)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def test_idp_list(self):"},{"line_number":37,"context_line":"        raw_output \u003d self.openstack(\u0027identity provider list\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_a91fbd06","line":34,"updated":"2015-08-06 06:34:35.000000000","message":"USER_FIELDS seems wrong here","commit_id":"8af79ffc2f231f60e080ce3da090a79255f44ec5"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"46e5c3654e06ba129c8e82f3de78c93bd18166bc","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        self.assert_show_fields(items, self.USER_FIELDS)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def test_idp_list(self):"},{"line_number":37,"context_line":"        raw_output \u003d self.openstack(\u0027identity provider list\u0027)"},{"line_number":38,"context_line":"        items \u003d self.parse_listing(raw_output)"},{"line_number":39,"context_line":"        self.assert_table_structure(items, test_identity.IDENTITY_LIST_HEADERS)"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_49c63969","line":37,"updated":"2015-08-06 06:34:35.000000000","message":"call \n\n  idp \u003d self._create_dummy_idp(add_clean_up\u003dTrue)\n\nbefore calling list, otherwise you\u0027ll get an empty list","commit_id":"8af79ffc2f231f60e080ce3da090a79255f44ec5"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"46e5c3654e06ba129c8e82f3de78c93bd18166bc","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.assert_table_structure(items, test_identity.IDENTITY_LIST_HEADERS)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def test_idp_set(self):"},{"line_number":42,"context_line":"        identity_provider \u003d self._create_dummy_idp()"},{"line_number":43,"context_line":"        new_remoteid \u003d data_utils.rand_name(\u0027newRemoteId\u0027)"},{"line_number":44,"context_line":"        raw_output \u003d self.openstack(\u0027identity provider set \u0027"},{"line_number":45,"context_line":"                                    \u0027%(identity-provider)s \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_6971b543","line":42,"updated":"2015-08-06 06:34:35.000000000","message":"again, set add_clean_up\u003dTrue here","commit_id":"8af79ffc2f231f60e080ce3da090a79255f44ec5"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"3796d750ea2628df34514dff3be223fc7633628d","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        identity_provider \u003d self._create_dummy_idp(add_clean_up\u003dTrue)"},{"line_number":38,"context_line":"        raw_output \u003d self.openstack(\u0027identity provider list\u0027)"},{"line_number":39,"context_line":"        items \u003d self.parse_listing(raw_output)"},{"line_number":40,"context_line":"        self.assert_table_structure(items, test_identity.IDENTITY_LIST_HEADERS)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def test_idp_set(self):"},{"line_number":43,"context_line":"        identity_provider \u003d self._create_dummy_idp(add_clean_up\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_5a4d50c2","line":40,"updated":"2015-08-07 12:10:44.000000000","message":"Maybe assert that the new identity provider is in the list.  We sure are creating a lot of identity providers.  I don\u0027t know the impact of doing that, but it some cases we definitely don\u0027t want to do that.  May be fine here, not sure.","commit_id":"30b7b5a29240740c66cd6cf96ca8af9f7c60e154"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"3796d750ea2628df34514dff3be223fc7633628d","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        raw_output \u003d self.openstack(\u0027identity provider show %s\u0027"},{"line_number":52,"context_line":"                                    % identity_provider)"},{"line_number":53,"context_line":"        updated_value \u003d self.parse_show_as_object(raw_output)"},{"line_number":54,"context_line":"        self.assertEqual(new_remoteid, updated_value[\u0027remote_ids\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_ba001435","line":54,"updated":"2015-08-07 12:10:44.000000000","message":"The failure here almost makes it look like we could use a formatter for the list of remote ids to convert the list into a comma separated string.  Short of that, maybe assertIn instead of assertEqual?","commit_id":"30b7b5a29240740c66cd6cf96ca8af9f7c60e154"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"7c48f2060f071ccad2f30bf5491960cb1bfb21b9","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        self._create_dummy_idp(add_clean_up\u003dTrue)"},{"line_number":38,"context_line":"        raw_output \u003d self.openstack(\u0027identity provider list\u0027)"},{"line_number":39,"context_line":"        items \u003d self.parse_listing(raw_output)"},{"line_number":40,"context_line":"        self.assert_table_structure(items, test_identity.IDENTITY_LIST_HEADERS)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def test_idp_set(self):"},{"line_number":43,"context_line":"        identity_provider \u003d self._create_dummy_idp(add_clean_up\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_dd9fff63","line":40,"updated":"2015-08-21 16:04:45.000000000","message":"this line needs updating, should probably write:\n\n  self.IDENTITY_PROVIDER_LIST_HEADERS\n\nsince the variable is no longer a variable in test_identity, but inherited from test_identity.IdentityTests","commit_id":"ccc9e91bc0e5092d1a7daf3562c81aa95f0a822c"}]}
