)]}'
{"tempest/api/compute/servers/test_availability_zone.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"57a25eb4b242f772b6933709f3fce6f31049503a","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    @decorators.idempotent_id(\u0027c7d95807-74b3-43f6-ac50-ffc82584fb74\u0027)"},{"line_number":36,"context_line":"    def test_get_availability_zone_list_details_with_non_admin_user(self):"},{"line_number":37,"context_line":"        # List of availability zone details with non-administrator user, 403 is OK"},{"line_number":38,"context_line":"        with testtools.ExpectedException(exceptions.Forbidden):"},{"line_number":39,"context_line":"            availability_zone \u003d self.client.list_availability_zones(detail\u003dTrue)"},{"line_number":40,"context_line":"            self.assertNotEmpty(availability_zone[\u0027availabilityZoneInfo\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_19dfa00b","line":38,"range":{"start_line":38,"start_character":52,"end_line":38,"end_character":61},"updated":"2018-10-12 14:39:24.000000000","message":"If a Forbidden is raised then the response body with `availabilityZoneInfo` isn\u0027t populated.\n\nAlso, see this:\n\n\"Error handling is an important aspect of API design and usage. Negative\ntests are a way to ensure that an application can gracefully handle\ninvalid or unexpected input. However, as a black box integration test\nsuite, Tempest is not suitable for handling all negative test cases, as\nthe wide variety and complexity of negative tests can lead to long test\nruns and knowledge of internal implementation details. The bulk of\nnegative testing should be handled with project function tests.\"\n\nhttps://docs.openstack.org/tempest/latest/HACKING.html#negative-tests\n\nSo I think this test shouldn\u0027t be added to Tempest and is handled in Patrole besides.","commit_id":"a71aba0a1912d6bccf8db6c49999e4f498108b2b"},{"author":{"_account_id":27078,"name":"Manik Bindlish","email":"manikbindlish19@gmail.com","username":"manik"},"change_message_id":"9199b7f8b4e284c51d0130f03b9a43e8ebb4678e","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from tempest.api.compute import base"},{"line_number":17,"context_line":"from tempest.lib import decorators"},{"line_number":18,"context_line":"from tempest.lib import exceptions"},{"line_number":19,"context_line":"import testtools"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class AZV2TestJSON(base.BaseV2ComputeTest):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_68b54bf0","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":16},"updated":"2018-10-17 09:00:13.000000000","message":"I think test tools should be above from local tempest repo. \nSo it should be before L[15]","commit_id":"e998258b479d16924401f7415c6e5c13c9535132"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"8c3eb815630fb615e8e9d6dd05aa4397c5ff0793","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        availability_zone \u003d self.client.list_availability_zones()"},{"line_number":34,"context_line":"        self.assertNotEmpty(availability_zone[\u0027availabilityZoneInfo\u0027])"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @decorators.idempotent_id(\u0027c7d95807-74b3-43f6-ac50-ffc82584fb74\u0027)"},{"line_number":37,"context_line":"    def test_get_availability_zone_list_details_with_non_admin_user(self):"},{"line_number":38,"context_line":"        \"\"\"List of availability zone details."},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_cd532dde","line":36,"updated":"2018-10-18 14:11:01.000000000","message":"This is a negative test so we should:\n\n1) add it to test_availability_zone_negative.py instead (if that file doesn\u0027t exist, please create)\n2) decorate it with @decorators.attr(type\u003d\u0027slow\u0027)","commit_id":"e998258b479d16924401f7415c6e5c13c9535132"},{"author":{"_account_id":27078,"name":"Manik Bindlish","email":"manikbindlish19@gmail.com","username":"manik"},"change_message_id":"9199b7f8b4e284c51d0130f03b9a43e8ebb4678e","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        self.assertNotEmpty(availability_zone[\u0027availabilityZoneInfo\u0027])"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @decorators.idempotent_id(\u0027c7d95807-74b3-43f6-ac50-ffc82584fb74\u0027)"},{"line_number":37,"context_line":"    def test_get_availability_zone_list_details_with_non_admin_user(self):"},{"line_number":38,"context_line":"        \"\"\"List of availability zone details."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        with non-administrator user, 403 is OK"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_a897e346","line":37,"range":{"start_line":37,"start_character":8,"end_line":37,"end_character":67},"updated":"2018-10-17 09:00:13.000000000","message":"Can\u0027t we optimize the name\ne.g. test_list_availability_zone_with_non_admin_user\nor any better short name?","commit_id":"e998258b479d16924401f7415c6e5c13c9535132"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"8c3eb815630fb615e8e9d6dd05aa4397c5ff0793","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    def test_get_availability_zone_list_details_with_non_admin_user(self):"},{"line_number":38,"context_line":"        \"\"\"List of availability zone details."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        with non-administrator user, 403 is OK"},{"line_number":41,"context_line":"        \"\"\""},{"line_number":42,"context_line":"        with testtools.ExpectedException(exceptions.Forbidden):"},{"line_number":43,"context_line":"            availability_zone \u003d self.client.list_availability_zones("}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_ed3f0984","line":40,"range":{"start_line":40,"start_character":8,"end_line":40,"end_character":46},"updated":"2018-10-18 14:11:01.000000000","message":"Validate that a non-admin user is not authorized to perform this action.","commit_id":"e998258b479d16924401f7415c6e5c13c9535132"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"5398e4ab7a074c80ab711945b542d8440a3dc3c2","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        with non-administrator user, 403 is OK"},{"line_number":41,"context_line":"        \"\"\""},{"line_number":42,"context_line":"        with testtools.ExpectedException(exceptions.Forbidden):"},{"line_number":43,"context_line":"            availability_zone \u003d self.client.list_availability_zones("},{"line_number":44,"context_line":"                detail\u003dTrue)"},{"line_number":45,"context_line":"            self.assertNotEmpty(availability_zone[\u0027availabilityZoneInfo\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_f215ab3f","line":43,"range":{"start_line":43,"start_character":44,"end_line":43,"end_character":67},"updated":"2018-10-18 08:03:35.000000000","message":"If this raises 403, the next line can\u0027t be executed;\nIf this doesn\u0027t raise 403, the testcase will fail with \"AssertionError: Forbidden not raised.\".","commit_id":"e998258b479d16924401f7415c6e5c13c9535132"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"9dff8148b3363100f45f66e4db4b944dd7293af0","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        with non-administrator user, 403 is OK"},{"line_number":41,"context_line":"        \"\"\""},{"line_number":42,"context_line":"        with testtools.ExpectedException(exceptions.Forbidden):"},{"line_number":43,"context_line":"            availability_zone \u003d self.client.list_availability_zones("},{"line_number":44,"context_line":"                detail\u003dTrue)"},{"line_number":45,"context_line":"            self.assertNotEmpty(availability_zone[\u0027availabilityZoneInfo\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_049fb0b3","line":43,"range":{"start_line":43,"start_character":44,"end_line":43,"end_character":67},"in_reply_to":"3f79a3b5_2d3661b5","updated":"2018-10-19 02:36:07.000000000","message":"The api ref says, \"Gets detailed availability zone information. Policy defaults enable only users with the administrative role to perform\nthis operation. Cloud providers can change these permissions through the policy.json file.\", so I\u0027m not sure whether Forbidden is sure to\nbe raised?","commit_id":"e998258b479d16924401f7415c6e5c13c9535132"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"8c3eb815630fb615e8e9d6dd05aa4397c5ff0793","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        with non-administrator user, 403 is OK"},{"line_number":41,"context_line":"        \"\"\""},{"line_number":42,"context_line":"        with testtools.ExpectedException(exceptions.Forbidden):"},{"line_number":43,"context_line":"            availability_zone \u003d self.client.list_availability_zones("},{"line_number":44,"context_line":"                detail\u003dTrue)"},{"line_number":45,"context_line":"            self.assertNotEmpty(availability_zone[\u0027availabilityZoneInfo\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_2d3661b5","line":43,"range":{"start_line":43,"start_character":44,"end_line":43,"end_character":67},"in_reply_to":"3f79a3b5_f215ab3f","updated":"2018-10-18 14:11:01.000000000","message":"It raises a 403 so L45 should be removed.","commit_id":"e998258b479d16924401f7415c6e5c13c9535132"}]}
