)]}'
{"tempest/api/identity/admin/v3/test_roles.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"a21f61a8108106556af0af3ea7f13c4d1fc222b5","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":34,"context_line":"    def test_role_create_update_get(self):"},{"line_number":35,"context_line":"        resp, role \u003d self.v3_client.create_role(rand_name(\u0027Role-\u0027))"},{"line_number":36,"context_line":"        self.assertEqual(resp[\u0027status\u0027], \u0027201\u0027)"},{"line_number":37,"context_line":"        self.assertIn(\u0027name\u0027, role)"},{"line_number":38,"context_line":"        self.addCleanup(self.v3_client.delete_role, role[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAQn%2F%2F4yM%3D","line":35,"updated":"2013-07-19 19:35:19.000000000","message":"if we are specifying a name, shouldn\u0027ed we test the name is actually that, in #37","commit_id":"db788df8db4aea7b04c3703e218694e4238a60d8"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"32af911be531580442891cf8b1ae530d39725bb1","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":34,"context_line":"    def test_role_create_update_get(self):"},{"line_number":35,"context_line":"        resp, role \u003d self.v3_client.create_role(rand_name(\u0027Role-\u0027))"},{"line_number":36,"context_line":"        self.assertEqual(resp[\u0027status\u0027], \u0027201\u0027)"},{"line_number":37,"context_line":"        self.assertIn(\u0027name\u0027, role)"},{"line_number":38,"context_line":"        self.addCleanup(self.v3_client.delete_role, role[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAQn%2F%2F1es%3D","line":35,"in_reply_to":"AAAAQn%2F%2F4yM%3D","updated":"2013-07-22 13:23:35.000000000","message":"Done","commit_id":"db788df8db4aea7b04c3703e218694e4238a60d8"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"a21f61a8108106556af0af3ea7f13c4d1fc222b5","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        resp, role \u003d self.v3_client.create_role(rand_name(\u0027Role-\u0027))"},{"line_number":36,"context_line":"        self.assertEqual(resp[\u0027status\u0027], \u0027201\u0027)"},{"line_number":37,"context_line":"        self.assertIn(\u0027name\u0027, role)"},{"line_number":38,"context_line":"        self.addCleanup(self.v3_client.delete_role, role[\u0027id\u0027])"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        r_name \u003d rand_name(\u0027NewRole-\u0027)"},{"line_number":41,"context_line":"        resp, updated_role \u003d self.v3_client.update_role(r_name, role[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAQn%2F%2F4x8%3D","line":38,"updated":"2013-07-19 19:35:19.000000000","message":"can we put the Cleanup before the asserts? so that if the assert breaks, we don\u0027t leak a role.","commit_id":"db788df8db4aea7b04c3703e218694e4238a60d8"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"32af911be531580442891cf8b1ae530d39725bb1","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        resp, role \u003d self.v3_client.create_role(rand_name(\u0027Role-\u0027))"},{"line_number":36,"context_line":"        self.assertEqual(resp[\u0027status\u0027], \u0027201\u0027)"},{"line_number":37,"context_line":"        self.assertIn(\u0027name\u0027, role)"},{"line_number":38,"context_line":"        self.addCleanup(self.v3_client.delete_role, role[\u0027id\u0027])"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        r_name \u003d rand_name(\u0027NewRole-\u0027)"},{"line_number":41,"context_line":"        resp, updated_role \u003d self.v3_client.update_role(r_name, role[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAQn%2F%2F1eo%3D","line":38,"in_reply_to":"AAAAQn%2F%2F4x8%3D","updated":"2013-07-22 13:23:35.000000000","message":"Done","commit_id":"db788df8db4aea7b04c3703e218694e4238a60d8"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"a21f61a8108106556af0af3ea7f13c4d1fc222b5","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        for i in body:"},{"line_number":82,"context_line":"            fetched_role_ids.append(i[\u0027id\u0027])"},{"line_number":83,"context_line":"        missing_roles \u003d\\"},{"line_number":84,"context_line":"            [r for r in created_role_ids"},{"line_number":85,"context_line":"             if r not in fetched_role_ids]"},{"line_number":86,"context_line":"        self.assertEqual(0, len(missing_roles),"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAQn%2F%2F4wo%3D","line":83,"updated":"2013-07-19 19:35:19.000000000","message":"do we really need the \\, seems like it would fit on the line.","commit_id":"db788df8db4aea7b04c3703e218694e4238a60d8"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"32af911be531580442891cf8b1ae530d39725bb1","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        for i in body:"},{"line_number":82,"context_line":"            fetched_role_ids.append(i[\u0027id\u0027])"},{"line_number":83,"context_line":"        missing_roles \u003d\\"},{"line_number":84,"context_line":"            [r for r in created_role_ids"},{"line_number":85,"context_line":"             if r not in fetched_role_ids]"},{"line_number":86,"context_line":"        self.assertEqual(0, len(missing_roles),"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAQn%2F%2F1ek%3D","line":83,"in_reply_to":"AAAAQn%2F%2F4wo%3D","updated":"2013-07-22 13:23:35.000000000","message":"I have removed loop of creating two roles and changed the assertion logic","commit_id":"db788df8db4aea7b04c3703e218694e4238a60d8"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"a21f61a8108106556af0af3ea7f13c4d1fc222b5","unresolved":false,"context_lines":[{"line_number":176,"context_line":"            self.assertEqual(resp[\u0027status\u0027], \u0027204\u0027)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":179,"context_line":"    def test_grant_list_revoke_role_to_group_on_domain(self):"},{"line_number":180,"context_line":"        created_role_ids \u003d list()"},{"line_number":181,"context_line":"        fetched_role_ids \u003d list()"},{"line_number":182,"context_line":"        _, domain \u003d self.v3_client.create_domain("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAQn%2F%2F4wY%3D","line":179,"updated":"2013-07-19 19:35:19.000000000","message":"all these test methods seem to duplicate a lot of logic, is there a way we can build some utility methods to tighten them up? I hate to think about coming back and cleaning these up later if we found a bug in one.","commit_id":"db788df8db4aea7b04c3703e218694e4238a60d8"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"32af911be531580442891cf8b1ae530d39725bb1","unresolved":false,"context_lines":[{"line_number":176,"context_line":"            self.assertEqual(resp[\u0027status\u0027], \u0027204\u0027)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":179,"context_line":"    def test_grant_list_revoke_role_to_group_on_domain(self):"},{"line_number":180,"context_line":"        created_role_ids \u003d list()"},{"line_number":181,"context_line":"        fetched_role_ids \u003d list()"},{"line_number":182,"context_line":"        _, domain \u003d self.v3_client.create_domain("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAQn%2F%2F1eg%3D","line":179,"in_reply_to":"AAAAQn%2F%2F4wY%3D","updated":"2013-07-22 13:23:35.000000000","message":"Done","commit_id":"db788df8db4aea7b04c3703e218694e4238a60d8"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"bd84da140892d121b3291fad63f8ac26ff73b360","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        cls.v3_client.delete_role(cls.role[\u0027id\u0027])"},{"line_number":49,"context_line":"        cls.v3_client.delete_group(cls.group_body[\u0027id\u0027])"},{"line_number":50,"context_line":"        cls.v3_client.delete_user(cls.user_body[\u0027id\u0027])"},{"line_number":51,"context_line":"        cls.v3_client.delete_project(cls.project[\u0027id\u0027])"},{"line_number":52,"context_line":"        # It is necessary to disable the domian before deleting,"},{"line_number":53,"context_line":"        # or else it would result in unauthorized error"},{"line_number":54,"context_line":"        cls.v3_client.update_domain(cls.domain[\u0027id\u0027], enabled\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2Fnr8%3D","line":51,"updated":"2013-07-26 11:35:22.000000000","message":"can these fail? if so we probably need a try loop on them","commit_id":"782aa2f9716b87077a022d91032a010afebb9122"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"365d18527e602eb02bd9dd46b024e61553b76280","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        cls.v3_client.delete_role(cls.role[\u0027id\u0027])"},{"line_number":49,"context_line":"        cls.v3_client.delete_group(cls.group_body[\u0027id\u0027])"},{"line_number":50,"context_line":"        cls.v3_client.delete_user(cls.user_body[\u0027id\u0027])"},{"line_number":51,"context_line":"        cls.v3_client.delete_project(cls.project[\u0027id\u0027])"},{"line_number":52,"context_line":"        # It is necessary to disable the domian before deleting,"},{"line_number":53,"context_line":"        # or else it would result in unauthorized error"},{"line_number":54,"context_line":"        cls.v3_client.update_domain(cls.domain[\u0027id\u0027], enabled\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2Fj5w%3D","line":51,"in_reply_to":"AAAAQn%2F%2Fnr8%3D","updated":"2013-07-29 07:02:03.000000000","message":"Though there is a failure, they will throw an exception if response status code is \u003e\u003d 400.","commit_id":"782aa2f9716b87077a022d91032a010afebb9122"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"4334abd4c7a80015143b4af9873553d0cbf3d5a5","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        resp[1], _ \u003d cls.v3_client.delete_group(cls.group_body[\u0027id\u0027])"},{"line_number":54,"context_line":"        resp[2], _ \u003d cls.v3_client.delete_user(cls.user_body[\u0027id\u0027])"},{"line_number":55,"context_line":"        resp[3], _ \u003d cls.v3_client.delete_project(cls.project[\u0027id\u0027])"},{"line_number":56,"context_line":"        # It is necessary to disable the domian before deleting,"},{"line_number":57,"context_line":"        # or else it would result in unauthorized error"},{"line_number":58,"context_line":"        cls.v3_client.update_domain(cls.domain[\u0027id\u0027], enabled\u003dFalse)"},{"line_number":59,"context_line":"        resp[4], _ \u003d cls.v3_client.delete_domain(cls.domain[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAQn%2F%2FOic%3D","line":56,"updated":"2013-08-05 10:54:26.000000000","message":"Please use NOTE(\u003cyourID\u003e): syntax for comments","commit_id":"06ec5d32d79546e07dbfbdb7edd7561ad7a003ff"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"fa7c73b3d2882138fd9df68b8b85d2418cce0d45","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        resp[1], _ \u003d cls.v3_client.delete_group(cls.group_body[\u0027id\u0027])"},{"line_number":54,"context_line":"        resp[2], _ \u003d cls.v3_client.delete_user(cls.user_body[\u0027id\u0027])"},{"line_number":55,"context_line":"        resp[3], _ \u003d cls.v3_client.delete_project(cls.project[\u0027id\u0027])"},{"line_number":56,"context_line":"        # It is necessary to disable the domian before deleting,"},{"line_number":57,"context_line":"        # or else it would result in unauthorized error"},{"line_number":58,"context_line":"        cls.v3_client.update_domain(cls.domain[\u0027id\u0027], enabled\u003dFalse)"},{"line_number":59,"context_line":"        resp[4], _ \u003d cls.v3_client.delete_domain(cls.domain[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAQn%2F%2FNP0%3D","line":56,"in_reply_to":"AAAAQn%2F%2FOic%3D","updated":"2013-08-05 13:57:57.000000000","message":"Done","commit_id":"06ec5d32d79546e07dbfbdb7edd7561ad7a003ff"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"4334abd4c7a80015143b4af9873553d0cbf3d5a5","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        self.assertEqual(resp[\u0027status\u0027], \u0027200\u0027)"},{"line_number":66,"context_line":"        self.assertEqual(len(body), 1)"},{"line_number":67,"context_line":"        found \u003d any(r for r in body if r[\u0027id\u0027] \u003d\u003d role_id)"},{"line_number":68,"context_line":"        self.assertTrue(found)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":71,"context_line":"    def test_role_create_update_get(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAQn%2F%2FN8A%3D","line":68,"updated":"2013-08-05 10:54:26.000000000","message":"Please avoid using assertTrue (see http://docs.openstack.org/developer/tempest/HACKING.html)","commit_id":"06ec5d32d79546e07dbfbdb7edd7561ad7a003ff"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"fa7c73b3d2882138fd9df68b8b85d2418cce0d45","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        self.assertEqual(resp[\u0027status\u0027], \u0027200\u0027)"},{"line_number":66,"context_line":"        self.assertEqual(len(body), 1)"},{"line_number":67,"context_line":"        found \u003d any(r for r in body if r[\u0027id\u0027] \u003d\u003d role_id)"},{"line_number":68,"context_line":"        self.assertTrue(found)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":71,"context_line":"    def test_role_create_update_get(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAQn%2F%2FNPw%3D","line":68,"in_reply_to":"AAAAQn%2F%2FN8A%3D","updated":"2013-08-05 13:57:57.000000000","message":"Done","commit_id":"06ec5d32d79546e07dbfbdb7edd7561ad7a003ff"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"24a520be668bfe35a87866422bf45bcf37595cbc","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        resp[1], _ \u003d cls.v3_client.delete_group(cls.group_body[\u0027id\u0027])"},{"line_number":55,"context_line":"        resp[2], _ \u003d cls.v3_client.delete_user(cls.user_body[\u0027id\u0027])"},{"line_number":56,"context_line":"        resp[3], _ \u003d cls.v3_client.delete_project(cls.project[\u0027id\u0027])"},{"line_number":57,"context_line":"        #NOTE(harika-vakadi): It is necessary to disable the domian"},{"line_number":58,"context_line":"        # before deleting,or else it would result in unauthorized error"},{"line_number":59,"context_line":"        cls.v3_client.update_domain(cls.domain[\u0027id\u0027], enabled\u003dFalse)"},{"line_number":60,"context_line":"        resp[4], _ \u003d cls.v3_client.delete_domain(cls.domain[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAQn%2F%2B6Kg%3D","line":57,"updated":"2013-08-10 05:14:32.000000000","message":"\"# NOTE\"\n\nThe pep8 recommends a space after #.","commit_id":"755d814d532e4dc38045c714aca209d851bf9960"}]}
