)]}'
{"keystone/tests/unit/backend/policy/test_sql.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"ab94c5d48b99f11b53f763a96f870f8e62dc5eb1","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                       \u0027blob\u0027: \u0027{\"identity:create_user\": \"role:domain_admin\"}\u0027,"},{"line_number":42,"context_line":"                       \u0027type\u0027: \u0027application/json\u0027}"},{"line_number":43,"context_line":"        self.driver.create_policy(self.policy[\u0027id\u0027], self.policy)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_list_policies(self):"},{"line_number":46,"context_line":"        another_policy \u003d {\u0027id\u0027: uuid.uuid4().hex,"},{"line_number":47,"context_line":"                          \u0027blob\u0027: \u0027{\"compute:create\": \"role:project_member\"}\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_c113ed63","line":44,"updated":"2015-08-26 08:37:21.000000000","message":"Add self.addCleanup(...) here to clean up the policy created here for testing.","commit_id":"da7e1b97e7091e9e3c868af71d97669229f10bb3"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"fdcf0a0388e096106af84ce5ef32327c908cd892","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                       \u0027blob\u0027: \u0027{\"identity:create_user\": \"role:domain_admin\"}\u0027,"},{"line_number":42,"context_line":"                       \u0027type\u0027: \u0027application/json\u0027}"},{"line_number":43,"context_line":"        self.driver.create_policy(self.policy[\u0027id\u0027], self.policy)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_list_policies(self):"},{"line_number":46,"context_line":"        another_policy \u003d {\u0027id\u0027: uuid.uuid4().hex,"},{"line_number":47,"context_line":"                          \u0027blob\u0027: \u0027{\"compute:create\": \"role:project_member\"}\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a1a9d01_b1122661","line":44,"in_reply_to":"9a1a9d01_015897f9","updated":"2015-09-27 06:19:51.000000000","message":"Oh, sorry. I think the code there was misleading me, https://github.com/openstack/keystone/blob/master/keystone/tests/unit/backend/domain_config/core.py#L26-L28\n\nNow I now the difference between them, thanks!","commit_id":"da7e1b97e7091e9e3c868af71d97669229f10bb3"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"5cd14b214399f1485e765387668628dd2344e6e0","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                       \u0027blob\u0027: \u0027{\"identity:create_user\": \"role:domain_admin\"}\u0027,"},{"line_number":42,"context_line":"                       \u0027type\u0027: \u0027application/json\u0027}"},{"line_number":43,"context_line":"        self.driver.create_policy(self.policy[\u0027id\u0027], self.policy)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_list_policies(self):"},{"line_number":46,"context_line":"        another_policy \u003d {\u0027id\u0027: uuid.uuid4().hex,"},{"line_number":47,"context_line":"                          \u0027blob\u0027: \u0027{\"compute:create\": \"role:project_member\"}\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a1a9d01_015897f9","line":44,"in_reply_to":"fa1b9901_c113ed63","updated":"2015-09-25 02:42:35.000000000","message":"Why?","commit_id":"da7e1b97e7091e9e3c868af71d97669229f10bb3"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"ab94c5d48b99f11b53f763a96f870f8e62dc5eb1","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        self.assertEqual(2, len(policies))"},{"line_number":54,"context_line":"        self.assertIn(self.policy, policies)"},{"line_number":55,"context_line":"        self.assertIn(another_policy, policies)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def test_get_policy(self):"},{"line_number":58,"context_line":"        self.assertEqual(self.policy,"},{"line_number":59,"context_line":"                         self.driver.get_policy(self.policy[\u0027id\u0027]))"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_7c116a51","line":56,"updated":"2015-08-26 08:37:21.000000000","message":"Add another testcase to test the creation of policy to consistent with the API definition.","commit_id":"da7e1b97e7091e9e3c868af71d97669229f10bb3"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"52231a52a228670d09577015857e7991ca3a3c7d","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        self.assertEqual(2, len(policies))"},{"line_number":54,"context_line":"        self.assertIn(self.policy, policies)"},{"line_number":55,"context_line":"        self.assertIn(another_policy, policies)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def test_get_policy(self):"},{"line_number":58,"context_line":"        self.assertEqual(self.policy,"},{"line_number":59,"context_line":"                         self.driver.get_policy(self.policy[\u0027id\u0027]))"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_ad56f927","line":56,"in_reply_to":"fa1b9901_7c116a51","updated":"2015-12-07 13:40:52.000000000","message":"Policy is created in setUp. Test for get_policy ensures it was created correctly.","commit_id":"da7e1b97e7091e9e3c868af71d97669229f10bb3"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"e129d253309b1de42a42f13a33cc080f941441ed","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class SQLModelTestCase(core_sql.BaseBackendSqlModels):"},{"line_number":19,"context_line":"    \"\"\"Test cases to validate the table structure.\"\"\""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    def test_policy_model(self):"},{"line_number":22,"context_line":"        cols \u003d ((\u0027id\u0027, sql.String, 64),"}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_80722810","line":19,"updated":"2016-01-18 13:39:55.000000000","message":"We have a funny habit of doing this.","commit_id":"9bc3b65eb9264ec767fefe91f588b597698997d4"}],"keystone/tests/unit/policy/backends/test_base.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"d227fa5e5b226565b714247ae68987cfddbaa3be","unresolved":false,"context_lines":[{"line_number":28,"context_line":"                       \u0027type\u0027: \u0027application/json\u0027}"},{"line_number":29,"context_line":"        self.driver.create_policy(self.policy[\u0027id\u0027], self.policy)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def _get_driver(self):"},{"line_number":32,"context_line":"        raise exception.NotImplemented()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def test_list_policies(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_12423e68","line":31,"updated":"2016-04-06 19:31:08.000000000","message":"We could make this an abstractmethod for clarity, but not required.","commit_id":"27693cb020269525ec325e45812ec82514ce0d06"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"7fac747e3517b0a4f5e21bdca0a3b096e5f95033","unresolved":false,"context_lines":[{"line_number":28,"context_line":"                       \u0027type\u0027: \u0027application/json\u0027}"},{"line_number":29,"context_line":"        self.driver.create_policy(self.policy[\u0027id\u0027], self.policy)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def _get_driver(self):"},{"line_number":32,"context_line":"        raise exception.NotImplemented()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def test_list_policies(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a061dce_bd7fe3de","line":31,"in_reply_to":"9a061dce_12423e68","updated":"2016-04-06 19:36:29.000000000","message":"Done","commit_id":"27693cb020269525ec325e45812ec82514ce0d06"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"990d999ed26f19002b6dc3cd594eb9089bb72288","unresolved":false,"context_lines":[{"line_number":23,"context_line":"        super(DriverTestCase, self).setUp()"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"        # Load the backend before making any driver call"},{"line_number":26,"context_line":"        self.load_backend()"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"        self.policy \u003d {\u0027id\u0027: uuid.uuid4().hex,"},{"line_number":29,"context_line":"                       \u0027blob\u0027: \u0027{\"identity:create_user\": \"role:domain_admin\"}\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a122d0e_7ee5ea35","line":26,"updated":"2016-04-29 20:03:23.000000000","message":"this should not be called load_backend. We already have a load_backends in the tests that loads managers.","commit_id":"f518fa020129bb254ddfef6afafeea17426a494e"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"c67900421e7cc4c1d27fad71a84490c33cda6e11","unresolved":false,"context_lines":[{"line_number":23,"context_line":"        super(DriverTestCase, self).setUp()"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"        # Load the backend before making any driver call"},{"line_number":26,"context_line":"        self.load_backend()"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"        self.policy \u003d {\u0027id\u0027: uuid.uuid4().hex,"},{"line_number":29,"context_line":"                       \u0027blob\u0027: \u0027{\"identity:create_user\": \"role:domain_admin\"}\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"dab17558_92a35f9e","line":26,"in_reply_to":"1a122d0e_7ee5ea35","updated":"2016-05-06 13:09:26.000000000","message":"Done","commit_id":"f518fa020129bb254ddfef6afafeea17426a494e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"990d999ed26f19002b6dc3cd594eb9089bb72288","unresolved":false,"context_lines":[{"line_number":30,"context_line":"                       \u0027type\u0027: \u0027application/json\u0027}"},{"line_number":31,"context_line":"        self.driver.create_policy(self.policy[\u0027id\u0027], self.policy)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @abc.abstractproperty"},{"line_number":34,"context_line":"    def driver(self):"},{"line_number":35,"context_line":"        raise exception.NotImplemented()"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1a122d0e_fef0dafe","line":33,"updated":"2016-04-29 20:03:23.000000000","message":"this class isn\u0027t decorated as being an abstract base class.","commit_id":"f518fa020129bb254ddfef6afafeea17426a494e"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"c67900421e7cc4c1d27fad71a84490c33cda6e11","unresolved":false,"context_lines":[{"line_number":30,"context_line":"                       \u0027type\u0027: \u0027application/json\u0027}"},{"line_number":31,"context_line":"        self.driver.create_policy(self.policy[\u0027id\u0027], self.policy)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @abc.abstractproperty"},{"line_number":34,"context_line":"    def driver(self):"},{"line_number":35,"context_line":"        raise exception.NotImplemented()"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"dab17558_5299f76d","line":33,"in_reply_to":"1a122d0e_fef0dafe","updated":"2016-05-06 13:09:26.000000000","message":"Done","commit_id":"f518fa020129bb254ddfef6afafeea17426a494e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"990d999ed26f19002b6dc3cd594eb9089bb72288","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        self.assertEqual(2, len(policies))"},{"line_number":50,"context_line":"        self.assertIn(self.policy, policies)"},{"line_number":51,"context_line":"        self.assertIn(another_policy, policies)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def test_get_policy(self):"},{"line_number":54,"context_line":"        self.assertEqual(self.policy,"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a122d0e_3edff269","line":51,"updated":"2016-04-29 20:03:23.000000000","message":"these 3 lines could be accomplished with assertItemsEqual","commit_id":"f518fa020129bb254ddfef6afafeea17426a494e"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"c67900421e7cc4c1d27fad71a84490c33cda6e11","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        self.assertEqual(2, len(policies))"},{"line_number":50,"context_line":"        self.assertIn(self.policy, policies)"},{"line_number":51,"context_line":"        self.assertIn(another_policy, policies)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def test_get_policy(self):"},{"line_number":54,"context_line":"        self.assertEqual(self.policy,"}],"source_content_type":"text/x-python","patch_set":14,"id":"dab17558_d2ade789","line":51,"in_reply_to":"1a122d0e_3edff269","updated":"2016-05-06 13:09:26.000000000","message":"Done","commit_id":"f518fa020129bb254ddfef6afafeea17426a494e"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"346ae1e5c355e20849eb86e62a1f169cfd8c4791","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from keystone import exception"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":20,"context_line":"class DriverTestCase(object):"},{"line_number":21,"context_line":"    \"\"\"Test cases to validate the current policy driver behavior.\"\"\""},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"dab17558_b4019708","line":19,"updated":"2016-05-10 22:27:24.000000000","message":"Don\u0027t use ABCMeta in testing. This is not needed.","commit_id":"663abf37e28892c5a5ab8a2ac024fc30b9f65c74"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"28d9371507b155736aff6672e1548304a6d5b3cb","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from keystone import exception"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":20,"context_line":"class DriverTestCase(object):"},{"line_number":21,"context_line":"    \"\"\"Test cases to validate the current policy driver behavior.\"\"\""},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"dab17558_f70eeae3","line":19,"in_reply_to":"dab17558_b4019708","updated":"2016-05-13 13:03:32.000000000","message":"Done","commit_id":"663abf37e28892c5a5ab8a2ac024fc30b9f65c74"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"346ae1e5c355e20849eb86e62a1f169cfd8c4791","unresolved":false,"context_lines":[{"line_number":30,"context_line":"                       \u0027type\u0027: \u0027application/json\u0027}"},{"line_number":31,"context_line":"        self.driver.create_policy(self.policy[\u0027id\u0027], self.policy)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @abc.abstractproperty"},{"line_number":34,"context_line":"    def driver(self):"},{"line_number":35,"context_line":"        raise exception.NotImplemented()"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"dab17558_17018505","line":33,"updated":"2016-05-10 22:27:24.000000000","message":"See Above comment","commit_id":"663abf37e28892c5a5ab8a2ac024fc30b9f65c74"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"28d9371507b155736aff6672e1548304a6d5b3cb","unresolved":false,"context_lines":[{"line_number":30,"context_line":"                       \u0027type\u0027: \u0027application/json\u0027}"},{"line_number":31,"context_line":"        self.driver.create_policy(self.policy[\u0027id\u0027], self.policy)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @abc.abstractproperty"},{"line_number":34,"context_line":"    def driver(self):"},{"line_number":35,"context_line":"        raise exception.NotImplemented()"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"dab17558_d7112606","line":33,"in_reply_to":"dab17558_17018505","updated":"2016-05-13 13:03:32.000000000","message":"Done","commit_id":"663abf37e28892c5a5ab8a2ac024fc30b9f65c74"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"346ae1e5c355e20849eb86e62a1f169cfd8c4791","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def driver(self):"},{"line_number":35,"context_line":"        raise exception.NotImplemented()"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    @abc.abstractmethod"},{"line_number":38,"context_line":"    def load_fixtures(self):"},{"line_number":39,"context_line":"        raise exception.NotImplemented()"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"dab17558_f705e110","line":37,"updated":"2016-05-10 22:27:24.000000000","message":"see above comment","commit_id":"663abf37e28892c5a5ab8a2ac024fc30b9f65c74"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"28d9371507b155736aff6672e1548304a6d5b3cb","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def driver(self):"},{"line_number":35,"context_line":"        raise exception.NotImplemented()"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    @abc.abstractmethod"},{"line_number":38,"context_line":"    def load_fixtures(self):"},{"line_number":39,"context_line":"        raise exception.NotImplemented()"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"dab17558_57fed6ae","line":37,"in_reply_to":"dab17558_f705e110","updated":"2016-05-13 13:03:32.000000000","message":"Done","commit_id":"663abf37e28892c5a5ab8a2ac024fc30b9f65c74"}],"keystone/tests/unit/policy/backends/test_sql.py":[{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"f834757caf321276d1a64f066f70d05cd1173543","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    @property"},{"line_number":41,"context_line":"    def driver(self):"},{"line_number":42,"context_line":"        if not hasattr(self, \u0027_driver\u0027):"},{"line_number":43,"context_line":"            self._driver \u003d sql_driver.Policy()"},{"line_number":44,"context_line":"        return self._driver"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ac371cc_5730a556","line":43,"updated":"2016-08-15 19:54:31.000000000","message":"Why not just stick this in setUp() (also before calling the parent\u0027s setUp) and avoid having to check hasattr()?","commit_id":"e1e7c7ddb728a0bb835d32d6b0632a14e9e79448"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"6b2e4b24985192c9cb1a35a1bbeb480d33f8e9fc","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    @property"},{"line_number":41,"context_line":"    def driver(self):"},{"line_number":42,"context_line":"        if not hasattr(self, \u0027_driver\u0027):"},{"line_number":43,"context_line":"            self._driver \u003d sql_driver.Policy()"},{"line_number":44,"context_line":"        return self._driver"}],"source_content_type":"text/x-python","patch_set":19,"id":"1ac06dbe_c9ecd191","line":43,"in_reply_to":"3ac371cc_5730a556","updated":"2016-08-22 12:02:09.000000000","message":"++, the should be more concise. Let\u0027s move this one at first.","commit_id":"e1e7c7ddb728a0bb835d32d6b0632a14e9e79448"}]}
