)]}'
{"keystone/exception.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"ebdbd576ca047c0af0b6ccac1d5c5e6cdf6c67d0","unresolved":false,"context_lines":[{"line_number":354,"context_line":"    title \u003d \u0027Internal Server Error\u0027"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"class PolicyError(Error):"},{"line_number":358,"context_line":"    message_format \u003d _(\"Unable to parse policy file %(policy_file)s.\")"},{"line_number":359,"context_line":"    code \u003d 500"},{"line_number":360,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa7fdbe_d301e9af","line":357,"updated":"2014-10-28 21:49:54.000000000","message":"suggest renaming this to: PolicyParsingError\n\nalso you can base this off of UnexpectedError instead of Error, and get the 500 error code for free","commit_id":"efbf4230fc51de121f6ed495b94e64be644edfb2"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"440fb3e078ca0e4e52e585189b8696612df51310","unresolved":false,"context_lines":[{"line_number":354,"context_line":"    title \u003d \u0027Internal Server Error\u0027"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"class PolicyError(Error):"},{"line_number":358,"context_line":"    message_format \u003d _(\"Unable to parse policy file %(policy_file)s.\")"},{"line_number":359,"context_line":"    code \u003d 500"},{"line_number":360,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa7fdbe_f4707775","line":357,"in_reply_to":"9aa7fdbe_d301e9af","updated":"2014-10-29 20:35:31.000000000","message":"Good point, done","commit_id":"efbf4230fc51de121f6ed495b94e64be644edfb2"}],"keystone/tests/test_policy.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"ebdbd576ca047c0af0b6ccac1d5c5e6cdf6c67d0","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    def test_invalid_policy_raises_error(self):"},{"line_number":61,"context_line":"        action \u003d \"example:test\""},{"line_number":62,"context_line":"        empty_credentials \u003d {}"},{"line_number":63,"context_line":"        invalid_json \u003d \"\"\"{\"example:test\": [],}\"\"\""},{"line_number":64,"context_line":"        with open(self.tmpfilename, \"w\") as policyfile:"},{"line_number":65,"context_line":"            policyfile.write(invalid_json)"},{"line_number":66,"context_line":"        self.assertRaises(exception.PolicyError, rules.enforce,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa7fdbe_d39d6967","line":63,"updated":"2014-10-28 21:49:54.000000000","message":"why the triple \"\"\" ? can you use single quotes instead?","commit_id":"efbf4230fc51de121f6ed495b94e64be644edfb2"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"440fb3e078ca0e4e52e585189b8696612df51310","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    def test_invalid_policy_raises_error(self):"},{"line_number":61,"context_line":"        action \u003d \"example:test\""},{"line_number":62,"context_line":"        empty_credentials \u003d {}"},{"line_number":63,"context_line":"        invalid_json \u003d \"\"\"{\"example:test\": [],}\"\"\""},{"line_number":64,"context_line":"        with open(self.tmpfilename, \"w\") as policyfile:"},{"line_number":65,"context_line":"            policyfile.write(invalid_json)"},{"line_number":66,"context_line":"        self.assertRaises(exception.PolicyError, rules.enforce,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa7fdbe_b457cfc9","line":63,"in_reply_to":"9aa7fdbe_d39d6967","updated":"2014-10-29 20:35:31.000000000","message":"I based this off the above test, but I can refactor it.","commit_id":"efbf4230fc51de121f6ed495b94e64be644edfb2"}]}
