)]}'
{"oslo_policy/fixture.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"39feb28eaa41fbe77a33fdacab7c21ec651f0fc5","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    def __init__(self, return_value\u003dTrue):"},{"line_number":23,"context_line":"        \"\"\"Initialize the fixture."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"        :param return_value: True or False"},{"line_number":26,"context_line":"        :type return_value: boolean"},{"line_number":27,"context_line":"        \"\"\""},{"line_number":28,"context_line":"        self.return_value \u003d return_value"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_be8b6fc2","line":25,"updated":"2015-10-08 20:12:49.000000000","message":"this should describe what return_value is going to be used for... I assume it\u0027s used for the response of the check (either allow or deny).","commit_id":"db252d81757af69df0686bb94ac7f2c61e31a526"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"0946d39cec8f9dc1da5d83cfbb0a0b03f776eda7","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    def __init__(self, return_value\u003dTrue):"},{"line_number":23,"context_line":"        \"\"\"Initialize the fixture."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"        :param return_value: True or False"},{"line_number":26,"context_line":"        :type return_value: boolean"},{"line_number":27,"context_line":"        \"\"\""},{"line_number":28,"context_line":"        self.return_value \u003d return_value"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_52f56a54","line":25,"in_reply_to":"7a2fa921_be8b6fc2","updated":"2015-10-08 21:52:36.000000000","message":"Done","commit_id":"db252d81757af69df0686bb94ac7f2c61e31a526"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"39feb28eaa41fbe77a33fdacab7c21ec651f0fc5","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        patcher \u003d mock.patch.object(oslo_policy._checks.HttpCheck,"},{"line_number":34,"context_line":"                                    \u0027__call__\u0027,"},{"line_number":35,"context_line":"                                    return_value\u003dself.return_value)"},{"line_number":36,"context_line":"        self.addCleanup(patcher.stop)"},{"line_number":37,"context_line":"        patcher.start()"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_fe41e763","line":36,"updated":"2015-10-08 20:12:49.000000000","message":"fixtures provides a MockPatchObject, use it rather than reimplement.","commit_id":"db252d81757af69df0686bb94ac7f2c61e31a526"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"0946d39cec8f9dc1da5d83cfbb0a0b03f776eda7","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        patcher \u003d mock.patch.object(oslo_policy._checks.HttpCheck,"},{"line_number":34,"context_line":"                                    \u0027__call__\u0027,"},{"line_number":35,"context_line":"                                    return_value\u003dself.return_value)"},{"line_number":36,"context_line":"        self.addCleanup(patcher.stop)"},{"line_number":37,"context_line":"        patcher.start()"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_92530239","line":36,"in_reply_to":"7a2fa921_fe41e763","updated":"2015-10-08 21:52:36.000000000","message":"Done","commit_id":"db252d81757af69df0686bb94ac7f2c61e31a526"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"556442e7661f2471e39e2b67e5b01a2f030ef776","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from oslo_policy import policy as oslo_policy"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class HttpCheckFixture(fixtures.MockPatchObject):"},{"line_number":19,"context_line":"    \"\"\"Helps short circuit the external http call\"\"\""},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_d5b16102","line":17,"updated":"2015-10-08 23:42:30.000000000","message":"this should have\n\n __all__ \u003d [\u0027HttpCheckFixture\u0027]\n\nso that fixtures and oslo_policy aren\u0027t public","commit_id":"5014e34b90e54aadc864e7309590e502e9fc93a8"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"d329a9bc1d233006286bbc4dd0332931bb9754a1","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from oslo_policy import policy as oslo_policy"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class HttpCheckFixture(fixtures.MockPatchObject):"},{"line_number":19,"context_line":"    \"\"\"Helps short circuit the external http call\"\"\""},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_55d9d120","line":17,"in_reply_to":"7a2fa921_d5b16102","updated":"2015-10-08 23:50:20.000000000","message":"Done","commit_id":"5014e34b90e54aadc864e7309590e502e9fc93a8"}],"oslo_policy/tests/test_fixtures.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"39feb28eaa41fbe77a33fdacab7c21ec651f0fc5","unresolved":false,"context_lines":[{"line_number":20,"context_line":"        self.useFixture(fixture.HttpCheckFixture())"},{"line_number":21,"context_line":"        rules_json \u003d \"\"\"{"},{"line_number":22,"context_line":"    \"example:get_http\": \"http:http://www.example.com\""},{"line_number":23,"context_line":"}\"\"\""},{"line_number":24,"context_line":"        rules \u003d oslo_policy.Rules.load_json(rules_json)"},{"line_number":25,"context_line":"        self.enforcer.set_rules(rules)"},{"line_number":26,"context_line":"        action \u003d \u0027example:get_http\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_a1182e76","line":23,"updated":"2015-10-08 20:12:49.000000000","message":"rather than hardcode JSON, use json.dumps() a dict.","commit_id":"db252d81757af69df0686bb94ac7f2c61e31a526"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"0946d39cec8f9dc1da5d83cfbb0a0b03f776eda7","unresolved":false,"context_lines":[{"line_number":20,"context_line":"        self.useFixture(fixture.HttpCheckFixture())"},{"line_number":21,"context_line":"        rules_json \u003d \"\"\"{"},{"line_number":22,"context_line":"    \"example:get_http\": \"http:http://www.example.com\""},{"line_number":23,"context_line":"}\"\"\""},{"line_number":24,"context_line":"        rules \u003d oslo_policy.Rules.load_json(rules_json)"},{"line_number":25,"context_line":"        self.enforcer.set_rules(rules)"},{"line_number":26,"context_line":"        action \u003d \u0027example:get_http\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_8d46834d","line":23,"in_reply_to":"7a2fa921_a1182e76","updated":"2015-10-08 21:52:36.000000000","message":"Done","commit_id":"db252d81757af69df0686bb94ac7f2c61e31a526"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"39feb28eaa41fbe77a33fdacab7c21ec651f0fc5","unresolved":false,"context_lines":[{"line_number":23,"context_line":"}\"\"\""},{"line_number":24,"context_line":"        rules \u003d oslo_policy.Rules.load_json(rules_json)"},{"line_number":25,"context_line":"        self.enforcer.set_rules(rules)"},{"line_number":26,"context_line":"        action \u003d \u0027example:get_http\u0027"},{"line_number":27,"context_line":"        creds \u003d {}"},{"line_number":28,"context_line":"        self.assertTrue(self.enforcer.enforce(action, {}, creds))"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_41283a86","line":26,"updated":"2015-10-08 20:12:49.000000000","message":"the string here is the same as the string above, so reuse the variable rather than copy-pasting.","commit_id":"db252d81757af69df0686bb94ac7f2c61e31a526"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"0946d39cec8f9dc1da5d83cfbb0a0b03f776eda7","unresolved":false,"context_lines":[{"line_number":23,"context_line":"}\"\"\""},{"line_number":24,"context_line":"        rules \u003d oslo_policy.Rules.load_json(rules_json)"},{"line_number":25,"context_line":"        self.enforcer.set_rules(rules)"},{"line_number":26,"context_line":"        action \u003d \u0027example:get_http\u0027"},{"line_number":27,"context_line":"        creds \u003d {}"},{"line_number":28,"context_line":"        self.assertTrue(self.enforcer.enforce(action, {}, creds))"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_0daef397","line":26,"in_reply_to":"7a2fa921_41283a86","updated":"2015-10-08 21:52:36.000000000","message":"Done","commit_id":"db252d81757af69df0686bb94ac7f2c61e31a526"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"39feb28eaa41fbe77a33fdacab7c21ec651f0fc5","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        self.enforcer.set_rules(rules)"},{"line_number":26,"context_line":"        action \u003d \u0027example:get_http\u0027"},{"line_number":27,"context_line":"        creds \u003d {}"},{"line_number":28,"context_line":"        self.assertTrue(self.enforcer.enforce(action, {}, creds))"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def test_enforce_http_false(self):"},{"line_number":31,"context_line":"        self.useFixture(fixture.HttpCheckFixture(return_value\u003dFalse))"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_9e2a338f","line":28,"updated":"2015-10-08 20:12:49.000000000","message":"what\u0027s the {} refer to? give it a name so it\u0027s easier for readers to know that the expected value is being passed.","commit_id":"db252d81757af69df0686bb94ac7f2c61e31a526"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"0946d39cec8f9dc1da5d83cfbb0a0b03f776eda7","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        self.enforcer.set_rules(rules)"},{"line_number":26,"context_line":"        action \u003d \u0027example:get_http\u0027"},{"line_number":27,"context_line":"        creds \u003d {}"},{"line_number":28,"context_line":"        self.assertTrue(self.enforcer.enforce(action, {}, creds))"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def test_enforce_http_false(self):"},{"line_number":31,"context_line":"        self.useFixture(fixture.HttpCheckFixture(return_value\u003dFalse))"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_cd947b44","line":28,"in_reply_to":"7a2fa921_9e2a338f","updated":"2015-10-08 21:52:36.000000000","message":"Done","commit_id":"db252d81757af69df0686bb94ac7f2c61e31a526"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"3ee2bd8331015175d3b9a72c19277ef673905b31","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def test_enforce_http_true(self):"},{"line_number":27,"context_line":"        self.useFixture(fixture.HttpCheckFixture())"},{"line_number":28,"context_line":"        rules \u003d oslo_policy.Rules.load_json(json.dumps(self.rules_json))"},{"line_number":29,"context_line":"        self.enforcer.set_rules(rules)"},{"line_number":30,"context_line":"        self.assertTrue(self.enforcer.enforce(rule\u003dself.action,"},{"line_number":31,"context_line":"                                              target\u003d{},"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a2fa921_6d7527f8","line":28,"updated":"2015-10-08 22:01:08.000000000","message":"these 3 lines could be in a common function since they are the same as lines 36-40","commit_id":"891dbd13bf621184e8042e91b804995c4b4ab84a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"556442e7661f2471e39e2b67e5b01a2f030ef776","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    def _test_enforce_http(self, return_value):"},{"line_number":28,"context_line":"        self.useFixture(fixture.HttpCheckFixture(return_value\u003dreturn_value))"},{"line_number":29,"context_line":"        rules_json \u003d {"},{"line_number":30,"context_line":"            \"example:get_http\": \"http:http://www.example.com\""},{"line_number":31,"context_line":"        }"},{"line_number":32,"context_line":"        rules \u003d oslo_policy.Rules.load_json(json.dumps(rules_json))"},{"line_number":33,"context_line":"        self.enforcer.set_rules(rules)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_f59b3d64","line":30,"updated":"2015-10-08 23:42:30.000000000","message":"since it doesn\u0027t matter what the values are, suggest use self.getUniqueString() to generate the strings, otherwise we\u0027ll wonder what\u0027s special about these values.","commit_id":"5014e34b90e54aadc864e7309590e502e9fc93a8"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"d329a9bc1d233006286bbc4dd0332931bb9754a1","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    def _test_enforce_http(self, return_value):"},{"line_number":28,"context_line":"        self.useFixture(fixture.HttpCheckFixture(return_value\u003dreturn_value))"},{"line_number":29,"context_line":"        rules_json \u003d {"},{"line_number":30,"context_line":"            \"example:get_http\": \"http:http://www.example.com\""},{"line_number":31,"context_line":"        }"},{"line_number":32,"context_line":"        rules \u003d oslo_policy.Rules.load_json(json.dumps(rules_json))"},{"line_number":33,"context_line":"        self.enforcer.set_rules(rules)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_751badca","line":30,"in_reply_to":"7a2fa921_f59b3d64","updated":"2015-10-08 23:50:20.000000000","message":"Done","commit_id":"5014e34b90e54aadc864e7309590e502e9fc93a8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"556442e7661f2471e39e2b67e5b01a2f030ef776","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        }"},{"line_number":32,"context_line":"        rules \u003d oslo_policy.Rules.load_json(json.dumps(rules_json))"},{"line_number":33,"context_line":"        self.enforcer.set_rules(rules)"},{"line_number":34,"context_line":"        return self.enforcer.enforce(rule\u003d\u0027example:get_http\u0027,"},{"line_number":35,"context_line":"                                     target\u003d{},"},{"line_number":36,"context_line":"                                     creds\u003d{})"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_158a791b","line":34,"updated":"2015-10-08 23:42:30.000000000","message":"since \u0027example:get_http\u0027 has to be the same here as it is at line 30, use a common variable.","commit_id":"5014e34b90e54aadc864e7309590e502e9fc93a8"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"d329a9bc1d233006286bbc4dd0332931bb9754a1","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        }"},{"line_number":32,"context_line":"        rules \u003d oslo_policy.Rules.load_json(json.dumps(rules_json))"},{"line_number":33,"context_line":"        self.enforcer.set_rules(rules)"},{"line_number":34,"context_line":"        return self.enforcer.enforce(rule\u003d\u0027example:get_http\u0027,"},{"line_number":35,"context_line":"                                     target\u003d{},"},{"line_number":36,"context_line":"                                     creds\u003d{})"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_157b59f6","line":34,"in_reply_to":"7a2fa921_158a791b","updated":"2015-10-08 23:50:20.000000000","message":"Done","commit_id":"5014e34b90e54aadc864e7309590e502e9fc93a8"}]}
