)]}'
{"keystone/tests/unit/test_backend.py":[{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"d545a0d7d6347c91e92e625b7a3f8b18d4d116d2","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    test_plan \u003d {"},{"line_number":56,"context_line":"        entities: details and number of entities,"},{"line_number":57,"context_line":"        assignments: list of assignments to create"},{"line_number":58,"context_line":"        tests: list of pairs of input params and expected outputs}"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    An example test plan:"}],"source_content_type":"text/x-python","patch_set":23,"id":"da86d52c_3cb57b7e","line":57,"updated":"2015-02-15 14:49:48.000000000","message":"(nit) A comma at the end of the line?\nWell, it won\u0027t be interpreted by Python anyway, it is just to keep consisten with just above line.","commit_id":"977727c16e20c819627a93919b30821eb667ab40"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"637a01ba677f2e25683dbf437bf369be58969079","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    test_plan \u003d {"},{"line_number":56,"context_line":"        entities: details and number of entities,"},{"line_number":57,"context_line":"        assignments: list of assignments to create"},{"line_number":58,"context_line":"        tests: list of pairs of input params and expected outputs}"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    An example test plan:"}],"source_content_type":"text/x-python","patch_set":23,"id":"da86d52c_82219efe","line":57,"in_reply_to":"da86d52c_3cb57b7e","updated":"2015-02-15 19:33:52.000000000","message":"Done","commit_id":"977727c16e20c819627a93919b30821eb667ab40"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"d545a0d7d6347c91e92e625b7a3f8b18d4d116d2","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"                     \u0027role\u0027: 3},"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        # If it is required that an existing domain by used for the new"},{"line_number":72,"context_line":"        # entities, then the id of that domain can be included in the"},{"line_number":73,"context_line":"        # domain dict, e.g.:"},{"line_number":74,"context_line":"        # {\u0027id\u0027: \u003cdomain_id\u003e, \u0027contents\u0027: {\u0027user\u0027: 1}}"}],"source_content_type":"text/x-python","patch_set":23,"id":"da86d52c_7cae1331","line":71,"updated":"2015-02-15 14:49:48.000000000","message":"(nit) s/by/be ?","commit_id":"977727c16e20c819627a93919b30821eb667ab40"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"637a01ba677f2e25683dbf437bf369be58969079","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"                     \u0027role\u0027: 3},"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        # If it is required that an existing domain by used for the new"},{"line_number":72,"context_line":"        # entities, then the id of that domain can be included in the"},{"line_number":73,"context_line":"        # domain dict, e.g.:"},{"line_number":74,"context_line":"        # {\u0027id\u0027: \u003cdomain_id\u003e, \u0027contents\u0027: {\u0027user\u0027: 1}}"}],"source_content_type":"text/x-python","patch_set":23,"id":"da86d52c_a21ea2b9","line":71,"in_reply_to":"da86d52c_7cae1331","updated":"2015-02-15 19:33:52.000000000","message":"Done","commit_id":"977727c16e20c819627a93919b30821eb667ab40"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"d545a0d7d6347c91e92e625b7a3f8b18d4d116d2","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        \"\"\"Create the entities specified in the test plan."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        Process the \u0027entities\u0027 key in the test plan, creating the entities"},{"line_number":105,"context_line":"        requested. Each entity created will added to the array"},{"line_number":106,"context_line":"        of entities stored in the returned test_data object, e.g.:"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        test_data[\u0027user\u0027] \u003d [user[0], user[1]....]"}],"source_content_type":"text/x-python","patch_set":23,"id":"da86d52c_fc2f63a5","line":105,"updated":"2015-02-15 14:49:48.000000000","message":"(nit) s/entities requested/requested entities ?\n\n(nit) s/entity created/created entity?\n\n(nit) s/will added/will be added ?","commit_id":"977727c16e20c819627a93919b30821eb667ab40"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"637a01ba677f2e25683dbf437bf369be58969079","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        \"\"\"Create the entities specified in the test plan."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        Process the \u0027entities\u0027 key in the test plan, creating the entities"},{"line_number":105,"context_line":"        requested. Each entity created will added to the array"},{"line_number":106,"context_line":"        of entities stored in the returned test_data object, e.g.:"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        test_data[\u0027user\u0027] \u003d [user[0], user[1]....]"}],"source_content_type":"text/x-python","patch_set":23,"id":"da86d52c_027daee7","line":105,"in_reply_to":"da86d52c_fc2f63a5","updated":"2015-02-15 19:33:52.000000000","message":"Done","commit_id":"977727c16e20c819627a93919b30821eb667ab40"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"d545a0d7d6347c91e92e625b7a3f8b18d4d116d2","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"            new_entity \u003d {\u0027name\u0027: uuid.uuid4().hex, \u0027domain_id\u0027: domain_id}"},{"line_number":122,"context_line":"            if entity_type in [\u0027user\u0027, \u0027group\u0027]:"},{"line_number":123,"context_line":"                new_entity \u003d _create_entity_func(entity_type)(new_entity)"},{"line_number":124,"context_line":"            else:"},{"line_number":125,"context_line":"                new_entity[\u0027id\u0027] \u003d uuid.uuid4().hex"},{"line_number":126,"context_line":"                new_entity \u003d _create_entity_func(entity_type)(new_entity[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":23,"id":"da86d52c_0751400e","line":123,"updated":"2015-02-15 14:49:48.000000000","message":"What about\n\n    f \u003d getattr(self.identity_api, \u0027create_%s\u0027 % entity_type)\n    new_entity \u003d f(new_entity)","commit_id":"977727c16e20c819627a93919b30821eb667ab40"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"637a01ba677f2e25683dbf437bf369be58969079","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"            new_entity \u003d {\u0027name\u0027: uuid.uuid4().hex, \u0027domain_id\u0027: domain_id}"},{"line_number":122,"context_line":"            if entity_type in [\u0027user\u0027, \u0027group\u0027]:"},{"line_number":123,"context_line":"                new_entity \u003d _create_entity_func(entity_type)(new_entity)"},{"line_number":124,"context_line":"            else:"},{"line_number":125,"context_line":"                new_entity[\u0027id\u0027] \u003d uuid.uuid4().hex"},{"line_number":126,"context_line":"                new_entity \u003d _create_entity_func(entity_type)(new_entity[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":23,"id":"da86d52c_e25eda78","line":123,"in_reply_to":"da86d52c_0751400e","updated":"2015-02-15 19:33:52.000000000","message":"Done","commit_id":"977727c16e20c819627a93919b30821eb667ab40"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"d545a0d7d6347c91e92e625b7a3f8b18d4d116d2","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            else:"},{"line_number":125,"context_line":"                new_entity[\u0027id\u0027] \u003d uuid.uuid4().hex"},{"line_number":126,"context_line":"                new_entity \u003d _create_entity_func(entity_type)(new_entity[\u0027id\u0027],"},{"line_number":127,"context_line":"                                                              new_entity)"},{"line_number":128,"context_line":"            return new_entity"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        def _create_domain(domain_id):"}],"source_content_type":"text/x-python","patch_set":23,"id":"da86d52c_e74b4c5d","line":127,"updated":"2015-02-15 14:49:48.000000000","message":"Why not \n\n    f \u003d getattr(self.resource_api, \u0027create_%s\u0027 % entity_type)\n    new_entity \u003d f(new_entity[\u0027id\u0027], new_entity)\n\ninstead of having an additional _create_entity_func method that tries identity and then resource API every time?\n\nIf you take these two last suggestions; so that method could be removed.","commit_id":"977727c16e20c819627a93919b30821eb667ab40"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"637a01ba677f2e25683dbf437bf369be58969079","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            else:"},{"line_number":125,"context_line":"                new_entity[\u0027id\u0027] \u003d uuid.uuid4().hex"},{"line_number":126,"context_line":"                new_entity \u003d _create_entity_func(entity_type)(new_entity[\u0027id\u0027],"},{"line_number":127,"context_line":"                                                              new_entity)"},{"line_number":128,"context_line":"            return new_entity"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        def _create_domain(domain_id):"}],"source_content_type":"text/x-python","patch_set":23,"id":"da86d52c_c272b610","line":127,"in_reply_to":"da86d52c_e74b4c5d","updated":"2015-02-15 19:33:52.000000000","message":"..and actually, this else; will ONLY create projects....so it can be even simpler (and in fact this clause goes away in a subsequent patch...)","commit_id":"977727c16e20c819627a93919b30821eb667ab40"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"d545a0d7d6347c91e92e625b7a3f8b18d4d116d2","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        which is actually shorthand for:"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        \u0027user_id: reference_data[\u0027user\u0027][0][\u0027id\u0027]"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        This method converts the shorthand version into the full reference."},{"line_number":188,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"da86d52c_0778608e","line":185,"updated":"2015-02-15 14:49:48.000000000","message":"Missing a single quote after user_id.\n\n\u0027user_id should be \u0027user_id\u0027","commit_id":"977727c16e20c819627a93919b30821eb667ab40"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"637a01ba677f2e25683dbf437bf369be58969079","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        which is actually shorthand for:"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        \u0027user_id: reference_data[\u0027user\u0027][0][\u0027id\u0027]"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        This method converts the shorthand version into the full reference."},{"line_number":188,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"da86d52c_425ec677","line":185,"in_reply_to":"da86d52c_0778608e","updated":"2015-02-15 19:33:52.000000000","message":"Done","commit_id":"977727c16e20c819627a93919b30821eb667ab40"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"d545a0d7d6347c91e92e625b7a3f8b18d4d116d2","unresolved":false,"context_lines":[{"line_number":723,"context_line":"                 \u0027results\u0027: [{\u0027group\u0027: 0, \u0027role\u0027: 2, \u0027domain\u0027: 0},"},{"line_number":724,"context_line":"                             {\u0027group\u0027: 0, \u0027role\u0027: 2, \u0027project\u0027: 0}]}"},{"line_number":725,"context_line":"            ]"},{"line_number":726,"context_line":"        }"},{"line_number":727,"context_line":"        test_data \u003d self.execute_assignment_test_plan(test_plan)"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"        # Also test that list_role_assignments_for_role() gives the same answer"}],"source_content_type":"text/x-python","patch_set":23,"id":"da86d52c_27f2c406","line":726,"updated":"2015-02-15 14:49:48.000000000","message":"Well, looking here at this as an example...\n\nWhat about the following representation:\n\n    entities \u003d {}\n    assignments \u003d {}\n    tests \u003d {}\n\nand then we would do:\n\n    test_data \u003d self.execute_assignment_test_plan(entities, assignments, tests)\n\n*Maybe* this would improve test readability since we wouldn\u0027t have everything in a single and BIG test_plan dict for complex test plans.","commit_id":"977727c16e20c819627a93919b30821eb667ab40"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"637a01ba677f2e25683dbf437bf369be58969079","unresolved":false,"context_lines":[{"line_number":723,"context_line":"                 \u0027results\u0027: [{\u0027group\u0027: 0, \u0027role\u0027: 2, \u0027domain\u0027: 0},"},{"line_number":724,"context_line":"                             {\u0027group\u0027: 0, \u0027role\u0027: 2, \u0027project\u0027: 0}]}"},{"line_number":725,"context_line":"            ]"},{"line_number":726,"context_line":"        }"},{"line_number":727,"context_line":"        test_data \u003d self.execute_assignment_test_plan(test_plan)"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"        # Also test that list_role_assignments_for_role() gives the same answer"}],"source_content_type":"text/x-python","patch_set":23,"id":"da86d52c_02cbee1e","line":726,"in_reply_to":"da86d52c_27f2c406","updated":"2015-02-15 19:33:52.000000000","message":"Maybe...in fact, we already allow you to call execute_assignment_tests (this is used in some of the follow on patches). I\u0027ll tweak it slightly so that you can pass a test_plan without any tests into execute_assignment_test_plan, so that you can then do multiple separate subsequent tests..","commit_id":"977727c16e20c819627a93919b30821eb667ab40"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"97575cf4d65216a2809e2d02e1eefa96e3cba80b","unresolved":false,"context_lines":[{"line_number":507,"context_line":""},{"line_number":508,"context_line":"    def test_list_role_assignments_unfiltered(self):"},{"line_number":509,"context_line":"        \"\"\"Test for unfiltered listing role assignments."},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"        Test Plan:"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"        - Create a domain, with a user, group \u0026 project"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a4dcd0f_05bbe3c4","side":"PARENT","line":510,"updated":"2015-08-13 14:22:00.000000000","message":"you may consider to keep this docstring after modification?","commit_id":"0d3767fae9d2202fa5b4f63663df5f060d217910"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8c286feb19331abfeb978062308499648140b132","unresolved":false,"context_lines":[{"line_number":507,"context_line":""},{"line_number":508,"context_line":"    def test_list_role_assignments_unfiltered(self):"},{"line_number":509,"context_line":"        \"\"\"Test for unfiltered listing role assignments."},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"        Test Plan:"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"        - Create a domain, with a user, group \u0026 project"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a4dcd0f_2b731317","side":"PARENT","line":510,"in_reply_to":"1a4dcd0f_05bbe3c4","updated":"2015-08-15 11:26:12.000000000","message":"Done","commit_id":"0d3767fae9d2202fa5b4f63663df5f060d217910"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"97575cf4d65216a2809e2d02e1eefa96e3cba80b","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                # how many assignments there were before the test."},{"line_number":225,"context_line":"                self.assertEqual("},{"line_number":226,"context_line":"                    len(actual),"},{"line_number":227,"context_line":"                    len(expected) + test_data[\u0027initial_assignment_count\u0027])"},{"line_number":228,"context_line":"            else:"},{"line_number":229,"context_line":"                self.assertThat(actual, matchers.HasLength(len(expected)))"},{"line_number":230,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"1a4dcd0f_892e6541","line":227,"updated":"2015-08-13 14:22:00.000000000","message":"nits: reverse the order pls, \n\n    def assertEqual(self, expected, observed, message\u003d\u0027\u0027):\n        \"\"\"Assert that \u0027expected\u0027 is equal to \u0027observed\u0027.","commit_id":"cdc86a5d90113b8ca1c963ba73a0c12d0402fd51"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8c286feb19331abfeb978062308499648140b132","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                # how many assignments there were before the test."},{"line_number":225,"context_line":"                self.assertEqual("},{"line_number":226,"context_line":"                    len(actual),"},{"line_number":227,"context_line":"                    len(expected) + test_data[\u0027initial_assignment_count\u0027])"},{"line_number":228,"context_line":"            else:"},{"line_number":229,"context_line":"                self.assertThat(actual, matchers.HasLength(len(expected)))"},{"line_number":230,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"1a4dcd0f_1269b125","line":227,"in_reply_to":"1a4dcd0f_892e6541","updated":"2015-08-15 11:26:12.000000000","message":"Done","commit_id":"cdc86a5d90113b8ca1c963ba73a0c12d0402fd51"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"97575cf4d65216a2809e2d02e1eefa96e3cba80b","unresolved":false,"context_lines":[{"line_number":734,"context_line":"                          self.resource_api.get_project,"},{"line_number":735,"context_line":"                          \u0027fake2\u0027)"},{"line_number":736,"context_line":""},{"line_number":737,"context_line":"    def test_list_role_assignments_unfiltered(self):"},{"line_number":738,"context_line":"        test_plan \u003d {"},{"line_number":739,"context_line":"            \u0027entities\u0027: {\u0027domain\u0027: [{\u0027contents\u0027: {\u0027user\u0027: 1, \u0027group\u0027: 1,"},{"line_number":740,"context_line":"                                                  \u0027project\u0027: 1}}],"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a4dcd0f_c5e89b7d","line":737,"updated":"2015-08-13 14:22:00.000000000","message":"I think what this testcase want to do is,\n- list unfiltered role assignment\n- list the filtered role assignment with role_id \u003d2 as the filter parameter\n- verify that your new test strategy is really work.\n\nThis testcase is burdened with too many scenario, can we split this test into two or three? or just update the name of the testcase?","commit_id":"cdc86a5d90113b8ca1c963ba73a0c12d0402fd51"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8c286feb19331abfeb978062308499648140b132","unresolved":false,"context_lines":[{"line_number":734,"context_line":"                          self.resource_api.get_project,"},{"line_number":735,"context_line":"                          \u0027fake2\u0027)"},{"line_number":736,"context_line":""},{"line_number":737,"context_line":"    def test_list_role_assignments_unfiltered(self):"},{"line_number":738,"context_line":"        test_plan \u003d {"},{"line_number":739,"context_line":"            \u0027entities\u0027: {\u0027domain\u0027: [{\u0027contents\u0027: {\u0027user\u0027: 1, \u0027group\u0027: 1,"},{"line_number":740,"context_line":"                                                  \u0027project\u0027: 1}}],"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a4dcd0f_abd403bd","line":737,"in_reply_to":"1a4dcd0f_c5e89b7d","updated":"2015-08-15 11:26:12.000000000","message":"Converted this into two test cases.","commit_id":"cdc86a5d90113b8ca1c963ba73a0c12d0402fd51"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"5fa78d66abb8bac4776c4d80266a90bfbfbc8932","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        # default domain, plus a second domain containing 3 projects as"},{"line_number":84,"context_line":"        # well as 5 additional empty domains."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        \u0027entities\u0027: {\u0027domains\u0027: [{\u0027id\u0027: DEFAULT_DOMAIN, \u0027users\u0027: 3},"},{"line_number":87,"context_line":"                                 {\u0027projects\u0027: 3}, 5]},"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        # Create assignments between the entities, referencing the"}],"source_content_type":"text/x-python","patch_set":44,"id":"fa1b9901_fea6c40d","line":86,"updated":"2015-08-26 13:37:48.000000000","message":"It\u0027s a little weird that in the same test plan that entities appears twice.","commit_id":"12b3ec04f69eca9a862a05226e389d6a626a129c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"404e7b06a821b9f7235454f04dfd61f1cb75650a","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        # default domain, plus a second domain containing 3 projects as"},{"line_number":84,"context_line":"        # well as 5 additional empty domains."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        \u0027entities\u0027: {\u0027domains\u0027: [{\u0027id\u0027: DEFAULT_DOMAIN, \u0027users\u0027: 3},"},{"line_number":87,"context_line":"                                 {\u0027projects\u0027: 3}, 5]},"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        # Create assignments between the entities, referencing the"}],"source_content_type":"text/x-python","patch_set":44,"id":"fa1b9901_52a31c00","line":86,"in_reply_to":"fa1b9901_fea6c40d","updated":"2015-08-26 14:49:51.000000000","message":"yep, you\u0027re right - this is meant to be an example, I\u0027ll re-word this bit.","commit_id":"12b3ec04f69eca9a862a05226e389d6a626a129c"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"5fa78d66abb8bac4776c4d80266a90bfbfbc8932","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                new_entity \u003d self.identity_api.create_user(new_entity)"},{"line_number":129,"context_line":"            elif entity_type \u003d\u003d \u0027groups\u0027:"},{"line_number":130,"context_line":"                new_entity \u003d self.identity_api.create_group(new_entity)"},{"line_number":131,"context_line":"            else:"},{"line_number":132,"context_line":"                new_entity[\u0027id\u0027] \u003d uuid.uuid4().hex"},{"line_number":133,"context_line":"                new_entity \u003d self.resource_api.create_project(new_entity[\u0027id\u0027],"},{"line_number":134,"context_line":"                                                              new_entity)"}],"source_content_type":"text/x-python","patch_set":44,"id":"fa1b9901_f4a6e30d","line":131,"updated":"2015-08-26 13:37:48.000000000","message":"(nit) I think it would be better to explicitly check for \u0027projects\u0027 and raise an exception in the \u0027else\u0027. That would prevent tests from accidentally working and eventually breaking as unrelated things are changed.","commit_id":"12b3ec04f69eca9a862a05226e389d6a626a129c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"404e7b06a821b9f7235454f04dfd61f1cb75650a","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                new_entity \u003d self.identity_api.create_user(new_entity)"},{"line_number":129,"context_line":"            elif entity_type \u003d\u003d \u0027groups\u0027:"},{"line_number":130,"context_line":"                new_entity \u003d self.identity_api.create_group(new_entity)"},{"line_number":131,"context_line":"            else:"},{"line_number":132,"context_line":"                new_entity[\u0027id\u0027] \u003d uuid.uuid4().hex"},{"line_number":133,"context_line":"                new_entity \u003d self.resource_api.create_project(new_entity[\u0027id\u0027],"},{"line_number":134,"context_line":"                                                              new_entity)"}],"source_content_type":"text/x-python","patch_set":44,"id":"fa1b9901_0090ed41","line":131,"in_reply_to":"fa1b9901_f4a6e30d","updated":"2015-08-26 14:49:51.000000000","message":"Done (even though we actually break this out later in one of the follow on patches)","commit_id":"12b3ec04f69eca9a862a05226e389d6a626a129c"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"5fa78d66abb8bac4776c4d80266a90bfbfbc8932","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                    _handle_domain_spec(x)"},{"line_number":166,"context_line":"            elif isinstance(domain_spec, dict):"},{"line_number":167,"context_line":"                # If there is a domain ID specified, then use it"},{"line_number":168,"context_line":"                the_domain \u003d _create_domain(domain_spec.get(\u0027id\u0027))"},{"line_number":169,"context_line":"                test_data[\u0027domains\u0027].append(the_domain)"},{"line_number":170,"context_line":"                for entity_type, count in domain_spec.items():"},{"line_number":171,"context_line":"                    if entity_type \u003d\u003d \u0027id\u0027:"}],"source_content_type":"text/x-python","patch_set":44,"id":"fa1b9901_915f7940","line":168,"updated":"2015-08-26 13:37:48.000000000","message":"Since it\u0027s defined with a kwarg, it should probably be domain_id\u003ddomain_spec.get(\u0027id\u0027)","commit_id":"12b3ec04f69eca9a862a05226e389d6a626a129c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"404e7b06a821b9f7235454f04dfd61f1cb75650a","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                    _handle_domain_spec(x)"},{"line_number":166,"context_line":"            elif isinstance(domain_spec, dict):"},{"line_number":167,"context_line":"                # If there is a domain ID specified, then use it"},{"line_number":168,"context_line":"                the_domain \u003d _create_domain(domain_spec.get(\u0027id\u0027))"},{"line_number":169,"context_line":"                test_data[\u0027domains\u0027].append(the_domain)"},{"line_number":170,"context_line":"                for entity_type, count in domain_spec.items():"},{"line_number":171,"context_line":"                    if entity_type \u003d\u003d \u0027id\u0027:"}],"source_content_type":"text/x-python","patch_set":44,"id":"fa1b9901_60a769a7","line":168,"in_reply_to":"fa1b9901_915f7940","updated":"2015-08-26 14:49:51.000000000","message":"Done","commit_id":"12b3ec04f69eca9a862a05226e389d6a626a129c"}]}
