)]}'
{"keystone/tests/unit/test_auth.py":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"c2a566e5f98a02c8f3d8decff13995142d4d8687","unresolved":false,"context_lines":[{"line_number":1576,"context_line":""},{"line_number":1577,"context_line":"        self.assertEqual(exp_endpoint, endpoint)"},{"line_number":1578,"context_line":""},{"line_number":1579,"context_line":"    def test_assert_equal_1(self):"},{"line_number":1580,"context_line":"        self.assertEqual(1, 2)"},{"line_number":1581,"context_line":""},{"line_number":1582,"context_line":""},{"line_number":1583,"context_line":"class NonDefaultAuthTest(unit.TestCase):"}],"source_content_type":"text/x-python","patch_set":29,"id":"1a6eadb0_85dbd71a","line":1580,"range":{"start_line":1579,"start_character":0,"end_line":1580,"end_character":30},"updated":"2016-12-20 12:22:30.000000000","message":"this looks like a crazy rebase error, will rebase again once the previous patch merges!","commit_id":"ec08fc41e651a9d22ff6e265ea3e3da2522b9c2c"}],"keystone_tempest_plugin/plugin.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"81545c1103a7815d88c61186eac9a0b0b5d5ee40","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        config.register_opt_group(conf, project_config.identity_group,"},{"line_number":35,"context_line":"                                  project_config.IdentityGroup)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def get_opt_lists(self):"},{"line_number":38,"context_line":"        return [(project_config.identity_group.name,"},{"line_number":39,"context_line":"                 project_config.IdentityGroup)]"}],"source_content_type":"text/x-python","patch_set":28,"id":"1a6eadb0_6955e31b","side":"PARENT","line":37,"updated":"2016-12-19 17:25:04.000000000","message":"I assume these need to be returned in a specific order? Since the list is growing, it might be worthwhile to document the order.","commit_id":"8193396dd092b7722951a6ccdf647d79815a75a2"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"468a7c7ec6a38a92634998672ca085b5983a55de","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        config.register_opt_group(conf, project_config.identity_group,"},{"line_number":35,"context_line":"                                  project_config.IdentityGroup)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def get_opt_lists(self):"},{"line_number":38,"context_line":"        return [(project_config.identity_group.name,"},{"line_number":39,"context_line":"                 project_config.IdentityGroup)]"}],"source_content_type":"text/x-python","patch_set":28,"id":"1a6eadb0_cf940eea","side":"PARENT","line":37,"in_reply_to":"1a6eadb0_6955e31b","updated":"2016-12-20 12:18:24.000000000","message":"not necessarily, the order being used is the one they appear in config.py, just following it.","commit_id":"8193396dd092b7722951a6ccdf647d79815a75a2"}],"keystone_tempest_plugin/services/identity/v3/saml2_client.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f5d120a15fe432ffa8e6a951bb32ce3ac8dfc975","unresolved":false,"context_lines":[{"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":"import copy"},{"line_number":16,"context_line":"import requests"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from lxml import etree"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a77a97e_0c2d0bfe","line":15,"updated":"2016-11-17 02:23:09.000000000","message":"This is failing pep8","commit_id":"4f14fc23146450fe906fbcd01cafa0b65fc6947d"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"f1858dbb39f2781816ef4719cb96feb4ad1f856f","unresolved":false,"context_lines":[{"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":"import copy"},{"line_number":16,"context_line":"import requests"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from lxml import etree"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a77a97e_5b4a46ad","line":15,"in_reply_to":"7a77a97e_0c2d0bfe","updated":"2016-11-17 12:43:03.000000000","message":"Done","commit_id":"4f14fc23146450fe906fbcd01cafa0b65fc6947d"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f5d120a15fe432ffa8e6a951bb32ce3ac8dfc975","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import copy"},{"line_number":16,"context_line":"import requests"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from lxml import etree"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7a77a97e_4c3f0387","line":16,"updated":"2016-11-17 02:23:09.000000000","message":"Move this down with lxml since it\u0027s a third party lib.","commit_id":"4f14fc23146450fe906fbcd01cafa0b65fc6947d"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"f1858dbb39f2781816ef4719cb96feb4ad1f856f","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import copy"},{"line_number":16,"context_line":"import requests"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from lxml import etree"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7a77a97e_1b544e51","line":16,"in_reply_to":"7a77a97e_4c3f0387","updated":"2016-11-17 12:43:03.000000000","message":"Done","commit_id":"4f14fc23146450fe906fbcd01cafa0b65fc6947d"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f5d120a15fe432ffa8e6a951bb32ce3ac8dfc975","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    def __init__(self):"},{"line_number":32,"context_line":"        self.reset_session()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def reset_session(self):"},{"line_number":35,"context_line":"        self.session \u003d requests.Session()"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _idp_auth_url(self, keystone_v3_endpoint, idp_id, protocol_id):"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a77a97e_6c12ff0a","line":34,"updated":"2016-11-17 02:23:09.000000000","message":"Does something use this besides the __init__?","commit_id":"4f14fc23146450fe906fbcd01cafa0b65fc6947d"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"f1858dbb39f2781816ef4719cb96feb4ad1f856f","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    def __init__(self):"},{"line_number":32,"context_line":"        self.reset_session()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def reset_session(self):"},{"line_number":35,"context_line":"        self.session \u003d requests.Session()"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _idp_auth_url(self, keystone_v3_endpoint, idp_id, protocol_id):"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a77a97e_5b1c06c1","line":34,"in_reply_to":"7a77a97e_6c12ff0a","updated":"2016-11-17 12:43:03.000000000","message":"it is used in the test, to reset the session during tests setUp, it doesn\u0027t need to be in __init__ actually.","commit_id":"4f14fc23146450fe906fbcd01cafa0b65fc6947d"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f5d120a15fe432ffa8e6a951bb32ce3ac8dfc975","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"7a77a97e_2c8007c0","line":82,"updated":"2016-11-17 02:23:09.000000000","message":"This is also failing pep8","commit_id":"4f14fc23146450fe906fbcd01cafa0b65fc6947d"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"f1858dbb39f2781816ef4719cb96feb4ad1f856f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"7a77a97e_fb56b25a","line":82,"in_reply_to":"7a77a97e_2c8007c0","updated":"2016-11-17 12:43:03.000000000","message":"Done","commit_id":"4f14fc23146450fe906fbcd01cafa0b65fc6947d"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"78a2b813c71ad7bf8087e3160d0f9b1831d77e89","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def _prepare_sp_saml2_authn_response(self, saml2_idp_authn_response,"},{"line_number":48,"context_line":"                                         relay_state):"},{"line_number":49,"context_line":"        saml2_idp_authn_response[0][0] \u003d relay_state"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def send_identity_provider_authn_request(self, saml2_authn_request,"},{"line_number":52,"context_line":"                                             idp_url, username, password):"}],"source_content_type":"text/x-python","patch_set":28,"id":"1a6eadb0_ef338a11","line":49,"range":{"start_line":49,"start_character":32,"end_line":49,"end_character":38},"updated":"2016-12-20 11:53:48.000000000","message":"please add a comment to this. it\u0027s not obvious how the data is structured","commit_id":"e65255eeb55337f342aab5aea3f9977786ac6119"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"468a7c7ec6a38a92634998672ca085b5983a55de","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def _prepare_sp_saml2_authn_response(self, saml2_idp_authn_response,"},{"line_number":48,"context_line":"                                         relay_state):"},{"line_number":49,"context_line":"        saml2_idp_authn_response[0][0] \u003d relay_state"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def send_identity_provider_authn_request(self, saml2_authn_request,"},{"line_number":52,"context_line":"                                             idp_url, username, password):"}],"source_content_type":"text/x-python","patch_set":28,"id":"1a6eadb0_0a5a7483","line":49,"range":{"start_line":49,"start_character":32,"end_line":49,"end_character":38},"in_reply_to":"1a6eadb0_ef338a11","updated":"2016-12-20 12:18:24.000000000","message":"Done","commit_id":"e65255eeb55337f342aab5aea3f9977786ac6119"}],"keystone_tempest_plugin/tests/scenario/test_federated_authentication.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f5d120a15fe432ffa8e6a951bb32ce3ac8dfc975","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from lxml import etree"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from tempest import config"},{"line_number":18,"context_line":"from tempest.lib.common.utils import data_utils"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7a77a97e_4cdb834f","line":16,"updated":"2016-11-17 02:23:09.000000000","message":"Remove this newline","commit_id":"4f14fc23146450fe906fbcd01cafa0b65fc6947d"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"f1858dbb39f2781816ef4719cb96feb4ad1f856f","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from lxml import etree"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from tempest import config"},{"line_number":18,"context_line":"from tempest.lib.common.utils import data_utils"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7a77a97e_7bf0e267","line":16,"in_reply_to":"7a77a97e_4cdb834f","updated":"2016-11-17 12:43:03.000000000","message":"Done","commit_id":"4f14fc23146450fe906fbcd01cafa0b65fc6947d"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f5d120a15fe432ffa8e6a951bb32ce3ac8dfc975","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def setUp(self):"},{"line_number":94,"context_line":"        super(TestSaml2EcpFederatedAuthentication, self).setUp()"},{"line_number":95,"context_line":"        self.keystone_v3_endpoint \u003d CONF.identity.uri_v3"},{"line_number":96,"context_line":"        self.idp_url \u003d CONF.fed_scenario.idp_ecp_url"},{"line_number":97,"context_line":"        self.username \u003d CONF.fed_scenario.idp_username"},{"line_number":98,"context_line":"        self.password \u003d CONF.fed_scenario.idp_password"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a77a97e_4cfc6372","line":95,"updated":"2016-11-17 02:23:09.000000000","message":"I can\u0027t quite see the pattern as to why some of the shortcut declarations are here vs. the other _setup* methods.","commit_id":"4f14fc23146450fe906fbcd01cafa0b65fc6947d"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"f1858dbb39f2781816ef4719cb96feb4ad1f856f","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def setUp(self):"},{"line_number":94,"context_line":"        super(TestSaml2EcpFederatedAuthentication, self).setUp()"},{"line_number":95,"context_line":"        self.keystone_v3_endpoint \u003d CONF.identity.uri_v3"},{"line_number":96,"context_line":"        self.idp_url \u003d CONF.fed_scenario.idp_ecp_url"},{"line_number":97,"context_line":"        self.username \u003d CONF.fed_scenario.idp_username"},{"line_number":98,"context_line":"        self.password \u003d CONF.fed_scenario.idp_password"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a77a97e_dba2d64a","line":95,"in_reply_to":"7a77a97e_4cfc6372","updated":"2016-11-17 12:43:03.000000000","message":"refactored, moved all settings that are used more than once to __init__","commit_id":"4f14fc23146450fe906fbcd01cafa0b65fc6947d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"81545c1103a7815d88c61186eac9a0b0b5d5ee40","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class TestSaml2EcpFederatedAuthentication(base.BaseIdentityTest):"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    HTTP_OK \u003d 200"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    HTTP_CREATED \u003d 201"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"1a6eadb0_ec24a1b0","line":29,"updated":"2016-12-19 17:25:04.000000000","message":"We can use http_client library here, can\u0027t we? If we are just using this as a mapping to make status codes more readable, http_client already does this for us and we use it in our testing [0]. \n\n[0] https://github.com/openstack/keystone/blob/e1e3f2f1ec049e4c96f58c87319b1f8e889bcf9c/keystone/tests/unit/test_v3_auth.py#L179","commit_id":"e65255eeb55337f342aab5aea3f9977786ac6119"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"78a2b813c71ad7bf8087e3160d0f9b1831d77e89","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class TestSaml2EcpFederatedAuthentication(base.BaseIdentityTest):"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    HTTP_OK \u003d 200"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    HTTP_CREATED \u003d 201"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"1a6eadb0_aa18a076","line":29,"in_reply_to":"1a6eadb0_ec24a1b0","updated":"2016-12-20 11:53:48.000000000","message":"++ nice catch Lance","commit_id":"e65255eeb55337f342aab5aea3f9977786ac6119"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"468a7c7ec6a38a92634998672ca085b5983a55de","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class TestSaml2EcpFederatedAuthentication(base.BaseIdentityTest):"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    HTTP_OK \u003d 200"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    HTTP_CREATED \u003d 201"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"1a6eadb0_ea28d887","line":29,"in_reply_to":"1a6eadb0_ec24a1b0","updated":"2016-12-20 12:18:24.000000000","message":"Done","commit_id":"e65255eeb55337f342aab5aea3f9977786ac6119"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"81545c1103a7815d88c61186eac9a0b0b5d5ee40","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    def _request_unscoped_token(self):"},{"line_number":122,"context_line":"        resp \u003d self.saml2_client.send_service_provider_request("},{"line_number":123,"context_line":"            self.keystone_v3_endpoint, self.idp_id, self.protocol_id)"},{"line_number":124,"context_line":"        self.assertEqual(self.HTTP_OK, resp.status_code)"},{"line_number":125,"context_line":"        saml2_authn_request \u003d etree.XML(resp.content)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        relay_state \u003d self._str_from_xml("}],"source_content_type":"text/x-python","patch_set":28,"id":"1a6eadb0_2c793930","line":124,"updated":"2016-12-19 17:25:04.000000000","message":"Same comment here, unless there is a specific reason we want to maintain the mapping.","commit_id":"e65255eeb55337f342aab5aea3f9977786ac6119"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"468a7c7ec6a38a92634998672ca085b5983a55de","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    def _request_unscoped_token(self):"},{"line_number":122,"context_line":"        resp \u003d self.saml2_client.send_service_provider_request("},{"line_number":123,"context_line":"            self.keystone_v3_endpoint, self.idp_id, self.protocol_id)"},{"line_number":124,"context_line":"        self.assertEqual(self.HTTP_OK, resp.status_code)"},{"line_number":125,"context_line":"        saml2_authn_request \u003d etree.XML(resp.content)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        relay_state \u003d self._str_from_xml("}],"source_content_type":"text/x-python","patch_set":28,"id":"1a6eadb0_0a20b49a","line":124,"in_reply_to":"1a6eadb0_2c793930","updated":"2016-12-20 12:18:24.000000000","message":"Done","commit_id":"e65255eeb55337f342aab5aea3f9977786ac6119"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"81545c1103a7815d88c61186eac9a0b0b5d5ee40","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        # Perform the authn request to the identity provider"},{"line_number":133,"context_line":"        resp \u003d self.saml2_client.send_identity_provider_authn_request("},{"line_number":134,"context_line":"            saml2_authn_request, self.idp_url, self.username, self.password)"},{"line_number":135,"context_line":"        self.assertEqual(self.HTTP_OK, resp.status_code)"},{"line_number":136,"context_line":"        saml2_idp_authn_response \u003d etree.XML(resp.content)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        idp_consumer_url \u003d self._str_from_xml("}],"source_content_type":"text/x-python","patch_set":28,"id":"1a6eadb0_6ce4113b","line":135,"updated":"2016-12-19 17:25:04.000000000","message":"For example - we could use http_client here to resemble what we currently do in our unit and functional tests:\n\n  self.assertEqual(http_client.OK, resp.status_code)\n\nThis would probably only make sense for the commonly known status codes, as the keystone/ECP specific ones might not be covered by the http_client library.","commit_id":"e65255eeb55337f342aab5aea3f9977786ac6119"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"468a7c7ec6a38a92634998672ca085b5983a55de","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        # Perform the authn request to the identity provider"},{"line_number":133,"context_line":"        resp \u003d self.saml2_client.send_identity_provider_authn_request("},{"line_number":134,"context_line":"            saml2_authn_request, self.idp_url, self.username, self.password)"},{"line_number":135,"context_line":"        self.assertEqual(self.HTTP_OK, resp.status_code)"},{"line_number":136,"context_line":"        saml2_idp_authn_response \u003d etree.XML(resp.content)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        idp_consumer_url \u003d self._str_from_xml("}],"source_content_type":"text/x-python","patch_set":28,"id":"1a6eadb0_8a34c4de","line":135,"in_reply_to":"1a6eadb0_6ce4113b","updated":"2016-12-20 12:18:24.000000000","message":"think we are good: https://docs.python.org/3/library/http.html#http-status-codes","commit_id":"e65255eeb55337f342aab5aea3f9977786ac6119"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"81545c1103a7815d88c61186eac9a0b0b5d5ee40","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        # Present the identity provider authn response to the service provider."},{"line_number":146,"context_line":"        resp \u003d self.saml2_client.send_service_provider_saml2_authn_response("},{"line_number":147,"context_line":"            saml2_idp_authn_response, relay_state, idp_consumer_url)"},{"line_number":148,"context_line":"        # Must receive a redirect from service provider"},{"line_number":149,"context_line":"        self.assertIn(resp.status_code,"},{"line_number":150,"context_line":"                      [self.HTTP_MOVED_TEMPORARILY, self.HTTP_SEE_OTHER])"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"1a6eadb0_0c3f1d26","line":148,"updated":"2016-12-19 17:25:04.000000000","message":"We could update this comment to say where we expect to be redirected. This is a nice test and I love the comments. I think we can use this to explain federated authentication flows to other developers (especially new one).","commit_id":"e65255eeb55337f342aab5aea3f9977786ac6119"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"468a7c7ec6a38a92634998672ca085b5983a55de","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        # Present the identity provider authn response to the service provider."},{"line_number":146,"context_line":"        resp \u003d self.saml2_client.send_service_provider_saml2_authn_response("},{"line_number":147,"context_line":"            saml2_idp_authn_response, relay_state, idp_consumer_url)"},{"line_number":148,"context_line":"        # Must receive a redirect from service provider"},{"line_number":149,"context_line":"        self.assertIn(resp.status_code,"},{"line_number":150,"context_line":"                      [self.HTTP_MOVED_TEMPORARILY, self.HTTP_SEE_OTHER])"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"1a6eadb0_2a5ad02a","line":148,"in_reply_to":"1a6eadb0_0c3f1d26","updated":"2016-12-20 12:18:24.000000000","message":"great suggestion! Done.","commit_id":"e65255eeb55337f342aab5aea3f9977786ac6119"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"ff8f8b618c506e592b542d1ddc090111435d51be","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from lxml import etree"},{"line_number":16,"context_line":"from six.moves import http_client"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from tempest import config"},{"line_number":19,"context_line":"from tempest.lib.common.utils import data_utils"}],"source_content_type":"text/x-python","patch_set":30,"id":"1a6eadb0_a615224a","line":16,"updated":"2016-12-20 22:04:28.000000000","message":"Hmm - do we have two sections dedicated to third-party imports? The tempest/testtools import below should be third-party along with lxml and six. Maybe something to fix in a follow on patch.","commit_id":"ff9f2e8b2feb3675a6060d5f66dbbd33206fe1fa"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"14c703a576ba502feef5a5891b1262a79936c162","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from tempest import config"},{"line_number":19,"context_line":"from tempest.lib.common.utils import data_utils"},{"line_number":20,"context_line":"from testtools import skipUnless"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from keystone_tempest_plugin.tests import base"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"ba5201f7_06fd4a3a","line":20,"range":{"start_line":20,"start_character":22,"end_line":20,"end_character":32},"updated":"2017-01-01 12:19:25.000000000","message":"don\u0027t import \"skipUnless\", just import testtools.","commit_id":"647b83d72375b59cce4dd16c0f428d304534bbb0"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"14c703a576ba502feef5a5891b1262a79936c162","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from lxml import etree"},{"line_number":16,"context_line":"from six.moves import http_client"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from tempest import config"},{"line_number":19,"context_line":"from tempest.lib.common.utils import data_utils"},{"line_number":20,"context_line":"from testtools import skipUnless"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from keystone_tempest_plugin.tests import base"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"ba5201f7_c602623e","line":20,"range":{"start_line":18,"start_character":0,"end_line":20,"end_character":32},"updated":"2017-01-01 12:19:25.000000000","message":"these should be grouped with the imports above since they are all third party packages","commit_id":"647b83d72375b59cce4dd16c0f428d304534bbb0"}]}
