)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"e047b803d6883fc977e34922db74b7beffcc32ff","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Alexey Miroshkin \u003calexey.miroshkin@ru.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-07-24 17:23:40 +0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add another check of the url in the \u0027self\u0027 link"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Methods RestfulTestCase.assertValidListResponse and consequently"},{"line_number":10,"context_line":"RestfulTestCase.assertValidListLinks (test_v3.py) don\u0027t have any"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"baada198_b10952df","line":7,"updated":"2014-07-24 15:10:13.000000000","message":"Probably need a better title than this...maybe something like: \"Check url is in the \u0027self\u0027 link in list responses\"","commit_id":"817488d45981a9b019df9115ef36e8732993cdcc"},{"author":{"_account_id":12215,"name":"Alexey Miroshkin","email":"alexey.miroshkin@ru.ibm.com","username":"amirosh"},"change_message_id":"229671939ff4278f91713181fa03b574a3441488","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Alexey Miroshkin \u003calexey.miroshkin@ru.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-07-24 17:23:40 +0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add another check of the url in the \u0027self\u0027 link"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Methods RestfulTestCase.assertValidListResponse and consequently"},{"line_number":10,"context_line":"RestfulTestCase.assertValidListLinks (test_v3.py) don\u0027t have any"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"baada198_19105cff","line":7,"in_reply_to":"baada198_b10952df","updated":"2014-07-25 07:12:46.000000000","message":"Done","commit_id":"817488d45981a9b019df9115ef36e8732993cdcc"},{"author":{"_account_id":11717,"name":"Ryan Oshima","email":"ryan.oshima@hp.com","username":"RyanOshima"},"change_message_id":"e417f68deeb27dc9089865a9593281767f113ec7","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"To implement a proper fix of the bug 1195037 (\"Self\" link in v3"},{"line_number":17,"context_line":"collections omits any url filters) we need to pass the request data,"},{"line_number":18,"context_line":"particularly command part of the url, and implement a proper check."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"This change should add an optional \u0027command\u0027 parameter to"},{"line_number":21,"context_line":"RestfulTestCase.assertValidListResponse and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"baada198_c8d7f421","line":18,"updated":"2014-07-24 18:03:36.000000000","message":"\"particularly\" -\u003e\"particularly the\"","commit_id":"817488d45981a9b019df9115ef36e8732993cdcc"},{"author":{"_account_id":12215,"name":"Alexey Miroshkin","email":"alexey.miroshkin@ru.ibm.com","username":"amirosh"},"change_message_id":"229671939ff4278f91713181fa03b574a3441488","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"To implement a proper fix of the bug 1195037 (\"Self\" link in v3"},{"line_number":17,"context_line":"collections omits any url filters) we need to pass the request data,"},{"line_number":18,"context_line":"particularly command part of the url, and implement a proper check."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"This change should add an optional \u0027command\u0027 parameter to"},{"line_number":21,"context_line":"RestfulTestCase.assertValidListResponse and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"baada198_39f8c0c3","line":18,"in_reply_to":"baada198_c8d7f421","updated":"2014-07-25 07:12:46.000000000","message":"Done","commit_id":"817488d45981a9b019df9115ef36e8732993cdcc"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"e047b803d6883fc977e34922db74b7beffcc32ff","unresolved":false,"context_lines":[{"line_number":21,"context_line":"RestfulTestCase.assertValidListResponse and"},{"line_number":22,"context_line":"RestfulTestCase.assertValidListLinks. Also it should add to"},{"line_number":23,"context_line":"RestfulTestCase.assertValidListLinks check that the command part of the"},{"line_number":24,"context_line":"url is in the \u0027self\u0027 link."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"To test this fix some test cases in test_v3_identity.py were updated"},{"line_number":27,"context_line":"with the optional \u0027command\u0027 parameter to demonstrate that check works."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"baada198_311c6213","line":24,"updated":"2014-07-24 15:10:13.000000000","message":"Probably too much info for a commit comment, save this for the code!  Just describing that you are adding a parameter to pass in the url that generated the list is enough.","commit_id":"817488d45981a9b019df9115ef36e8732993cdcc"},{"author":{"_account_id":12215,"name":"Alexey Miroshkin","email":"alexey.miroshkin@ru.ibm.com","username":"amirosh"},"change_message_id":"229671939ff4278f91713181fa03b574a3441488","unresolved":false,"context_lines":[{"line_number":21,"context_line":"RestfulTestCase.assertValidListResponse and"},{"line_number":22,"context_line":"RestfulTestCase.assertValidListLinks. Also it should add to"},{"line_number":23,"context_line":"RestfulTestCase.assertValidListLinks check that the command part of the"},{"line_number":24,"context_line":"url is in the \u0027self\u0027 link."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"To test this fix some test cases in test_v3_identity.py were updated"},{"line_number":27,"context_line":"with the optional \u0027command\u0027 parameter to demonstrate that check works."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"baada198_79feb8b0","line":24,"in_reply_to":"baada198_311c6213","updated":"2014-07-25 07:12:46.000000000","message":"Done","commit_id":"817488d45981a9b019df9115ef36e8732993cdcc"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"e047b803d6883fc977e34922db74b7beffcc32ff","unresolved":false,"context_lines":[{"line_number":26,"context_line":"To test this fix some test cases in test_v3_identity.py were updated"},{"line_number":27,"context_line":"with the optional \u0027command\u0027 parameter to demonstrate that check works."},{"line_number":28,"context_line":"The rest of test cases were left unchanged to demonstrate that this fix"},{"line_number":29,"context_line":"doesn\u0027t break anything."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Change-Id: Ifaf641e635709cbbefcde9f4908a1251a38a0405"},{"line_number":32,"context_line":"Closes-Bug: #1348063."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"baada198_91d28e32","line":29,"updated":"2014-07-24 15:10:13.000000000","message":"Not sure this is necessary, I\u0027d fix them all.","commit_id":"817488d45981a9b019df9115ef36e8732993cdcc"},{"author":{"_account_id":12215,"name":"Alexey Miroshkin","email":"alexey.miroshkin@ru.ibm.com","username":"amirosh"},"change_message_id":"229671939ff4278f91713181fa03b574a3441488","unresolved":false,"context_lines":[{"line_number":26,"context_line":"To test this fix some test cases in test_v3_identity.py were updated"},{"line_number":27,"context_line":"with the optional \u0027command\u0027 parameter to demonstrate that check works."},{"line_number":28,"context_line":"The rest of test cases were left unchanged to demonstrate that this fix"},{"line_number":29,"context_line":"doesn\u0027t break anything."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Change-Id: Ifaf641e635709cbbefcde9f4908a1251a38a0405"},{"line_number":32,"context_line":"Closes-Bug: #1348063."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"baada198_9918ecce","line":29,"in_reply_to":"baada198_91d28e32","updated":"2014-07-25 07:12:46.000000000","message":"Done","commit_id":"817488d45981a9b019df9115ef36e8732993cdcc"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"cb8868fdb64766eb21deef5e594b863b63512c00","unresolved":false,"context_lines":[{"line_number":29,"context_line":"doesn\u0027t break anything."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Change-Id: Ifaf641e635709cbbefcde9f4908a1251a38a0405"},{"line_number":32,"context_line":"Closes-Bug: #1348063."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"baada198_c2d7d621","line":32,"updated":"2014-07-24 16:11:06.000000000","message":"In general, the Chage-Id should come last, so suggest move the Closes-Bug line above it","commit_id":"817488d45981a9b019df9115ef36e8732993cdcc"},{"author":{"_account_id":12215,"name":"Alexey Miroshkin","email":"alexey.miroshkin@ru.ibm.com","username":"amirosh"},"change_message_id":"229671939ff4278f91713181fa03b574a3441488","unresolved":false,"context_lines":[{"line_number":29,"context_line":"doesn\u0027t break anything."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Change-Id: Ifaf641e635709cbbefcde9f4908a1251a38a0405"},{"line_number":32,"context_line":"Closes-Bug: #1348063."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"baada198_d97d04e9","line":32,"in_reply_to":"baada198_c2d7d621","updated":"2014-07-25 07:12:46.000000000","message":"Done","commit_id":"817488d45981a9b019df9115ef36e8732993cdcc"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"0fb203e03d6354723f72f54995a2c6ee7dd09a57","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"self.assertThat(links[\u0027self\u0027], matchers.StartsWith(\u0027http://localhost\u0027))"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"To implement a proper fix of the bug 1195037 (\"Self\" link in v3"},{"line_number":16,"context_line":"collections omits any url filters) we need to pass the request data,"},{"line_number":17,"context_line":"particularly the resource part of the url (like \u0027/users\u0027)."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"baada198_876eb4c6","line":15,"updated":"2014-07-25 08:35:15.000000000","message":"So while this is true, the fix in this patch is standalone and worth it anyway.  So maybe just say something like:\n\nThe ability for the assertValidList methods to check the url will also form the basis for testing of bug 1195037....etc. etc.","commit_id":"4263f1b8e5cae7eb9da08f91c8e77175b5821413"},{"author":{"_account_id":12215,"name":"Alexey Miroshkin","email":"alexey.miroshkin@ru.ibm.com","username":"amirosh"},"change_message_id":"ecbeddfe45ab2ed97bb9c3f0d675ae18c78f3023","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"self.assertThat(links[\u0027self\u0027], matchers.StartsWith(\u0027http://localhost\u0027))"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"To implement a proper fix of the bug 1195037 (\"Self\" link in v3"},{"line_number":16,"context_line":"collections omits any url filters) we need to pass the request data,"},{"line_number":17,"context_line":"particularly the resource part of the url (like \u0027/users\u0027)."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"baada198_c7d6ecc2","line":15,"in_reply_to":"baada198_876eb4c6","updated":"2014-07-25 09:05:06.000000000","message":"Done","commit_id":"4263f1b8e5cae7eb9da08f91c8e77175b5821413"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"24cee2ce965c7691119e99b4234623e78ad2aa3a","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"self.assertThat(links[\u0027self\u0027], matchers.StartsWith(\u0027http://localhost\u0027))"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This fix add an optional \u0027resource_url\u0027 parameter."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"The ability for the assertValidListLinks methods to check the url will"},{"line_number":18,"context_line":"also form the basis for testing of bug 1195037 (\"Self\" link in v3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"baada198_73531ede","line":15,"updated":"2014-07-25 10:59:42.000000000","message":"This fix adds....","commit_id":"2388e40f68faed49a2e1703a4d5b0a9270a96717"},{"author":{"_account_id":12215,"name":"Alexey Miroshkin","email":"alexey.miroshkin@ru.ibm.com","username":"amirosh"},"change_message_id":"bb6c585d9db5c4072dde3977d61c494e138c8b67","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"self.assertThat(links[\u0027self\u0027], matchers.StartsWith(\u0027http://localhost\u0027))"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This fix add an optional \u0027resource_url\u0027 parameter."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"The ability for the assertValidListLinks methods to check the url will"},{"line_number":18,"context_line":"also form the basis for testing of bug 1195037 (\"Self\" link in v3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"baada198_fee1b52b","line":15,"in_reply_to":"baada198_73531ede","updated":"2014-07-25 11:23:25.000000000","message":"Done","commit_id":"2388e40f68faed49a2e1703a4d5b0a9270a96717"}],"keystone/tests/test_v3.py":[{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"6852b54362293c65e1605b745b4b229ccc568545","unresolved":false,"context_lines":[{"line_number":503,"context_line":"        self.assertIsNotNone(resp[\u0027error\u0027].get(\u0027message\u0027))"},{"line_number":504,"context_line":"        self.assertEqual(int(resp[\u0027error\u0027][\u0027code\u0027]), r.status_code)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    def assertValidListLinks(self, links, command\u003dNone):"},{"line_number":507,"context_line":"        self.assertIsNotNone(links)"},{"line_number":508,"context_line":"        self.assertIsNotNone(links.get(\u0027self\u0027))"},{"line_number":509,"context_line":"        self.assertThat(links[\u0027self\u0027], matchers.StartsWith(\u0027http://localhost\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_25c3398b","line":506,"updated":"2014-07-24 17:36:55.000000000","message":"Agreed with Henry\u0027 comment below.  The arg name \"command\" doesn\u0027t quite do it and is easily misunderstood.","commit_id":"817488d45981a9b019df9115ef36e8732993cdcc"},{"author":{"_account_id":12215,"name":"Alexey Miroshkin","email":"alexey.miroshkin@ru.ibm.com","username":"amirosh"},"change_message_id":"229671939ff4278f91713181fa03b574a3441488","unresolved":false,"context_lines":[{"line_number":503,"context_line":"        self.assertIsNotNone(resp[\u0027error\u0027].get(\u0027message\u0027))"},{"line_number":504,"context_line":"        self.assertEqual(int(resp[\u0027error\u0027][\u0027code\u0027]), r.status_code)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    def assertValidListLinks(self, links, command\u003dNone):"},{"line_number":507,"context_line":"        self.assertIsNotNone(links)"},{"line_number":508,"context_line":"        self.assertIsNotNone(links.get(\u0027self\u0027))"},{"line_number":509,"context_line":"        self.assertThat(links[\u0027self\u0027], matchers.StartsWith(\u0027http://localhost\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_a3e901e5","line":506,"in_reply_to":"baada198_25c3398b","updated":"2014-07-25 07:12:46.000000000","message":"David, here is my reply to Henry below, what do you think?: \"I agree to some extent, but it doesn\u0027t have to be a valid URL, the final part of it like \u0027/users\u0027 would work too, moreover it would be the most common use case. Perhaps \u0027resource_url\u0027 is the right word?\"","commit_id":"817488d45981a9b019df9115ef36e8732993cdcc"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"6f81a166e1261c2c3493ea18eb811866d0c8a045","unresolved":false,"context_lines":[{"line_number":503,"context_line":"        self.assertIsNotNone(resp[\u0027error\u0027].get(\u0027message\u0027))"},{"line_number":504,"context_line":"        self.assertEqual(int(resp[\u0027error\u0027][\u0027code\u0027]), r.status_code)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    def assertValidListLinks(self, links, command\u003dNone):"},{"line_number":507,"context_line":"        self.assertIsNotNone(links)"},{"line_number":508,"context_line":"        self.assertIsNotNone(links.get(\u0027self\u0027))"},{"line_number":509,"context_line":"        self.assertThat(links[\u0027self\u0027], matchers.StartsWith(\u0027http://localhost\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_f98705b4","line":506,"in_reply_to":"baada198_a3e901e5","updated":"2014-07-25 16:06:36.000000000","message":"I like the proposal.  Arg \"resource_url\" is much better :)","commit_id":"817488d45981a9b019df9115ef36e8732993cdcc"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"9993e3001f7adcea837fde3e76ea0dc50e594317","unresolved":false,"context_lines":[{"line_number":523,"context_line":""},{"line_number":524,"context_line":"    def assertValidListResponse(self, resp, key, entity_validator, ref\u003dNone,"},{"line_number":525,"context_line":"                                expected_length\u003dNone, keys_to_check\u003dNone,"},{"line_number":526,"context_line":"                                command\u003dNone):"},{"line_number":527,"context_line":"        \"\"\"Make assertions common to all API list responses."},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"        If a reference is provided, it\u0027s ID will be searched for in the"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_c26276ac","line":526,"updated":"2014-07-24 16:08:51.000000000","message":"not quite sure about the word \u0027command\u0027...maybe \u0027request_url\u0027?","commit_id":"817488d45981a9b019df9115ef36e8732993cdcc"},{"author":{"_account_id":12215,"name":"Alexey Miroshkin","email":"alexey.miroshkin@ru.ibm.com","username":"amirosh"},"change_message_id":"229671939ff4278f91713181fa03b574a3441488","unresolved":false,"context_lines":[{"line_number":523,"context_line":""},{"line_number":524,"context_line":"    def assertValidListResponse(self, resp, key, entity_validator, ref\u003dNone,"},{"line_number":525,"context_line":"                                expected_length\u003dNone, keys_to_check\u003dNone,"},{"line_number":526,"context_line":"                                command\u003dNone):"},{"line_number":527,"context_line":"        \"\"\"Make assertions common to all API list responses."},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"        If a reference is provided, it\u0027s ID will be searched for in the"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_a364a1b3","line":526,"in_reply_to":"baada198_c26276ac","updated":"2014-07-25 07:12:46.000000000","message":"I agree to some extent, but it doesn\u0027t have to be a valid URL, the final part of it like \u0027/users\u0027 would work too, moreover it would be the most common use case. Perhaps \u0027resource_url\u0027 is the right word?","commit_id":"817488d45981a9b019df9115ef36e8732993cdcc"}],"keystone/tests/test_v3_identity.py":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5797d98ceb471fadffb0134bf54e57ddd70b9179","unresolved":false,"context_lines":[{"line_number":891,"context_line":"        r \u003d self.get(collection_url)"},{"line_number":892,"context_line":"        self.assertValidRoleListResponse(r, ref\u003dself.role,"},{"line_number":893,"context_line":"                                         resource_url\u003dcollection_url)"},{"line_number":894,"context_line":"        self.assertIn(collection_url, r.result[\u0027links\u0027][\u0027self\u0027])"},{"line_number":895,"context_line":""},{"line_number":896,"context_line":"        # FIXME(gyee): this test is no longer valid as user"},{"line_number":897,"context_line":"        # have no role in the project. Can\u0027t get a scoped token"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_24032677","line":894,"updated":"2014-07-25 08:30:53.000000000","message":"we can drop this line now...this is what you are doing inside the assertValidXYZListResponse....","commit_id":"4263f1b8e5cae7eb9da08f91c8e77175b5821413"},{"author":{"_account_id":12215,"name":"Alexey Miroshkin","email":"alexey.miroshkin@ru.ibm.com","username":"amirosh"},"change_message_id":"ecbeddfe45ab2ed97bb9c3f0d675ae18c78f3023","unresolved":false,"context_lines":[{"line_number":891,"context_line":"        r \u003d self.get(collection_url)"},{"line_number":892,"context_line":"        self.assertValidRoleListResponse(r, ref\u003dself.role,"},{"line_number":893,"context_line":"                                         resource_url\u003dcollection_url)"},{"line_number":894,"context_line":"        self.assertIn(collection_url, r.result[\u0027links\u0027][\u0027self\u0027])"},{"line_number":895,"context_line":""},{"line_number":896,"context_line":"        # FIXME(gyee): this test is no longer valid as user"},{"line_number":897,"context_line":"        # have no role in the project. Can\u0027t get a scoped token"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_47f2dc6f","line":894,"in_reply_to":"baada198_24032677","updated":"2014-07-25 09:05:06.000000000","message":"Done","commit_id":"4263f1b8e5cae7eb9da08f91c8e77175b5821413"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5797d98ceb471fadffb0134bf54e57ddd70b9179","unresolved":false,"context_lines":[{"line_number":933,"context_line":"        r \u003d self.get(collection_url)"},{"line_number":934,"context_line":"        self.assertValidRoleListResponse(r, ref\u003dself.role,"},{"line_number":935,"context_line":"                                         resource_url\u003dcollection_url)"},{"line_number":936,"context_line":"        self.assertIn(collection_url, r.result[\u0027links\u0027][\u0027self\u0027])"},{"line_number":937,"context_line":""},{"line_number":938,"context_line":"        self.delete(member_url)"},{"line_number":939,"context_line":"        r \u003d self.get(collection_url)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_64f99e81","line":936,"updated":"2014-07-25 08:30:53.000000000","message":"as above","commit_id":"4263f1b8e5cae7eb9da08f91c8e77175b5821413"},{"author":{"_account_id":12215,"name":"Alexey Miroshkin","email":"alexey.miroshkin@ru.ibm.com","username":"amirosh"},"change_message_id":"ecbeddfe45ab2ed97bb9c3f0d675ae18c78f3023","unresolved":false,"context_lines":[{"line_number":933,"context_line":"        r \u003d self.get(collection_url)"},{"line_number":934,"context_line":"        self.assertValidRoleListResponse(r, ref\u003dself.role,"},{"line_number":935,"context_line":"                                         resource_url\u003dcollection_url)"},{"line_number":936,"context_line":"        self.assertIn(collection_url, r.result[\u0027links\u0027][\u0027self\u0027])"},{"line_number":937,"context_line":""},{"line_number":938,"context_line":"        self.delete(member_url)"},{"line_number":939,"context_line":"        r \u003d self.get(collection_url)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_67e360a0","line":936,"in_reply_to":"baada198_64f99e81","updated":"2014-07-25 09:05:06.000000000","message":"Done","commit_id":"4263f1b8e5cae7eb9da08f91c8e77175b5821413"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5797d98ceb471fadffb0134bf54e57ddd70b9179","unresolved":false,"context_lines":[{"line_number":973,"context_line":"        r \u003d self.get(collection_url)"},{"line_number":974,"context_line":"        self.assertValidRoleListResponse(r, ref\u003dself.role,"},{"line_number":975,"context_line":"                                         resource_url\u003dcollection_url)"},{"line_number":976,"context_line":"        self.assertIn(collection_url, r.result[\u0027links\u0027][\u0027self\u0027])"},{"line_number":977,"context_line":""},{"line_number":978,"context_line":"        self.delete(member_url)"},{"line_number":979,"context_line":"        r \u003d self.get(collection_url)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_84feb268","line":976,"updated":"2014-07-25 08:30:53.000000000","message":"as above","commit_id":"4263f1b8e5cae7eb9da08f91c8e77175b5821413"},{"author":{"_account_id":12215,"name":"Alexey Miroshkin","email":"alexey.miroshkin@ru.ibm.com","username":"amirosh"},"change_message_id":"ecbeddfe45ab2ed97bb9c3f0d675ae18c78f3023","unresolved":false,"context_lines":[{"line_number":973,"context_line":"        r \u003d self.get(collection_url)"},{"line_number":974,"context_line":"        self.assertValidRoleListResponse(r, ref\u003dself.role,"},{"line_number":975,"context_line":"                                         resource_url\u003dcollection_url)"},{"line_number":976,"context_line":"        self.assertIn(collection_url, r.result[\u0027links\u0027][\u0027self\u0027])"},{"line_number":977,"context_line":""},{"line_number":978,"context_line":"        self.delete(member_url)"},{"line_number":979,"context_line":"        r \u003d self.get(collection_url)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_87e8747c","line":976,"in_reply_to":"baada198_84feb268","updated":"2014-07-25 09:05:06.000000000","message":"Done","commit_id":"4263f1b8e5cae7eb9da08f91c8e77175b5821413"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5797d98ceb471fadffb0134bf54e57ddd70b9179","unresolved":false,"context_lines":[{"line_number":1014,"context_line":"        r \u003d self.get(collection_url)"},{"line_number":1015,"context_line":"        self.assertValidRoleListResponse(r, ref\u003dself.role,"},{"line_number":1016,"context_line":"                                         resource_url\u003dcollection_url)"},{"line_number":1017,"context_line":"        self.assertIn(collection_url, r.result[\u0027links\u0027][\u0027self\u0027])"},{"line_number":1018,"context_line":""},{"line_number":1019,"context_line":"        self.delete(member_url)"},{"line_number":1020,"context_line":"        r \u003d self.get(collection_url)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_e4eccebe","line":1017,"updated":"2014-07-25 08:30:53.000000000","message":"as above","commit_id":"4263f1b8e5cae7eb9da08f91c8e77175b5821413"},{"author":{"_account_id":12215,"name":"Alexey Miroshkin","email":"alexey.miroshkin@ru.ibm.com","username":"amirosh"},"change_message_id":"ecbeddfe45ab2ed97bb9c3f0d675ae18c78f3023","unresolved":false,"context_lines":[{"line_number":1014,"context_line":"        r \u003d self.get(collection_url)"},{"line_number":1015,"context_line":"        self.assertValidRoleListResponse(r, ref\u003dself.role,"},{"line_number":1016,"context_line":"                                         resource_url\u003dcollection_url)"},{"line_number":1017,"context_line":"        self.assertIn(collection_url, r.result[\u0027links\u0027][\u0027self\u0027])"},{"line_number":1018,"context_line":""},{"line_number":1019,"context_line":"        self.delete(member_url)"},{"line_number":1020,"context_line":"        r \u003d self.get(collection_url)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_c7fd0c3d","line":1017,"in_reply_to":"baada198_e4eccebe","updated":"2014-07-25 09:05:06.000000000","message":"Done","commit_id":"4263f1b8e5cae7eb9da08f91c8e77175b5821413"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5797d98ceb471fadffb0134bf54e57ddd70b9179","unresolved":false,"context_lines":[{"line_number":1079,"context_line":"        r \u003d self.get(collection_url)"},{"line_number":1080,"context_line":"        self.assertValidRoleAssignmentListResponse(r,"},{"line_number":1081,"context_line":"                                                   resource_url\u003dcollection_url)"},{"line_number":1082,"context_line":"        self.assertIn(collection_url, r.result[\u0027links\u0027][\u0027self\u0027])"},{"line_number":1083,"context_line":"        existing_assignments \u003d len(r.result.get(\u0027role_assignments\u0027))"},{"line_number":1084,"context_line":""},{"line_number":1085,"context_line":"        # Now add one of each of the four types of assignment, making sure"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_c43a6a33","line":1082,"updated":"2014-07-25 08:30:53.000000000","message":"as above","commit_id":"4263f1b8e5cae7eb9da08f91c8e77175b5821413"},{"author":{"_account_id":12215,"name":"Alexey Miroshkin","email":"alexey.miroshkin@ru.ibm.com","username":"amirosh"},"change_message_id":"ecbeddfe45ab2ed97bb9c3f0d675ae18c78f3023","unresolved":false,"context_lines":[{"line_number":1079,"context_line":"        r \u003d self.get(collection_url)"},{"line_number":1080,"context_line":"        self.assertValidRoleAssignmentListResponse(r,"},{"line_number":1081,"context_line":"                                                   resource_url\u003dcollection_url)"},{"line_number":1082,"context_line":"        self.assertIn(collection_url, r.result[\u0027links\u0027][\u0027self\u0027])"},{"line_number":1083,"context_line":"        existing_assignments \u003d len(r.result.get(\u0027role_assignments\u0027))"},{"line_number":1084,"context_line":""},{"line_number":1085,"context_line":"        # Now add one of each of the four types of assignment, making sure"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_e7f6905d","line":1082,"in_reply_to":"baada198_c43a6a33","updated":"2014-07-25 09:05:06.000000000","message":"Done","commit_id":"4263f1b8e5cae7eb9da08f91c8e77175b5821413"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5797d98ceb471fadffb0134bf54e57ddd70b9179","unresolved":false,"context_lines":[{"line_number":1176,"context_line":"        r \u003d self.get(collection_url)"},{"line_number":1177,"context_line":"        self.assertValidRoleAssignmentListResponse(r,"},{"line_number":1178,"context_line":"                                                   resource_url\u003dcollection_url)"},{"line_number":1179,"context_line":"        self.assertIn(collection_url, r.result[\u0027links\u0027][\u0027self\u0027])"},{"line_number":1180,"context_line":"        existing_assignments \u003d len(r.result.get(\u0027role_assignments\u0027))"},{"line_number":1181,"context_line":""},{"line_number":1182,"context_line":"        gd_url, gd_entity \u003d _build_role_assignment_url_and_entity("}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_a424960e","line":1179,"updated":"2014-07-25 08:30:53.000000000","message":"as above","commit_id":"4263f1b8e5cae7eb9da08f91c8e77175b5821413"},{"author":{"_account_id":12215,"name":"Alexey Miroshkin","email":"alexey.miroshkin@ru.ibm.com","username":"amirosh"},"change_message_id":"ecbeddfe45ab2ed97bb9c3f0d675ae18c78f3023","unresolved":false,"context_lines":[{"line_number":1176,"context_line":"        r \u003d self.get(collection_url)"},{"line_number":1177,"context_line":"        self.assertValidRoleAssignmentListResponse(r,"},{"line_number":1178,"context_line":"                                                   resource_url\u003dcollection_url)"},{"line_number":1179,"context_line":"        self.assertIn(collection_url, r.result[\u0027links\u0027][\u0027self\u0027])"},{"line_number":1180,"context_line":"        existing_assignments \u003d len(r.result.get(\u0027role_assignments\u0027))"},{"line_number":1181,"context_line":""},{"line_number":1182,"context_line":"        gd_url, gd_entity \u003d _build_role_assignment_url_and_entity("}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_07f46453","line":1179,"in_reply_to":"baada198_a424960e","updated":"2014-07-25 09:05:06.000000000","message":"Done","commit_id":"4263f1b8e5cae7eb9da08f91c8e77175b5821413"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"907acff05363ca286cd39856daaa815ecd6779f5","unresolved":false,"context_lines":[{"line_number":1254,"context_line":"            role_id\u003dself.role_id)"},{"line_number":1255,"context_line":"        self.put(gd_url)"},{"line_number":1256,"context_line":"        r \u003d self.get(collection_url)"},{"line_number":1257,"context_line":"        self.assertValidRoleAssignmentListResponse(r)"},{"line_number":1258,"context_line":"        self.assertEqual(existing_assignments + 1,"},{"line_number":1259,"context_line":"                         len(r.result.get(\u0027role_assignments\u0027)))"},{"line_number":1260,"context_line":"        self.assertRoleAssignmentInListResponse(r, gd_entity, link_url\u003dgd_url)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_4a03c30c","line":1257,"updated":"2014-07-25 09:15:57.000000000","message":"is there a reason we don\u0027t include the test here?","commit_id":"ead6f7aec54e53da113c7c99645d81e574a8fcd5"},{"author":{"_account_id":12215,"name":"Alexey Miroshkin","email":"alexey.miroshkin@ru.ibm.com","username":"amirosh"},"change_message_id":"be3a5d69d29149038424cc22909625adaf1aafde","unresolved":false,"context_lines":[{"line_number":1254,"context_line":"            role_id\u003dself.role_id)"},{"line_number":1255,"context_line":"        self.put(gd_url)"},{"line_number":1256,"context_line":"        r \u003d self.get(collection_url)"},{"line_number":1257,"context_line":"        self.assertValidRoleAssignmentListResponse(r)"},{"line_number":1258,"context_line":"        self.assertEqual(existing_assignments + 1,"},{"line_number":1259,"context_line":"                         len(r.result.get(\u0027role_assignments\u0027)))"},{"line_number":1260,"context_line":"        self.assertRoleAssignmentInListResponse(r, gd_entity, link_url\u003dgd_url)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_edebd1da","line":1257,"in_reply_to":"baada198_4a03c30c","updated":"2014-07-25 09:59:36.000000000","message":"Missed this place, thanks","commit_id":"ead6f7aec54e53da113c7c99645d81e574a8fcd5"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"907acff05363ca286cd39856daaa815ecd6779f5","unresolved":false,"context_lines":[{"line_number":1769,"context_line":"                \u0027group_id\u0027: group1[\u0027id\u0027],"},{"line_number":1770,"context_line":"                \u0027domain_id\u0027: domain[\u0027id\u0027]})"},{"line_number":1771,"context_line":"        r \u003d self.get(collection_url)"},{"line_number":1772,"context_line":"        self.assertValidRoleAssignmentListResponse(r)"},{"line_number":1773,"context_line":"        self.assertEqual(1, len(r.result.get(\u0027role_assignments\u0027)))"},{"line_number":1774,"context_line":"        gd_url, gd_entity \u003d _build_role_assignment_url_and_entity("},{"line_number":1775,"context_line":"            domain_id\u003ddomain[\u0027id\u0027], group_id\u003dgroup1[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_6a1b276f","line":1772,"updated":"2014-07-25 09:15:57.000000000","message":"and here (and the other calls in this method)?","commit_id":"ead6f7aec54e53da113c7c99645d81e574a8fcd5"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"e4b0d1c7b13df04a3704273c63c585ed8fb3e371","unresolved":false,"context_lines":[{"line_number":1769,"context_line":"                \u0027group_id\u0027: group1[\u0027id\u0027],"},{"line_number":1770,"context_line":"                \u0027domain_id\u0027: domain[\u0027id\u0027]})"},{"line_number":1771,"context_line":"        r \u003d self.get(collection_url)"},{"line_number":1772,"context_line":"        self.assertValidRoleAssignmentListResponse(r)"},{"line_number":1773,"context_line":"        self.assertEqual(1, len(r.result.get(\u0027role_assignments\u0027)))"},{"line_number":1774,"context_line":"        gd_url, gd_entity \u003d _build_role_assignment_url_and_entity("},{"line_number":1775,"context_line":"            domain_id\u003ddomain[\u0027id\u0027], group_id\u003dgroup1[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_733cfe92","line":1772,"in_reply_to":"baada198_2d8ea927","updated":"2014-07-25 10:59:06.000000000","message":"ahh, right - got it.  It might be sensible to add a TODO here, which references the bug, so that people can see you plan to come back and add this.  Same for the one further down.","commit_id":"ead6f7aec54e53da113c7c99645d81e574a8fcd5"},{"author":{"_account_id":12215,"name":"Alexey Miroshkin","email":"alexey.miroshkin@ru.ibm.com","username":"amirosh"},"change_message_id":"be3a5d69d29149038424cc22909625adaf1aafde","unresolved":false,"context_lines":[{"line_number":1769,"context_line":"                \u0027group_id\u0027: group1[\u0027id\u0027],"},{"line_number":1770,"context_line":"                \u0027domain_id\u0027: domain[\u0027id\u0027]})"},{"line_number":1771,"context_line":"        r \u003d self.get(collection_url)"},{"line_number":1772,"context_line":"        self.assertValidRoleAssignmentListResponse(r)"},{"line_number":1773,"context_line":"        self.assertEqual(1, len(r.result.get(\u0027role_assignments\u0027)))"},{"line_number":1774,"context_line":"        gd_url, gd_entity \u003d _build_role_assignment_url_and_entity("},{"line_number":1775,"context_line":"            domain_id\u003ddomain[\u0027id\u0027], group_id\u003dgroup1[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_2d8ea927","line":1772,"in_reply_to":"baada198_6a1b276f","updated":"2014-07-25 09:59:36.000000000","message":"Wouldn\u0027t work because of the bug 1195037 (\"Self\" link in v3 collections omits any url filters), this test will be updated as part of that fix.","commit_id":"ead6f7aec54e53da113c7c99645d81e574a8fcd5"},{"author":{"_account_id":12215,"name":"Alexey Miroshkin","email":"alexey.miroshkin@ru.ibm.com","username":"amirosh"},"change_message_id":"7625ba9716f3d75c91fd39a767ce1c6949355bcc","unresolved":false,"context_lines":[{"line_number":1769,"context_line":"                \u0027group_id\u0027: group1[\u0027id\u0027],"},{"line_number":1770,"context_line":"                \u0027domain_id\u0027: domain[\u0027id\u0027]})"},{"line_number":1771,"context_line":"        r \u003d self.get(collection_url)"},{"line_number":1772,"context_line":"        self.assertValidRoleAssignmentListResponse(r)"},{"line_number":1773,"context_line":"        self.assertEqual(1, len(r.result.get(\u0027role_assignments\u0027)))"},{"line_number":1774,"context_line":"        gd_url, gd_entity \u003d _build_role_assignment_url_and_entity("},{"line_number":1775,"context_line":"            domain_id\u003ddomain[\u0027id\u0027], group_id\u003dgroup1[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_3e816d4d","line":1772,"in_reply_to":"baada198_733cfe92","updated":"2014-07-25 11:20:14.000000000","message":"Done","commit_id":"ead6f7aec54e53da113c7c99645d81e574a8fcd5"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"907acff05363ca286cd39856daaa815ecd6779f5","unresolved":false,"context_lines":[{"line_number":1879,"context_line":"        collection_url \u003d ("},{"line_number":1880,"context_line":"            \u0027/role_assignments?scope.OS-INHERIT:inherited_to\u003dprojects\u0027)"},{"line_number":1881,"context_line":"        r \u003d self.get(collection_url)"},{"line_number":1882,"context_line":"        self.assertValidRoleAssignmentListResponse(r)"},{"line_number":1883,"context_line":"        self.assertEqual(2, len(r.result.get(\u0027role_assignments\u0027)))"},{"line_number":1884,"context_line":"        ud_url, ud_entity \u003d _build_role_assignment_url_and_entity("},{"line_number":1885,"context_line":"            domain_id\u003ddomain[\u0027id\u0027], user_id\u003duser1[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_0a154b3c","line":1882,"updated":"2014-07-25 09:15:57.000000000","message":"and here?","commit_id":"ead6f7aec54e53da113c7c99645d81e574a8fcd5"},{"author":{"_account_id":12215,"name":"Alexey Miroshkin","email":"alexey.miroshkin@ru.ibm.com","username":"amirosh"},"change_message_id":"be3a5d69d29149038424cc22909625adaf1aafde","unresolved":false,"context_lines":[{"line_number":1879,"context_line":"        collection_url \u003d ("},{"line_number":1880,"context_line":"            \u0027/role_assignments?scope.OS-INHERIT:inherited_to\u003dprojects\u0027)"},{"line_number":1881,"context_line":"        r \u003d self.get(collection_url)"},{"line_number":1882,"context_line":"        self.assertValidRoleAssignmentListResponse(r)"},{"line_number":1883,"context_line":"        self.assertEqual(2, len(r.result.get(\u0027role_assignments\u0027)))"},{"line_number":1884,"context_line":"        ud_url, ud_entity \u003d _build_role_assignment_url_and_entity("},{"line_number":1885,"context_line":"            domain_id\u003ddomain[\u0027id\u0027], user_id\u003duser1[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_4dbafdc0","line":1882,"in_reply_to":"baada198_0a154b3c","updated":"2014-07-25 09:59:36.000000000","message":"Wouldn\u0027t work because of the bug 1195037 (\"Self\" link in v3 collections omits any url filters), this test will be updated as part of that fix.","commit_id":"ead6f7aec54e53da113c7c99645d81e574a8fcd5"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"e4b0d1c7b13df04a3704273c63c585ed8fb3e371","unresolved":false,"context_lines":[{"line_number":1879,"context_line":"        collection_url \u003d ("},{"line_number":1880,"context_line":"            \u0027/role_assignments?scope.OS-INHERIT:inherited_to\u003dprojects\u0027)"},{"line_number":1881,"context_line":"        r \u003d self.get(collection_url)"},{"line_number":1882,"context_line":"        self.assertValidRoleAssignmentListResponse(r)"},{"line_number":1883,"context_line":"        self.assertEqual(2, len(r.result.get(\u0027role_assignments\u0027)))"},{"line_number":1884,"context_line":"        ud_url, ud_entity \u003d _build_role_assignment_url_and_entity("},{"line_number":1885,"context_line":"            domain_id\u003ddomain[\u0027id\u0027], user_id\u003duser1[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_b3493634","line":1882,"in_reply_to":"baada198_4dbafdc0","updated":"2014-07-25 10:59:06.000000000","message":"as above","commit_id":"ead6f7aec54e53da113c7c99645d81e574a8fcd5"},{"author":{"_account_id":12215,"name":"Alexey Miroshkin","email":"alexey.miroshkin@ru.ibm.com","username":"amirosh"},"change_message_id":"7625ba9716f3d75c91fd39a767ce1c6949355bcc","unresolved":false,"context_lines":[{"line_number":1879,"context_line":"        collection_url \u003d ("},{"line_number":1880,"context_line":"            \u0027/role_assignments?scope.OS-INHERIT:inherited_to\u003dprojects\u0027)"},{"line_number":1881,"context_line":"        r \u003d self.get(collection_url)"},{"line_number":1882,"context_line":"        self.assertValidRoleAssignmentListResponse(r)"},{"line_number":1883,"context_line":"        self.assertEqual(2, len(r.result.get(\u0027role_assignments\u0027)))"},{"line_number":1884,"context_line":"        ud_url, ud_entity \u003d _build_role_assignment_url_and_entity("},{"line_number":1885,"context_line":"            domain_id\u003ddomain[\u0027id\u0027], user_id\u003duser1[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_feb3754b","line":1882,"in_reply_to":"baada198_b3493634","updated":"2014-07-25 11:20:14.000000000","message":"Done","commit_id":"ead6f7aec54e53da113c7c99645d81e574a8fcd5"}]}
