)]}'
{"tempest/api/identity/admin/v3/test_identity_providers.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e25eee40c5749da4812f62d871e3bfcd005a8e85","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from tempest import test"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class IndentityProvidersTestJSON(base.BaseIdentityV3AdminTest):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def _check_idp(self, idp):"},{"line_number":23,"context_line":"        self.assertIn(\u0027id\u0027, idp)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_1f440c48","line":20,"range":{"start_line":20,"start_character":28,"end_line":20,"end_character":32},"updated":"2016-03-17 18:25:06.000000000","message":"New test classes don\u0027t need to include JSON because all tests are JSON now.","commit_id":"9e82dd2bd0047901e098e74d06bd651bd8587a22"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"af6f6fc31ae697037f3462b97297235b156179de","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from tempest import test"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class IndentityProvidersTestJSON(base.BaseIdentityV3AdminTest):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def _check_idp(self, idp):"},{"line_number":23,"context_line":"        self.assertIn(\u0027id\u0027, idp)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_7bdc0d46","line":20,"range":{"start_line":20,"start_character":28,"end_line":20,"end_character":32},"in_reply_to":"1af94dfe_1f440c48","updated":"2016-03-18 17:00:20.000000000","message":"Done","commit_id":"9e82dd2bd0047901e098e74d06bd651bd8587a22"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"63f39eeee94f4791ddb086114c971531992642f3","unresolved":false,"context_lines":[{"line_number":95,"context_line":"            \u0027identity_providers\u0027]"},{"line_number":96,"context_line":"        fetched_ids \u003d [fetched_idp[\u0027id\u0027] for fetched_idp in idp_list]"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        for idp_id in idp_ids:"},{"line_number":99,"context_line":"            self.assertIn(idp_id, fetched_ids)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    @test.idempotent_id(\u002736a0d9f0-9517-4139-85d0-f78d905aece5\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_926c2c9e","line":98,"updated":"2016-03-28 17:12:33.000000000","message":"Could you use self.assertEqual(idp_ids, fetched_ids) ? This way you test equality and not only inclusion.","commit_id":"b16ee55a7385318e270ab49c5c42a5835645d09b"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"23e92052e3a248df4919e0c1b995fc1431f3480c","unresolved":false,"context_lines":[{"line_number":95,"context_line":"            \u0027identity_providers\u0027]"},{"line_number":96,"context_line":"        fetched_ids \u003d [fetched_idp[\u0027id\u0027] for fetched_idp in idp_list]"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        for idp_id in idp_ids:"},{"line_number":99,"context_line":"            self.assertIn(idp_id, fetched_ids)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    @test.idempotent_id(\u002736a0d9f0-9517-4139-85d0-f78d905aece5\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_ad03d50c","line":98,"in_reply_to":"ba0121b8_926c2c9e","updated":"2016-03-28 17:24:14.000000000","message":"what if I run this test in a different environment? (not necessarily a fresh devstack setup)","commit_id":"b16ee55a7385318e270ab49c5c42a5835645d09b"}],"tempest/api/identity/admin/v3/test_identity_providers_negative.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e25eee40c5749da4812f62d871e3bfcd005a8e85","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 Red Hat, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":5,"context_line":"# a copy of the License at"},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#      http://www.apache.org/licenses/LICENSE-2.0"},{"line_number":8,"context_line":"#"},{"line_number":9,"context_line":"# Unless required by applicable law or agreed to in writing, software"},{"line_number":10,"context_line":"# distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":11,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from tempest.api.identity import base"},{"line_number":16,"context_line":"from tempest.common.utils import data_utils"},{"line_number":17,"context_line":"from tempest.lib import decorators"},{"line_number":18,"context_line":"from tempest.lib import exceptions as lib_exc"},{"line_number":19,"context_line":"from tempest import test"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class IndentityProvidersNegativeTestJSON(base.BaseIdentityV3AdminTest):"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    @test.attr(type\u003d[\u0027negative\u0027])"},{"line_number":25,"context_line":"    @test.idempotent_id(\u0027fb16231b-7bc6-4303-a51f-0fae2d759b07\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_ff716077","line":22,"range":{"start_line":1,"start_character":0,"end_line":22,"end_character":71},"updated":"2016-03-17 18:25:06.000000000","message":"Could you remove this negative test file from this patch?\nAs the conclusion of the meeting, we will not accept negative tests more into Tempest.\n\nIt is nice to merge positive side with this patch.","commit_id":"9e82dd2bd0047901e098e74d06bd651bd8587a22"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"af6f6fc31ae697037f3462b97297235b156179de","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 Red Hat, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":5,"context_line":"# a copy of the License at"},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#      http://www.apache.org/licenses/LICENSE-2.0"},{"line_number":8,"context_line":"#"},{"line_number":9,"context_line":"# Unless required by applicable law or agreed to in writing, software"},{"line_number":10,"context_line":"# distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":11,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from tempest.api.identity import base"},{"line_number":16,"context_line":"from tempest.common.utils import data_utils"},{"line_number":17,"context_line":"from tempest.lib import decorators"},{"line_number":18,"context_line":"from tempest.lib import exceptions as lib_exc"},{"line_number":19,"context_line":"from tempest import test"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class IndentityProvidersNegativeTestJSON(base.BaseIdentityV3AdminTest):"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    @test.attr(type\u003d[\u0027negative\u0027])"},{"line_number":25,"context_line":"    @test.idempotent_id(\u0027fb16231b-7bc6-4303-a51f-0fae2d759b07\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_9be5990a","line":22,"range":{"start_line":1,"start_character":0,"end_line":22,"end_character":71},"in_reply_to":"1af94dfe_ff716077","updated":"2016-03-18 17:00:20.000000000","message":"Done","commit_id":"9e82dd2bd0047901e098e74d06bd651bd8587a22"}],"tempest/services/identity/v3/json/identity_providers_client.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e25eee40c5749da4812f62d871e3bfcd005a8e85","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    api_version \u003d \u0027v3\u0027"},{"line_number":22,"context_line":"    url_prefix \u003d \u0027OS-FEDERATION\u0027"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def create_idp(self, idp_id, **kwargs):"},{"line_number":25,"context_line":"        \"\"\"Creates an identity provider.\"\"\""},{"line_number":26,"context_line":"        put_body \u003d {}"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_5f75f42f","line":24,"range":{"start_line":24,"start_character":15,"end_line":24,"end_character":18},"updated":"2016-03-17 18:25:06.000000000","message":"create_identity_provider is nice for the consistency of client methods.","commit_id":"9e82dd2bd0047901e098e74d06bd651bd8587a22"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"af6f6fc31ae697037f3462b97297235b156179de","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    api_version \u003d \u0027v3\u0027"},{"line_number":22,"context_line":"    url_prefix \u003d \u0027OS-FEDERATION\u0027"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def create_idp(self, idp_id, **kwargs):"},{"line_number":25,"context_line":"        \"\"\"Creates an identity provider.\"\"\""},{"line_number":26,"context_line":"        put_body \u003d {}"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_7baa4d86","line":24,"range":{"start_line":24,"start_character":15,"end_line":24,"end_character":18},"in_reply_to":"1af94dfe_5f75f42f","updated":"2016-03-18 17:00:20.000000000","message":"Done","commit_id":"9e82dd2bd0047901e098e74d06bd651bd8587a22"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e25eee40c5749da4812f62d871e3bfcd005a8e85","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def create_idp(self, idp_id, **kwargs):"},{"line_number":25,"context_line":"        \"\"\"Creates an identity provider.\"\"\""},{"line_number":26,"context_line":"        put_body \u003d {}"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"        if \u0027enabled\u0027 in kwargs:"},{"line_number":29,"context_line":"            put_body[\u0027enabled\u0027] \u003d kwargs[\u0027enabled\u0027]"},{"line_number":30,"context_line":"        if \u0027description\u0027 in kwargs:"},{"line_number":31,"context_line":"            put_body[\u0027description\u0027] \u003d kwargs[\u0027description\u0027]"},{"line_number":32,"context_line":"        if \u0027remote_ids\u0027 in kwargs:"},{"line_number":33,"context_line":"            put_body[\u0027remote_ids\u0027] \u003d kwargs[\u0027remote_ids\u0027]"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        put_body \u003d json.dumps({\u0027identity_provider\u0027: put_body})"},{"line_number":36,"context_line":"        resp, body \u003d self.put(\u0027%s/%s/%s\u0027 % ("}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_5fc7b463","line":33,"range":{"start_line":26,"start_character":0,"end_line":33,"end_character":57},"updated":"2016-03-17 18:25:06.000000000","message":"Can we pass kwargs directly without parsing like\n\n put_body \u003d json.dumps({\u0027identity_provider\u0027: kwargs})\n\n?\n\nIf doing that, the callers of this method can pass any values.\nThat will be flexible for the tests.","commit_id":"9e82dd2bd0047901e098e74d06bd651bd8587a22"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"af6f6fc31ae697037f3462b97297235b156179de","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def create_idp(self, idp_id, **kwargs):"},{"line_number":25,"context_line":"        \"\"\"Creates an identity provider.\"\"\""},{"line_number":26,"context_line":"        put_body \u003d {}"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"        if \u0027enabled\u0027 in kwargs:"},{"line_number":29,"context_line":"            put_body[\u0027enabled\u0027] \u003d kwargs[\u0027enabled\u0027]"},{"line_number":30,"context_line":"        if \u0027description\u0027 in kwargs:"},{"line_number":31,"context_line":"            put_body[\u0027description\u0027] \u003d kwargs[\u0027description\u0027]"},{"line_number":32,"context_line":"        if \u0027remote_ids\u0027 in kwargs:"},{"line_number":33,"context_line":"            put_body[\u0027remote_ids\u0027] \u003d kwargs[\u0027remote_ids\u0027]"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        put_body \u003d json.dumps({\u0027identity_provider\u0027: put_body})"},{"line_number":36,"context_line":"        resp, body \u003d self.put(\u0027%s/%s/%s\u0027 % ("}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_7bb36d0a","line":33,"range":{"start_line":26,"start_character":0,"end_line":33,"end_character":57},"in_reply_to":"1af94dfe_5fc7b463","updated":"2016-03-18 17:00:20.000000000","message":"++","commit_id":"9e82dd2bd0047901e098e74d06bd651bd8587a22"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e25eee40c5749da4812f62d871e3bfcd005a8e85","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        body \u003d json.loads(body)"},{"line_number":41,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def list_idps(self):"},{"line_number":44,"context_line":"        \"\"\"Lists the identity providers.\"\"\""},{"line_number":45,"context_line":"        resp, body \u003d self.get("},{"line_number":46,"context_line":"            \u0027%s/%s\u0027 % (self.url_prefix, \u0027identity_providers\u0027))"}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_df974438","line":43,"range":{"start_line":43,"start_character":13,"end_line":43,"end_character":17},"updated":"2016-03-17 18:25:06.000000000","message":"ditto: list_identity_providers","commit_id":"9e82dd2bd0047901e098e74d06bd651bd8587a22"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e25eee40c5749da4812f62d871e3bfcd005a8e85","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        body \u003d json.loads(body)"},{"line_number":49,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def show_idp(self, idp_id):"},{"line_number":52,"context_line":"        \"\"\"Gets an identity provider.\"\"\""},{"line_number":53,"context_line":"        resp, body \u003d self.get(\u0027%s/%s/%s\u0027 % ("},{"line_number":54,"context_line":"            self.url_prefix, \u0027identity_providers\u0027, idp_id))"}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_5facd48b","line":51,"range":{"start_line":51,"start_character":13,"end_line":51,"end_character":17},"updated":"2016-03-17 18:25:06.000000000","message":"ditto","commit_id":"9e82dd2bd0047901e098e74d06bd651bd8587a22"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e25eee40c5749da4812f62d871e3bfcd005a8e85","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        body \u003d json.loads(body)"},{"line_number":57,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def delete_idp(self, idp_id):"},{"line_number":60,"context_line":"        \"\"\"Deletes an identity provider.\"\"\""},{"line_number":61,"context_line":"        resp, body \u003d self.delete(\u0027%s/%s/%s\u0027 % ("},{"line_number":62,"context_line":"            self.url_prefix, \u0027identity_providers\u0027, idp_id))"}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_3fa9087c","line":59,"range":{"start_line":59,"start_character":15,"end_line":59,"end_character":18},"updated":"2016-03-17 18:25:06.000000000","message":"ditto","commit_id":"9e82dd2bd0047901e098e74d06bd651bd8587a22"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e25eee40c5749da4812f62d871e3bfcd005a8e85","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        self.expected_success(204, resp.status)"},{"line_number":64,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def update_idp(self, idp_id, **kwargs):"},{"line_number":67,"context_line":"        \"\"\"Updates an identity provider.\"\"\""},{"line_number":68,"context_line":"        body \u003d self.show_idp(idp_id)[\u0027identity_provider\u0027]"},{"line_number":69,"context_line":"        description \u003d kwargs.get(\u0027description\u0027, body[\u0027description\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_7fbd50b6","line":66,"range":{"start_line":66,"start_character":15,"end_line":66,"end_character":18},"updated":"2016-03-17 18:25:06.000000000","message":"ditto","commit_id":"9e82dd2bd0047901e098e74d06bd651bd8587a22"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e25eee40c5749da4812f62d871e3bfcd005a8e85","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def update_idp(self, idp_id, **kwargs):"},{"line_number":67,"context_line":"        \"\"\"Updates an identity provider.\"\"\""},{"line_number":68,"context_line":"        body \u003d self.show_idp(idp_id)[\u0027identity_provider\u0027]"},{"line_number":69,"context_line":"        description \u003d kwargs.get(\u0027description\u0027, body[\u0027description\u0027])"},{"line_number":70,"context_line":"        enabled \u003d kwargs.get(\u0027enabled\u0027, body[\u0027enabled\u0027])"},{"line_number":71,"context_line":"        remote_ids \u003d kwargs.get(\u0027remote_ids\u0027, body[\u0027remote_ids\u0027])"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        patch_body \u003d {"},{"line_number":74,"context_line":"            \u0027description\u0027: description,"},{"line_number":75,"context_line":"            \u0027enabled\u0027: enabled,"},{"line_number":76,"context_line":"            \u0027remote_ids\u0027: remote_ids"},{"line_number":77,"context_line":"        }"},{"line_number":78,"context_line":"        patch_body \u003d json.dumps({\u0027identity_provider\u0027: patch_body})"},{"line_number":79,"context_line":"        resp, body \u003d self.patch(\u0027%s/%s/%s\u0027 % ("},{"line_number":80,"context_line":"            self.url_prefix, \u0027identity_providers\u0027, idp_id),"}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_1ffb6c7a","line":77,"range":{"start_line":68,"start_character":0,"end_line":77,"end_character":9},"updated":"2016-03-17 18:25:06.000000000","message":"ditto: can we pass kwargs directly.\n\nIn addition, it is nice to avoid more REST API calls in client method for simple debugging.","commit_id":"9e82dd2bd0047901e098e74d06bd651bd8587a22"}]}
