)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"18ddbb02a8c801063007d3a9a8471a6fa486f375","unresolved":true,"context_lines":[{"line_number":21,"context_line":"http://paste.openstack.org/show/801106/"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"WIP until at least some of the tests are implemented, and some more"},{"line_number":24,"context_line":"useful asserts are written."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Change-Id: Iee91d80cef3b9e6024507171352c6de9e89ce36e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"64182986_dbb26395","line":24,"updated":"2021-01-20 03:12:52.000000000","message":"This could be deleted since tests will be implemented in later changes in this series","commit_id":"7b1f2bd6e0f99c1d5b07760f7ac37a59054d26d6"}],"ironic/tests/unit/api/test_acl.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"311b360e72744f18816a8493a338ec525b1edbda","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        if assert_status:"},{"line_number":195,"context_line":"            self.assertEqual(assert_status, response.status_int)"},{"line_number":196,"context_line":"            self.assertFalse(other_asserts,"},{"line_number":197,"context_line":"                             \"assert_status can\u0027t be used with other asserts\")"},{"line_number":198,"context_line":"            return"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        if assert_dict_contains:"}],"source_content_type":"text/x-python","patch_set":3,"id":"724c92da_57a0700a","line":197,"updated":"2021-01-11 17:31:39.000000000","message":"I actually thing every test should assert a status. Anyway, this limitation seems completely artificial.","commit_id":"2bebba57cf698c0bf6ddbd882502bdfe282ae42b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"0ee5e9838aef11b07339b7e95907fdaffc72c380","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        if assert_status:"},{"line_number":195,"context_line":"            self.assertEqual(assert_status, response.status_int)"},{"line_number":196,"context_line":"            self.assertFalse(other_asserts,"},{"line_number":197,"context_line":"                             \"assert_status can\u0027t be used with other asserts\")"},{"line_number":198,"context_line":"            return"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        if assert_dict_contains:"}],"source_content_type":"text/x-python","patch_set":3,"id":"98a550ca_e93280e5","line":197,"in_reply_to":"724c92da_57a0700a","updated":"2021-01-11 19:51:35.000000000","message":"I kind of agree. I can\u0027t think of a reason we need to have the constraint.","commit_id":"2bebba57cf698c0bf6ddbd882502bdfe282ae42b"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"cf181ce0cbb0fec99f61238237093142fdbfce5b","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        if assert_status:"},{"line_number":195,"context_line":"            self.assertEqual(assert_status, response.status_int)"},{"line_number":196,"context_line":"            self.assertFalse(other_asserts,"},{"line_number":197,"context_line":"                             \"assert_status can\u0027t be used with other asserts\")"},{"line_number":198,"context_line":"            return"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        if assert_dict_contains:"}],"source_content_type":"text/x-python","patch_set":3,"id":"f8ecb8f5_005b0d83","line":197,"in_reply_to":"98a550ca_e93280e5","updated":"2021-01-18 03:43:58.000000000","message":"This is all due to my confusion about what the expect_errors argument to get_json actually does (return the full response object, don\u0027t raise on error).\n\nAt this point it would be best if this is done in this change, so get rid of the expect_errors variable, call get_json(expect_errors\u003dTrue)","commit_id":"2bebba57cf698c0bf6ddbd882502bdfe282ae42b"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"cf181ce0cbb0fec99f61238237093142fdbfce5b","unresolved":true,"context_lines":[{"line_number":200,"context_line":"        if assert_dict_contains:"},{"line_number":201,"context_line":"            for k, v in assert_dict_contains.items():"},{"line_number":202,"context_line":"                self.assertIn(k, response)"},{"line_number":203,"context_line":"                self.assertEqual(v.format(**self.format_data), response[k])"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        self.assertTrue(other_asserts, \u0027This test asserted nothing\u0027)"},{"line_number":206,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"b82ecd03_e42bcc45","line":203,"range":{"start_line":203,"start_character":63,"end_line":203,"end_character":74},"updated":"2021-01-18 03:43:58.000000000","message":"Regarding the comment above, this should be:\n\n  response.json[k]","commit_id":"2bebba57cf698c0bf6ddbd882502bdfe282ae42b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"311b360e72744f18816a8493a338ec525b1edbda","unresolved":false,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"@ddt.ddt"},{"line_number":223,"context_line":"class TestACLExisting(TestACLBase):"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def _create_test_data(self):"},{"line_number":226,"context_line":"        fake_db_node \u003d db_utils.create_test_node(chassis_id\u003dNone)"}],"source_content_type":"text/x-python","patch_set":3,"id":"25440025_805ed808","line":223,"updated":"2021-01-11 17:31:39.000000000","message":"Existing is confusing here. Given that you\u0027re checking the positive path, I\u0027d call it TestACLPositive / TestACLPassing.","commit_id":"2bebba57cf698c0bf6ddbd882502bdfe282ae42b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"0ee5e9838aef11b07339b7e95907fdaffc72c380","unresolved":false,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"@ddt.ddt"},{"line_number":223,"context_line":"class TestACLExisting(TestACLBase):"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def _create_test_data(self):"},{"line_number":226,"context_line":"        fake_db_node \u003d db_utils.create_test_node(chassis_id\u003dNone)"}],"source_content_type":"text/x-python","patch_set":3,"id":"4b97d258_255b5c60","line":223,"in_reply_to":"25440025_805ed808","updated":"2021-01-11 19:51:35.000000000","message":"I would almost say \"expected\" since we need to in essence do positive and negative testing. In a first pass, we would expect some tests to fail with say, member role.","commit_id":"2bebba57cf698c0bf6ddbd882502bdfe282ae42b"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"cf181ce0cbb0fec99f61238237093142fdbfce5b","unresolved":false,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"@ddt.ddt"},{"line_number":223,"context_line":"class TestACLExisting(TestACLBase):"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def _create_test_data(self):"},{"line_number":226,"context_line":"        fake_db_node \u003d db_utils.create_test_node(chassis_id\u003dNone)"}],"source_content_type":"text/x-python","patch_set":3,"id":"cbb13d2c_9bc2b2ba","line":223,"in_reply_to":"4b97d258_255b5c60","updated":"2021-01-18 03:43:58.000000000","message":"I couldn\u0027t think of a good name to call this test class now, once we have an RBAC policy I\u0027d like to call this TestACLLegacy 😉","commit_id":"2bebba57cf698c0bf6ddbd882502bdfe282ae42b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d206f3d860f5f683f3cfa9ec0fed0969f2ec9490","unresolved":false,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"@ddt.ddt"},{"line_number":223,"context_line":"class TestACLExisting(TestACLBase):"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def _create_test_data(self):"},{"line_number":226,"context_line":"        fake_db_node \u003d db_utils.create_test_node(chassis_id\u003dNone)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bb103478_b11a8321","line":223,"in_reply_to":"4b97d258_255b5c60","updated":"2021-01-19 19:01:50.000000000","message":"Renaming, since it ends up doing positive/negative testing of the policy enforecement to validate the result is the expected behavior.","commit_id":"2bebba57cf698c0bf6ddbd882502bdfe282ae42b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"311b360e72744f18816a8493a338ec525b1edbda","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def _create_test_data(self):"},{"line_number":226,"context_line":"        fake_db_node \u003d db_utils.create_test_node(chassis_id\u003dNone)"},{"line_number":227,"context_line":"        self.format_data[\u0027node_ident\u0027] \u003d fake_db_node[\u0027uuid\u0027]"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    @ddt.file_data(\u0027test_acl_existing.yaml\u0027)"},{"line_number":230,"context_line":"    @ddt.unpack"}],"source_content_type":"text/x-python","patch_set":3,"id":"46f4d7b3_89c8472f","line":227,"updated":"2021-01-11 17:31:39.000000000","message":"It\u0027s going to be the same for all or most tests, why not move it to the base class?","commit_id":"2bebba57cf698c0bf6ddbd882502bdfe282ae42b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"0ee5e9838aef11b07339b7e95907fdaffc72c380","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def _create_test_data(self):"},{"line_number":226,"context_line":"        fake_db_node \u003d db_utils.create_test_node(chassis_id\u003dNone)"},{"line_number":227,"context_line":"        self.format_data[\u0027node_ident\u0027] \u003d fake_db_node[\u0027uuid\u0027]"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    @ddt.file_data(\u0027test_acl_existing.yaml\u0027)"},{"line_number":230,"context_line":"    @ddt.unpack"}],"source_content_type":"text/x-python","patch_set":3,"id":"d2557041_ff0c5ab9","line":227,"in_reply_to":"46f4d7b3_89c8472f","updated":"2021-01-11 19:51:35.000000000","message":"Not all tests. For some of the various conditions we need an additional node with different data relationships.","commit_id":"2bebba57cf698c0bf6ddbd882502bdfe282ae42b"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"cf181ce0cbb0fec99f61238237093142fdbfce5b","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def _create_test_data(self):"},{"line_number":226,"context_line":"        fake_db_node \u003d db_utils.create_test_node(chassis_id\u003dNone)"},{"line_number":227,"context_line":"        self.format_data[\u0027node_ident\u0027] \u003d fake_db_node[\u0027uuid\u0027]"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    @ddt.file_data(\u0027test_acl_existing.yaml\u0027)"},{"line_number":230,"context_line":"    @ddt.unpack"}],"source_content_type":"text/x-python","patch_set":3,"id":"6efc143d_463d7f68","line":227,"in_reply_to":"d2557041_ff0c5ab9","updated":"2021-01-18 03:43:58.000000000","message":"Yes, I expect the secure-rbac _create_test_data will be quite different to this.","commit_id":"2bebba57cf698c0bf6ddbd882502bdfe282ae42b"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"748d7a55e5d3447d6bec4fbcb442ab39eb6051c4","unresolved":true,"context_lines":[{"line_number":109,"context_line":"                headers[\u0027X_ROLES\u0027] \u003d \u0027,\u0027.join(USERS[auth_token][\u0027roles\u0027])"},{"line_number":110,"context_line":"                self.mock_auth.side_effect \u003d self._fake_process_request"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        expect_errors \u003d bool(assert_status)"},{"line_number":113,"context_line":"        if method \u003d\u003d \u0027get\u0027:"},{"line_number":114,"context_line":"            response \u003d self.get_json("},{"line_number":115,"context_line":"                path,"}],"source_content_type":"text/x-python","patch_set":4,"id":"92044bc4_d8794e96","line":112,"updated":"2021-01-18 03:47:34.000000000","message":"based on the previous revision comments[1], delete this line\n\n[1] https://review.opendev.org/c/openstack/ironic/+/767445/3/ironic/tests/unit/api/test_acl.py#203","commit_id":"023884d38d6a2f5a3144513a000949c7ba51bc11"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d206f3d860f5f683f3cfa9ec0fed0969f2ec9490","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                headers[\u0027X_ROLES\u0027] \u003d \u0027,\u0027.join(USERS[auth_token][\u0027roles\u0027])"},{"line_number":110,"context_line":"                self.mock_auth.side_effect \u003d self._fake_process_request"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        expect_errors \u003d bool(assert_status)"},{"line_number":113,"context_line":"        if method \u003d\u003d \u0027get\u0027:"},{"line_number":114,"context_line":"            response \u003d self.get_json("},{"line_number":115,"context_line":"                path,"}],"source_content_type":"text/x-python","patch_set":4,"id":"e1431129_da5e2de1","line":112,"in_reply_to":"92044bc4_d8794e96","updated":"2021-01-19 19:01:50.000000000","message":"Done","commit_id":"023884d38d6a2f5a3144513a000949c7ba51bc11"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"748d7a55e5d3447d6bec4fbcb442ab39eb6051c4","unresolved":true,"context_lines":[{"line_number":114,"context_line":"            response \u003d self.get_json("},{"line_number":115,"context_line":"                path,"},{"line_number":116,"context_line":"                headers\u003dheaders,"},{"line_number":117,"context_line":"                expect_errors\u003dexpect_errors,"},{"line_number":118,"context_line":"                extra_environ\u003dself.environ,"},{"line_number":119,"context_line":"                path_prefix\u003d\u0027\u0027"},{"line_number":120,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":4,"id":"f5bafca0_a2195f88","line":117,"range":{"start_line":117,"start_character":16,"end_line":117,"end_character":43},"updated":"2021-01-18 03:47:34.000000000","message":"expect_errors\u003dTrue","commit_id":"023884d38d6a2f5a3144513a000949c7ba51bc11"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d206f3d860f5f683f3cfa9ec0fed0969f2ec9490","unresolved":false,"context_lines":[{"line_number":114,"context_line":"            response \u003d self.get_json("},{"line_number":115,"context_line":"                path,"},{"line_number":116,"context_line":"                headers\u003dheaders,"},{"line_number":117,"context_line":"                expect_errors\u003dexpect_errors,"},{"line_number":118,"context_line":"                extra_environ\u003dself.environ,"},{"line_number":119,"context_line":"                path_prefix\u003d\u0027\u0027"},{"line_number":120,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":4,"id":"77e8896e_bd15fd75","line":117,"range":{"start_line":117,"start_character":16,"end_line":117,"end_character":43},"in_reply_to":"f5bafca0_a2195f88","updated":"2021-01-19 19:01:50.000000000","message":"Done","commit_id":"023884d38d6a2f5a3144513a000949c7ba51bc11"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"748d7a55e5d3447d6bec4fbcb442ab39eb6051c4","unresolved":true,"context_lines":[{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        if assert_status:"},{"line_number":127,"context_line":"            self.assertEqual(assert_status, response.status_int)"},{"line_number":128,"context_line":"            return"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        if assert_dict_contains:"},{"line_number":131,"context_line":"            for k, v in assert_dict_contains.items():"}],"source_content_type":"text/x-python","patch_set":4,"id":"89ea604c_04a977e8","line":128,"updated":"2021-01-18 03:47:34.000000000","message":"No need to return anymore, status asserts can be mixed with others","commit_id":"023884d38d6a2f5a3144513a000949c7ba51bc11"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d206f3d860f5f683f3cfa9ec0fed0969f2ec9490","unresolved":false,"context_lines":[{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        if assert_status:"},{"line_number":127,"context_line":"            self.assertEqual(assert_status, response.status_int)"},{"line_number":128,"context_line":"            return"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        if assert_dict_contains:"},{"line_number":131,"context_line":"            for k, v in assert_dict_contains.items():"}],"source_content_type":"text/x-python","patch_set":4,"id":"2da833b1_a7649fdd","line":128,"in_reply_to":"89ea604c_04a977e8","updated":"2021-01-19 19:01:50.000000000","message":"Done","commit_id":"023884d38d6a2f5a3144513a000949c7ba51bc11"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"748d7a55e5d3447d6bec4fbcb442ab39eb6051c4","unresolved":true,"context_lines":[{"line_number":130,"context_line":"        if assert_dict_contains:"},{"line_number":131,"context_line":"            for k, v in assert_dict_contains.items():"},{"line_number":132,"context_line":"                self.assertIn(k, response)"},{"line_number":133,"context_line":"                self.assertEqual(v.format(**self.format_data), response[k])"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        self.assertTrue(other_asserts, \u0027This test asserted nothing\u0027)"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9f14e304_5913e5cb","line":133,"range":{"start_line":133,"start_character":63,"end_line":133,"end_character":74},"updated":"2021-01-18 03:47:34.000000000","message":"response.json[k]","commit_id":"023884d38d6a2f5a3144513a000949c7ba51bc11"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d206f3d860f5f683f3cfa9ec0fed0969f2ec9490","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        if assert_dict_contains:"},{"line_number":131,"context_line":"            for k, v in assert_dict_contains.items():"},{"line_number":132,"context_line":"                self.assertIn(k, response)"},{"line_number":133,"context_line":"                self.assertEqual(v.format(**self.format_data), response[k])"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        self.assertTrue(other_asserts, \u0027This test asserted nothing\u0027)"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"84f40db4_d7688b95","line":133,"range":{"start_line":133,"start_character":63,"end_line":133,"end_character":74},"in_reply_to":"9f14e304_5913e5cb","updated":"2021-01-19 19:01:50.000000000","message":"Done","commit_id":"023884d38d6a2f5a3144513a000949c7ba51bc11"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"18ddbb02a8c801063007d3a9a8471a6fa486f375","unresolved":true,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    @ddt.file_data(\u0027test_rbac_legacy.yaml\u0027)"},{"line_number":162,"context_line":"    @ddt.unpack"},{"line_number":163,"context_line":"    def test_existing(self, **kwargs):"},{"line_number":164,"context_line":"        self._check_skip(**kwargs)"},{"line_number":165,"context_line":"        self._test_request(**kwargs)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bbc80286_69fa95af","line":163,"range":{"start_line":163,"start_character":8,"end_line":163,"end_character":21},"updated":"2021-01-20 03:12:52.000000000","message":"test_rbac_legacy(","commit_id":"7b1f2bd6e0f99c1d5b07760f7ac37a59054d26d6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f7c65d4eb3df3ea2ac3100ff9f900e3df753b0e9","unresolved":true,"context_lines":[{"line_number":79,"context_line":"        if kwargs.get(\u0027skip_reason\u0027):"},{"line_number":80,"context_line":"            self.skipTest(kwargs.get(\u0027skip_reason\u0027))"},{"line_number":81,"context_line":"        # Remove ASAP, but as a few hundred tests use this, we can"},{"line_number":82,"context_line":"        # rip it out later."},{"line_number":83,"context_line":"        if kwargs.get(\u0027skip\u0027):"},{"line_number":84,"context_line":"            self.skipTest(kwargs.get(\u0027skip_reason\u0027, \u0027Not implemented\u0027))"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1d69a8ee_815ad242","line":82,"updated":"2021-01-21 11:08:23.000000000","message":"It\u0027s one sed command.. I really hope that we get a bit less lax by the end of this patch chain.","commit_id":"36d819e2fb8e27f8c900cf50c6c6fde1bde68a41"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f7c65d4eb3df3ea2ac3100ff9f900e3df753b0e9","unresolved":true,"context_lines":[{"line_number":126,"context_line":"            self.assertEqual(assert_status, response.status_int)"},{"line_number":127,"context_line":"        else:"},{"line_number":128,"context_line":"            self.assertIsNotNone(other_asserts,"},{"line_number":129,"context_line":"                                 \u0027Tests must include an assert_status\u0027)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        if assert_dict_contains:"},{"line_number":132,"context_line":"            for k, v in assert_dict_contains.items():"}],"source_content_type":"text/x-python","patch_set":6,"id":"97347b13_de47e233","line":129,"updated":"2021-01-21 11:08:23.000000000","message":"nit: \"Tests must have at least one assertion\"","commit_id":"36d819e2fb8e27f8c900cf50c6c6fde1bde68a41"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7cce6583bca7795bab67a768ce261e4a8464eff5","unresolved":true,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"@ddt.ddt"},{"line_number":155,"context_line":"class TestRBACModelBeforeScopes(TestACLBase):"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def _create_test_data(self):"},{"line_number":158,"context_line":"        fake_db_node \u003d db_utils.create_test_node(chassis_id\u003dNone)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5b6fcda5_b4570042","line":155,"range":{"start_line":155,"start_character":6,"end_line":155,"end_character":31},"updated":"2021-01-21 02:29:08.000000000","message":"FWIW - I\u0027ve unofficially been referring to these tests as legacy RBAC tests (kinda like the ddt yaml file name below. Primarily because it makes the test class name a bit shorter and signals that its testing behavior that isn\u0027t new.","commit_id":"36d819e2fb8e27f8c900cf50c6c6fde1bde68a41"}],"ironic/tests/unit/api/test_acl_existing.yaml":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"311b360e72744f18816a8493a338ec525b1edbda","unresolved":false,"context_lines":[{"line_number":3,"context_line":"nodes_post_allow:"},{"line_number":4,"context_line":"  path: \u0027/v1/nodes\u0027"},{"line_number":5,"context_line":"  method: post"},{"line_number":6,"context_line":"  skip: true"},{"line_number":7,"context_line":"  skip_reason: \u0027Not implemented yet\u0027"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"nodes_get_allow:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"42cc7e66_5ef7163a","line":6,"updated":"2021-01-11 17:31:39.000000000","message":"nit: you could use skip_reason only","commit_id":"2bebba57cf698c0bf6ddbd882502bdfe282ae42b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"0ee5e9838aef11b07339b7e95907fdaffc72c380","unresolved":false,"context_lines":[{"line_number":3,"context_line":"nodes_post_allow:"},{"line_number":4,"context_line":"  path: \u0027/v1/nodes\u0027"},{"line_number":5,"context_line":"  method: post"},{"line_number":6,"context_line":"  skip: true"},{"line_number":7,"context_line":"  skip_reason: \u0027Not implemented yet\u0027"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"nodes_get_allow:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"851862e2_6286cfa2","line":6,"in_reply_to":"42cc7e66_5ef7163a","updated":"2021-01-11 19:51:35.000000000","message":"I kind of agree with this, I suspect a follow-on patch would be best though given the resulting merge conflicts that would rip this this out given the delta between this and next patch.","commit_id":"2bebba57cf698c0bf6ddbd882502bdfe282ae42b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d97457a787fa80fc588fd1f42d904f25ca7737d7","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Nodes - https://docs.openstack.org/api-ref/baremetal/?expanded\u003d#nodes-nodes"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"nodes_post_allow:"},{"line_number":4,"context_line":"  path: \u0027/v1/nodes\u0027"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"8200a237_31e2544a","line":1,"updated":"2021-01-18 19:59:24.000000000","message":"We typically shy away from using the term \u0027ACL\u0027.\n\nWhat if we renamed this file to `test_legacy_rbac.yaml`? Then, when we implement testing for secure RBAC, we have a separate set of tests in `test_secure_rbac.yaml`. My reason for using \u0027secure_rbac\u0027 in the name is because it\u0027s how we\u0027re referencing the initiative today, so I\u0027m hoping it\u0027ll be more familiar for other people reading the code.","commit_id":"023884d38d6a2f5a3144513a000949c7ba51bc11"}]}
