)]}'
{"doc/source/multi-policy-validation.rst":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"a8d0121873f45dff43c942edb6a682038650c722","unresolved":false,"context_lines":[{"line_number":19,"context_line":"* Neutron can throw a **403** for unauthorized requests under certain"},{"line_number":20,"context_line":"  circumstances and a **404** under other circumstances. Many endpoints"},{"line_number":21,"context_line":"  in Neutron enforce multiple policies, which complicates matters when trying"},{"line_number":22,"context_line":"  to determine whether the endpoint returns a 403 or a 404."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Multi-policy support allows Patrole to accurately offer RBAC tests for API"},{"line_number":25,"context_line":"endpoints that enforce multiple policy actions, either directly (within the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_1cdec63d","line":22,"range":{"start_line":22,"start_character":36,"end_line":22,"end_character":43},"updated":"2018-06-11 00:18:43.000000000","message":"raises a 403 or a 404 following unauthorized access.","commit_id":"86a863de6cdac0e06ba78793dae3c4cdcd8e6220"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"deb77ff72a768fee0e372879f04196b7cc4c05a6","unresolved":false,"context_lines":[{"line_number":46,"context_line":"following criteria should be followed before deciding to add multiple"},{"line_number":47,"context_line":"policies to an RBAC test:"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"* Is the policy included in the service\u0027s policy in code documentation?"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"  Only use policies that map to the API by referencing the appropriate policy"},{"line_number":52,"context_line":"  in code documentation."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"* Are multiple policies required to make the test pass?"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"  Obviously, don\u0027t include more policies than are needed."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"* Are each of the policies being added to the test \"unique\"? That is, are"},{"line_number":59,"context_line":"  these policies directly related to the API under test or are these policies"},{"line_number":60,"context_line":"  used across many APIs?"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"  Only add policies that are directly related to the API. Don\u0027t overstretch"},{"line_number":63,"context_line":"  the scope of the testing by trying to add every single policy that is"},{"line_number":64,"context_line":"  enforced by the API."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"* Will it become too cumbersome to add yet another policy to the test?"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"  As a rule of thumb, limit the number of policies per test to around 3. Adding"},{"line_number":69,"context_line":"  more policies than that to a test leads to a lot of test maintenance"},{"line_number":70,"context_line":"  overhead."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Code Guidelines"},{"line_number":73,"context_line":"^^^^^^^^^^^^^^^"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_5e5ae5f1","line":70,"range":{"start_line":49,"start_character":0,"end_line":70,"end_character":11},"updated":"2018-06-11 14:30:25.000000000","message":"Not sure if this much information is needed to convey this. Should just boil down into smaller bullets.","commit_id":"da3123b817dda2a7eae7d7ddc8ad48a4ae76125f"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"b713dee29da61a3d708e1663b3857be09d8d3c67","unresolved":false,"context_lines":[{"line_number":79,"context_line":"Documentation Guidelines"},{"line_number":80,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"* A docstring must be provided to any test that validates multiple policies."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Examples"},{"line_number":85,"context_line":"--------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_300403c6","line":82,"range":{"start_line":82,"start_character":0,"end_line":82,"end_character":76},"updated":"2018-06-22 00:48:01.000000000","message":"Not clear why I did this. This shouldn\u0027t be a requirement.","commit_id":"da3123b817dda2a7eae7d7ddc8ad48a4ae76125f"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"1e3b37147312afac7e9f7551f4a7f5605a1036a0","unresolved":false,"context_lines":[{"line_number":122,"context_line":""},{"line_number":123,"context_line":".. _cross-service-policy-validation:"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Cross-service Policy Validation"},{"line_number":126,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"WIP"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_9f34b1fc","line":128,"range":{"start_line":125,"start_character":0,"end_line":128,"end_character":3},"updated":"2018-06-14 02:39:12.000000000","message":"This functionality doesn\u0027t exist yet so I think it should be removed.","commit_id":"da3123b817dda2a7eae7d7ddc8ad48a4ae76125f"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"51bc8d953c0f08a0c002e73e656eb33c44a00087","unresolved":false,"context_lines":[{"line_number":30,"context_line":".. _this spec: https://github.com/openstack/qa-specs/blob/master/specs/patrole/rbac-testing-multiple-policies.rst"},{"line_number":31,"context_line":".. _Neutron: https://docs.openstack.org/neutron/pike/contributor/internals/policy.html"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Scope"},{"line_number":34,"context_line":"-----"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Multiple policies should be applied only to tests that require them. Not all"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_8e6b26ee","line":33,"range":{"start_line":33,"start_character":0,"end_line":33,"end_character":5},"updated":"2018-06-26 20:52:53.000000000","message":"Maybe make this the firs thing.","commit_id":"dc32a3fa55da7e1ab02309b2ac5dc5a63c1eb38f"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"992cc4475a8636d20bca2b40570e0462fba7d3be","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Introduction"},{"line_number":8,"context_line":"------------"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Multi-policy validation exists in Patrole because if one policy is assumed,"},{"line_number":11,"context_line":"then the test can fail because it does not consider all the policies actually"},{"line_number":12,"context_line":"being enforced. The reasoning can be found in `this spec`_. Basically,"},{"line_number":13,"context_line":"since Patrole derives the expected test result dynamically in order to test any"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f7c97a3_eb46e722","line":10,"range":{"start_line":10,"start_character":64,"end_line":10,"end_character":66},"updated":"2018-07-02 00:00:53.000000000","message":"were","commit_id":"91440e6aedc16bde0d1c3aa39c7285e236619a2e"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"91034f545272cd719803f431b4dee9cf1161960b","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Introduction"},{"line_number":8,"context_line":"------------"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Multi-policy validation exists in Patrole because if one policy is assumed,"},{"line_number":11,"context_line":"then the test can fail because it does not consider all the policies actually"},{"line_number":12,"context_line":"being enforced. The reasoning can be found in `this spec`_. Basically,"},{"line_number":13,"context_line":"since Patrole derives the expected test result dynamically in order to test any"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f7c97a3_6b2ad72f","line":10,"range":{"start_line":10,"start_character":64,"end_line":10,"end_character":66},"in_reply_to":"5f7c97a3_eb46e722","updated":"2018-07-02 00:11:17.000000000","message":"Done","commit_id":"91440e6aedc16bde0d1c3aa39c7285e236619a2e"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"992cc4475a8636d20bca2b40570e0462fba7d3be","unresolved":false,"context_lines":[{"line_number":8,"context_line":"------------"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Multi-policy validation exists in Patrole because if one policy is assumed,"},{"line_number":11,"context_line":"then the test can fail because it does not consider all the policies actually"},{"line_number":12,"context_line":"being enforced. The reasoning can be found in `this spec`_. Basically,"},{"line_number":13,"context_line":"since Patrole derives the expected test result dynamically in order to test any"},{"line_number":14,"context_line":"role, each policy enforced by the API under test must be considered to derive"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f7c97a3_0b42430e","line":11,"range":{"start_line":11,"start_character":14,"end_line":11,"end_character":38},"updated":"2018-07-02 00:00:53.000000000","message":"could fail because it would","commit_id":"91440e6aedc16bde0d1c3aa39c7285e236619a2e"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"91034f545272cd719803f431b4dee9cf1161960b","unresolved":false,"context_lines":[{"line_number":8,"context_line":"------------"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Multi-policy validation exists in Patrole because if one policy is assumed,"},{"line_number":11,"context_line":"then the test can fail because it does not consider all the policies actually"},{"line_number":12,"context_line":"being enforced. The reasoning can be found in `this spec`_. Basically,"},{"line_number":13,"context_line":"since Patrole derives the expected test result dynamically in order to test any"},{"line_number":14,"context_line":"role, each policy enforced by the API under test must be considered to derive"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f7c97a3_cbf9abc5","line":11,"range":{"start_line":11,"start_character":14,"end_line":11,"end_character":38},"in_reply_to":"5f7c97a3_0b42430e","updated":"2018-07-02 00:11:17.000000000","message":"Done","commit_id":"91440e6aedc16bde0d1c3aa39c7285e236619a2e"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"992cc4475a8636d20bca2b40570e0462fba7d3be","unresolved":false,"context_lines":[{"line_number":13,"context_line":"since Patrole derives the expected test result dynamically in order to test any"},{"line_number":14,"context_line":"role, each policy enforced by the API under test must be considered to derive"},{"line_number":15,"context_line":"an accurate expected test result, or else the expected and actual test"},{"line_number":16,"context_line":"results will not match, resulting test failure. For more information about"},{"line_number":17,"context_line":"Patrole\u0027s RBAC validation work flow, reference :ref:`rbac-validation`."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Multi-policy support allows Patrole to more accurately offer RBAC tests for API"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f7c97a3_cb4beb25","line":16,"range":{"start_line":16,"start_character":17,"end_line":16,"end_character":22},"updated":"2018-07-02 00:00:53.000000000","message":"always match","commit_id":"91440e6aedc16bde0d1c3aa39c7285e236619a2e"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"91034f545272cd719803f431b4dee9cf1161960b","unresolved":false,"context_lines":[{"line_number":13,"context_line":"since Patrole derives the expected test result dynamically in order to test any"},{"line_number":14,"context_line":"role, each policy enforced by the API under test must be considered to derive"},{"line_number":15,"context_line":"an accurate expected test result, or else the expected and actual test"},{"line_number":16,"context_line":"results will not match, resulting test failure. For more information about"},{"line_number":17,"context_line":"Patrole\u0027s RBAC validation work flow, reference :ref:`rbac-validation`."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Multi-policy support allows Patrole to more accurately offer RBAC tests for API"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f7c97a3_0bf003da","line":16,"range":{"start_line":16,"start_character":17,"end_line":16,"end_character":22},"in_reply_to":"5f7c97a3_cb4beb25","updated":"2018-07-02 00:11:17.000000000","message":"Done","commit_id":"91440e6aedc16bde0d1c3aa39c7285e236619a2e"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"992cc4475a8636d20bca2b40570e0462fba7d3be","unresolved":false,"context_lines":[{"line_number":16,"context_line":"results will not match, resulting test failure. For more information about"},{"line_number":17,"context_line":"Patrole\u0027s RBAC validation work flow, reference :ref:`rbac-validation`."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Multi-policy support allows Patrole to more accurately offer RBAC tests for API"},{"line_number":20,"context_line":"endpoints that enforce multiple policy actions."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":".. _this spec: https://github.com/openstack/qa-specs/blob/master/specs/patrole/rbac-testing-multiple-policies.rst"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f7c97a3_8b5f33e3","line":19,"range":{"start_line":19,"start_character":55,"end_line":19,"end_character":75},"updated":"2018-07-02 00:00:53.000000000","message":"test","commit_id":"91440e6aedc16bde0d1c3aa39c7285e236619a2e"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"91034f545272cd719803f431b4dee9cf1161960b","unresolved":false,"context_lines":[{"line_number":16,"context_line":"results will not match, resulting test failure. For more information about"},{"line_number":17,"context_line":"Patrole\u0027s RBAC validation work flow, reference :ref:`rbac-validation`."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Multi-policy support allows Patrole to more accurately offer RBAC tests for API"},{"line_number":20,"context_line":"endpoints that enforce multiple policy actions."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":".. _this spec: https://github.com/openstack/qa-specs/blob/master/specs/patrole/rbac-testing-multiple-policies.rst"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f7c97a3_abfeafac","line":19,"range":{"start_line":19,"start_character":55,"end_line":19,"end_character":75},"in_reply_to":"5f7c97a3_8b5f33e3","updated":"2018-07-02 00:11:17.000000000","message":"Done","commit_id":"91440e6aedc16bde0d1c3aa39c7285e236619a2e"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"992cc4475a8636d20bca2b40570e0462fba7d3be","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Because Neutron can raise a 403 or 404 following failed authorization, Patrole"},{"line_number":77,"context_line":"uses the ``expected_error_codes`` parameter to accommodate this behavior."},{"line_number":78,"context_line":"When the ``rules`` list parameter is used, then this list indicates the"},{"line_number":79,"context_line":"expected error code to use if one of the rules does not allow the role being"},{"line_number":80,"context_line":"tested. This list must coincide with and its elements remain in the same order"},{"line_number":81,"context_line":"as the rules in the ``rules`` list. For more information, see"},{"line_number":82,"context_line":":ref:`rbac-validation`."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"#. Order the expected error codes in the ``expected_error_codes`` parameter"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f7c97a3_2b0b7fd5","line":81,"range":{"start_line":78,"start_character":0,"end_line":81,"end_character":35},"updated":"2018-07-02 00:00:53.000000000","message":"Not very clear, reword.","commit_id":"91440e6aedc16bde0d1c3aa39c7285e236619a2e"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"91034f545272cd719803f431b4dee9cf1161960b","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Because Neutron can raise a 403 or 404 following failed authorization, Patrole"},{"line_number":77,"context_line":"uses the ``expected_error_codes`` parameter to accommodate this behavior."},{"line_number":78,"context_line":"When the ``rules`` list parameter is used, then this list indicates the"},{"line_number":79,"context_line":"expected error code to use if one of the rules does not allow the role being"},{"line_number":80,"context_line":"tested. This list must coincide with and its elements remain in the same order"},{"line_number":81,"context_line":"as the rules in the ``rules`` list. For more information, see"},{"line_number":82,"context_line":":ref:`rbac-validation`."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"#. Order the expected error codes in the ``expected_error_codes`` parameter"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f7c97a3_ab178fee","line":81,"range":{"start_line":78,"start_character":0,"end_line":81,"end_character":35},"in_reply_to":"5f7c97a3_2b0b7fd5","updated":"2018-07-02 00:11:17.000000000","message":"Done","commit_id":"91440e6aedc16bde0d1c3aa39c7285e236619a2e"},{"author":{"_account_id":17896,"name":"Rick Bartra","email":"rickbartra@microsoft.com","username":"rb560u"},"change_message_id":"2176c773803bf7590fb0754973a3083af6aa6cdf","unresolved":false,"context_lines":[{"line_number":128,"context_line":"Therefore, in the example above, the following expected error codes/rules"},{"line_number":129,"context_line":"relationship is observed:"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"* \"os_compute_api:os-lock-server:unlock\" \u003d\u003e 404"},{"line_number":132,"context_line":"* \"os_compute_api:os-lock-server:unlock:unlock_override\"  \u003d\u003e 403"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Below is an example of :ref:`critical-authorization` being accounted for"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5f7c97a3_38f24507","line":131,"range":{"start_line":131,"start_character":44,"end_line":131,"end_character":47},"updated":"2018-07-10 21:56:27.000000000","message":"this should be 403","commit_id":"3f3d81d611a5e19b5165b3400ef0a079ed4220ba"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"0934a49e82919ab9b457567c5a3cbc44077d599a","unresolved":false,"context_lines":[{"line_number":128,"context_line":"Therefore, in the example above, the following expected error codes/rules"},{"line_number":129,"context_line":"relationship is observed:"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"* \"os_compute_api:os-lock-server:unlock\" \u003d\u003e 404"},{"line_number":132,"context_line":"* \"os_compute_api:os-lock-server:unlock:unlock_override\"  \u003d\u003e 403"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Below is an example of :ref:`critical-authorization` being accounted for"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5f7c97a3_4cfe4c3a","line":131,"range":{"start_line":131,"start_character":44,"end_line":131,"end_character":47},"in_reply_to":"5f7c97a3_38f24507","updated":"2018-07-11 17:05:23.000000000","message":"Done","commit_id":"3f3d81d611a5e19b5165b3400ef0a079ed4220ba"},{"author":{"_account_id":17896,"name":"Rick Bartra","email":"rickbartra@microsoft.com","username":"rb560u"},"change_message_id":"2176c773803bf7590fb0754973a3083af6aa6cdf","unresolved":false,"context_lines":[{"line_number":182,"context_line":"Note that above the following expected error codes/rules relationship is"},{"line_number":183,"context_line":"observed:"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"* \"create_network\" \u003d\u003e 404"},{"line_number":186,"context_line":"* \"create_network:router:external\"  \u003d\u003e 403"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"A more involved example that expects a 404 to be raised, should the first"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5f7c97a3_78943de8","line":185,"range":{"start_line":185,"start_character":22,"end_line":185,"end_character":25},"updated":"2018-07-10 21:56:27.000000000","message":"should be 403","commit_id":"3f3d81d611a5e19b5165b3400ef0a079ed4220ba"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"0934a49e82919ab9b457567c5a3cbc44077d599a","unresolved":false,"context_lines":[{"line_number":182,"context_line":"Note that above the following expected error codes/rules relationship is"},{"line_number":183,"context_line":"observed:"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"* \"create_network\" \u003d\u003e 404"},{"line_number":186,"context_line":"* \"create_network:router:external\"  \u003d\u003e 403"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"A more involved example that expects a 404 to be raised, should the first"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5f7c97a3_6cfb0848","line":185,"range":{"start_line":185,"start_character":22,"end_line":185,"end_character":25},"in_reply_to":"5f7c97a3_78943de8","updated":"2018-07-11 17:05:23.000000000","message":"Done","commit_id":"3f3d81d611a5e19b5165b3400ef0a079ed4220ba"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"75993c504795c44ade4f2de9aedde91fa1db5273","unresolved":false,"context_lines":[{"line_number":43,"context_line":"unauthorized access. See the `Neutron policy documentation`_ for further"},{"line_number":44,"context_line":"details."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Multi-Policy Guidelines"},{"line_number":47,"context_line":"-----------------------"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Care should be taken when using multiple policies in an RBAC test. The"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5f7c97a3_d2758eca","line":46,"updated":"2018-07-18 03:06:41.000000000","message":"Hmm, this should move to REVIEWING.rst which hasn\u0027t been merged yet. Then we can add a link to there from here.","commit_id":"89e8a0632c53c9ca0b4435ae4b59e50c3c7f9e37"}]}
