)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a2f49279f233ae9c48e98249aa86c30a2aee45c7","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add support to create SAML assertion based on a token"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"A user should be able to exchange their token for a SAML assertion"},{"line_number":10,"context_line":"that is valid on a service provider (the user should must provide"},{"line_number":11,"context_line":"this data)."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"implements bp generate-saml-assertions"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"baa041b7_f9dd4671","line":10,"updated":"2015-04-02 00:40:15.000000000","message":"should or must? pick one.","commit_id":"a2fc6cf4f4cd718e8ca01d2b692193b69fc724ad"}],"keystoneclient/tests/unit/v3/saml2_fixtures.py":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"2cc38fb3c5fb80cc1345b08e4183cf5610395cf2","unresolved":false,"context_lines":[{"line_number":170,"context_line":"    }"},{"line_number":171,"context_line":"}"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"TOKEN_BASED_SAML \u003d six.b(\"\"\""},{"line_number":174,"context_line":"\u003c?xml version\u003d\u00271.0\u0027 encoding\u003d\u0027UTF-8\u0027?\u003e"},{"line_number":175,"context_line":"\u003cns2:Response Destination\u003d\"http://beta.example.com/Shibboleth.sso/POST/ECP\""},{"line_number":176,"context_line":"  ID\u003d\"8c21de08d2f2435c9acf13e72c982846\""}],"source_content_type":"text/x-python","patch_set":5,"id":"da9b358b_a95bef53","line":173,"updated":"2015-03-30 01:22:49.000000000","message":"imagine this could be somehow difficult to make pep8 happy :)","commit_id":"481da73db56bb460dafc8a0428ed775bab3f191e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a2f49279f233ae9c48e98249aa86c30a2aee45c7","unresolved":false,"context_lines":[{"line_number":170,"context_line":"    }"},{"line_number":171,"context_line":"}"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"TOKEN_BASED_SAML \u003d \"\"\""},{"line_number":174,"context_line":"\u003c?xml version\u003d\u00271.0\u0027 encoding\u003d\u0027UTF-8\u0027?\u003e"},{"line_number":175,"context_line":"\u003cns2:Response Destination\u003d\"http://beta.example.com/Shibboleth.sso/POST/ECP\""},{"line_number":176,"context_line":"  ID\u003d\"8c21de08d2f2435c9acf13e72c982846\""}],"source_content_type":"text/x-python","patch_set":9,"id":"baa041b7_59d55241","line":173,"updated":"2015-04-02 00:40:15.000000000","message":"Should document how this is generated.","commit_id":"a2fc6cf4f4cd718e8ca01d2b692193b69fc724ad"}],"keystoneclient/tests/unit/v3/test_auth_saml2.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"77839bf5994a958f06c40dbc178f7da485c677d0","unresolved":false,"context_lines":[{"line_number":643,"context_line":""},{"line_number":644,"context_line":"        returned \u003d self.manager.create_saml_assertion(service_provider_id,"},{"line_number":645,"context_line":"                                                      token_id)"},{"line_number":646,"context_line":"        self.assertEqual(saml2_fixtures.TOKEN_BASED_SAML, returned)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da9b358b_9baab06f","line":646,"updated":"2015-03-30 05:08:15.000000000","message":"also do a requests_mock.last_request.json and do some checking of the sent data.","commit_id":"481da73db56bb460dafc8a0428ed775bab3f191e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f3f47e0d0b8d3bab02e4147c26d48f373fc5c56c","unresolved":false,"context_lines":[{"line_number":643,"context_line":""},{"line_number":644,"context_line":"        returned \u003d self.manager.create_saml_assertion(service_provider_id,"},{"line_number":645,"context_line":"                                                      token_id)"},{"line_number":646,"context_line":"        self.assertEqual(saml2_fixtures.TOKEN_BASED_SAML, returned)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da9b358b_4e17c4a3","line":646,"in_reply_to":"da9b358b_9baab06f","updated":"2015-03-30 07:01:20.000000000","message":"Done","commit_id":"481da73db56bb460dafc8a0428ed775bab3f191e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a2f49279f233ae9c48e98249aa86c30a2aee45c7","unresolved":false,"context_lines":[{"line_number":626,"context_line":""},{"line_number":627,"context_line":"class SAMLGenerationTests(utils.TestCase):"},{"line_number":628,"context_line":""},{"line_number":629,"context_line":"    def setUp(self):"},{"line_number":630,"context_line":"        super(SAMLGenerationTests, self).setUp()"},{"line_number":631,"context_line":"        self.manager \u003d self.client.federation.saml"},{"line_number":632,"context_line":"        self.SAML2_FULL_URL \u003d \u0027\u0027.join([self.TEST_URL,"}],"source_content_type":"text/x-python","patch_set":9,"id":"baa041b7_1946aa23","line":629,"updated":"2015-04-02 00:40:15.000000000","message":"don\u0027t need a setUp for one test.","commit_id":"a2fc6cf4f4cd718e8ca01d2b692193b69fc724ad"}],"keystoneclient/v3/contrib/federation/core.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a2f49279f233ae9c48e98249aa86c30a2aee45c7","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        self.protocols \u003d protocols.ProtocolManager(api)"},{"line_number":28,"context_line":"        self.projects \u003d projects.ProjectManager(api)"},{"line_number":29,"context_line":"        self.domains \u003d domains.DomainManager(api)"},{"line_number":30,"context_line":"        self.saml \u003d saml.SamlManager(api)"},{"line_number":31,"context_line":"        self.service_providers \u003d service_providers.ServiceProviderManager(api)"}],"source_content_type":"text/x-python","patch_set":9,"id":"baa041b7_590af2d3","line":30,"updated":"2015-04-02 00:40:15.000000000","message":"without documentation this is useless.","commit_id":"a2fc6cf4f4cd718e8ca01d2b692193b69fc724ad"}],"keystoneclient/v3/contrib/federation/saml.py":[{"author":{"_account_id":9981,"name":"Doug Fish","email":"drfish@us.ibm.com","username":"doug-fish"},"change_message_id":"73607e7018a56125913b8f91b7f9194b389237fe","unresolved":false,"context_lines":[{"line_number":20,"context_line":"class SamlManager(base.CrudManager):"},{"line_number":21,"context_line":"    \"\"\"Manager class for manipulating Identity Providers.\"\"\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    resource_class \u003d SamlAssertion"},{"line_number":24,"context_line":"    base_url \u003d \u0027/OS-FEDERATION\u0027"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def samlize_token(self, sp_id, token_id,):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_44052d0f","line":23,"updated":"2015-02-26 17:53:29.000000000","message":"is SamlAssertion going to be enhanced?  If not shouldn\u0027t this just be base.Resource?","commit_id":"bff8fc1da3037d26adb561111d691b8f67d5d2cd"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"314c12638bd316b88bc5f6519faef17a7b3f2ed3","unresolved":false,"context_lines":[{"line_number":20,"context_line":"class SamlManager(base.CrudManager):"},{"line_number":21,"context_line":"    \"\"\"Manager class for manipulating Identity Providers.\"\"\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    resource_class \u003d SamlAssertion"},{"line_number":24,"context_line":"    base_url \u003d \u0027/OS-FEDERATION\u0027"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def samlize_token(self, sp_id, token_id,):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_1dba356e","line":23,"in_reply_to":"ba7be1f8_44052d0f","updated":"2015-03-12 14:03:04.000000000","message":"it won\u0027t be for now, but this has become a convention now","commit_id":"bff8fc1da3037d26adb561111d691b8f67d5d2cd"},{"author":{"_account_id":9981,"name":"Doug Fish","email":"drfish@us.ibm.com","username":"doug-fish"},"change_message_id":"73607e7018a56125913b8f91b7f9194b389237fe","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    resource_class \u003d SamlAssertion"},{"line_number":24,"context_line":"    base_url \u003d \u0027/OS-FEDERATION\u0027"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def samlize_token(self, sp_id, token_id,):"},{"line_number":27,"context_line":"        \"\"\"Samlize a token. \"\"\""},{"line_number":28,"context_line":"        endpoint \u003d \u0027/auth\u0027 + self.base_url + \u0027/saml2\u0027"},{"line_number":29,"context_line":"        body \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_a4b18948","line":26,"updated":"2015-02-26 17:53:29.000000000","message":"is this name changeable?  I\u0027ll be passing the same token_id to get multiple saml assertions.  This name made me think my token might be modified in some way.  \ncreate_saml\nisn\u0027t quite as fun as making up your own verb but might be clearer.","commit_id":"bff8fc1da3037d26adb561111d691b8f67d5d2cd"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"314c12638bd316b88bc5f6519faef17a7b3f2ed3","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    resource_class \u003d SamlAssertion"},{"line_number":24,"context_line":"    base_url \u003d \u0027/OS-FEDERATION\u0027"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def samlize_token(self, sp_id, token_id,):"},{"line_number":27,"context_line":"        \"\"\"Samlize a token. \"\"\""},{"line_number":28,"context_line":"        endpoint \u003d \u0027/auth\u0027 + self.base_url + \u0027/saml2\u0027"},{"line_number":29,"context_line":"        body \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_fd9f2101","line":26,"in_reply_to":"9a80dd14_c7401f59","updated":"2015-03-12 14:03:04.000000000","message":"settle on \"create_saml_assertion_from_token\" ?","commit_id":"bff8fc1da3037d26adb561111d691b8f67d5d2cd"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"5f67fc55ddff6a7f32208d1b55ab911e09d45f38","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    resource_class \u003d SamlAssertion"},{"line_number":24,"context_line":"    base_url \u003d \u0027/OS-FEDERATION\u0027"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def samlize_token(self, sp_id, token_id,):"},{"line_number":27,"context_line":"        \"\"\"Samlize a token. \"\"\""},{"line_number":28,"context_line":"        endpoint \u003d \u0027/auth\u0027 + self.base_url + \u0027/saml2\u0027"},{"line_number":29,"context_line":"        body \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_f31c3215","line":26,"in_reply_to":"9a80dd14_fd9f2101","updated":"2015-03-16 13:16:02.000000000","message":"++","commit_id":"bff8fc1da3037d26adb561111d691b8f67d5d2cd"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a16f88e91bbe990f45d02b2ff7496853e0529041","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    resource_class \u003d SamlAssertion"},{"line_number":24,"context_line":"    base_url \u003d \u0027/OS-FEDERATION\u0027"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def samlize_token(self, sp_id, token_id,):"},{"line_number":27,"context_line":"        \"\"\"Samlize a token. \"\"\""},{"line_number":28,"context_line":"        endpoint \u003d \u0027/auth\u0027 + self.base_url + \u0027/saml2\u0027"},{"line_number":29,"context_line":"        body \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_f16c6538","line":26,"in_reply_to":"9a80dd14_fd9f2101","updated":"2015-03-19 20:47:03.000000000","message":"Done","commit_id":"bff8fc1da3037d26adb561111d691b8f67d5d2cd"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"9fdb0570c9449f231b39fc6d3ad76e5da80ef330","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    resource_class \u003d SamlAssertion"},{"line_number":24,"context_line":"    base_url \u003d \u0027/OS-FEDERATION\u0027"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def samlize_token(self, sp_id, token_id,):"},{"line_number":27,"context_line":"        \"\"\"Samlize a token. \"\"\""},{"line_number":28,"context_line":"        endpoint \u003d \u0027/auth\u0027 + self.base_url + \u0027/saml2\u0027"},{"line_number":29,"context_line":"        body \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_c7401f59","line":26,"in_reply_to":"ba7be1f8_a4b18948","updated":"2015-03-04 18:45:09.000000000","message":"I\u0027d use \"get_saml_assertion_from_token\"","commit_id":"bff8fc1da3037d26adb561111d691b8f67d5d2cd"},{"author":{"_account_id":9981,"name":"Doug Fish","email":"drfish@us.ibm.com","username":"doug-fish"},"change_message_id":"4e5d1ec182292447f4560014682db03cc049d97e","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        }"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        resp, body \u003d self.client.post(endpoint, body\u003dbody)"},{"line_number":46,"context_line":"        return self.resource_class(self, resp.content)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_e97fdca8","line":46,"updated":"2015-02-26 17:48:32.000000000","message":"Hey Steve, as we discussed this doesn\u0027t work - resp.content looks like a big string with xml, but resource_class seems to expect name/value pairs and it crashes.","commit_id":"bff8fc1da3037d26adb561111d691b8f67d5d2cd"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"314c12638bd316b88bc5f6519faef17a7b3f2ed3","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        }"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        resp, body \u003d self.client.post(endpoint, body\u003dbody)"},{"line_number":46,"context_line":"        return self.resource_class(self, resp.content)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_dd66dd28","line":46,"in_reply_to":"ba7be1f8_e5f82d4c","updated":"2015-03-12 14:03:04.000000000","message":"thanks doug! i\u0027ll make that change","commit_id":"bff8fc1da3037d26adb561111d691b8f67d5d2cd"},{"author":{"_account_id":9981,"name":"Doug Fish","email":"drfish@us.ibm.com","username":"doug-fish"},"change_message_id":"cb97dd00717afde26c69ad22f6da8429282bb78f","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        }"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        resp, body \u003d self.client.post(endpoint, body\u003dbody)"},{"line_number":46,"context_line":"        return self.resource_class(self, resp.content)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_e5f82d4c","line":46,"in_reply_to":"ba7be1f8_e97fdca8","updated":"2015-03-03 15:48:13.000000000","message":"In order to use this patch I\u0027ve modified the last line to return resp.content","commit_id":"bff8fc1da3037d26adb561111d691b8f67d5d2cd"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"77839bf5994a958f06c40dbc178f7da485c677d0","unresolved":false,"context_lines":[{"line_number":19,"context_line":"class SamlManager(base.Manager):"},{"line_number":20,"context_line":"    \"\"\"Manager class for creating SAML assertions.\"\"\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def create_saml_assertion(self, service_provider, token_id):"},{"line_number":23,"context_line":"        \"\"\"Create a SAML assertion from a token."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"        Equivalent Identity API call:"}],"source_content_type":"text/x-python","patch_set":5,"id":"da9b358b_fbe77c10","line":22,"updated":"2015-03-30 05:08:15.000000000","message":"nit: can drop _saml_ from name,\n\nthis will come out in the client as\n\nclient.saml.create_saml_assertion which is kind of redundant","commit_id":"481da73db56bb460dafc8a0428ed775bab3f191e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f3f47e0d0b8d3bab02e4147c26d48f373fc5c56c","unresolved":false,"context_lines":[{"line_number":19,"context_line":"class SamlManager(base.Manager):"},{"line_number":20,"context_line":"    \"\"\"Manager class for creating SAML assertions.\"\"\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def create_saml_assertion(self, service_provider, token_id):"},{"line_number":23,"context_line":"        \"\"\"Create a SAML assertion from a token."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"        Equivalent Identity API call:"}],"source_content_type":"text/x-python","patch_set":5,"id":"da9b358b_8e1dccbf","line":22,"in_reply_to":"da9b358b_fbe77c10","updated":"2015-03-30 07:01:20.000000000","message":"as discussed on irc, it\u0027s needed to differentiate between this and create_ecp_assertion. keeping as is","commit_id":"481da73db56bb460dafc8a0428ed775bab3f191e"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"77839bf5994a958f06c40dbc178f7da485c677d0","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            }"},{"line_number":51,"context_line":"        }"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        resp, body \u003d self.client.post(SAML2_ENDPOINT, body\u003dbody)"},{"line_number":54,"context_line":"        return resp.content"}],"source_content_type":"text/x-python","patch_set":5,"id":"da9b358b_1bb0e0f3","line":53,"updated":"2015-03-30 05:08:15.000000000","message":"this works, but you want json\u003dbody\n\nAlso you probably want some Accept headers here.","commit_id":"481da73db56bb460dafc8a0428ed775bab3f191e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f3f47e0d0b8d3bab02e4147c26d48f373fc5c56c","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            }"},{"line_number":51,"context_line":"        }"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        resp, body \u003d self.client.post(SAML2_ENDPOINT, body\u003dbody)"},{"line_number":54,"context_line":"        return resp.content"}],"source_content_type":"text/x-python","patch_set":5,"id":"da9b358b_6e7968fc","line":53,"in_reply_to":"da9b358b_1bb0e0f3","updated":"2015-03-30 07:01:20.000000000","message":"Done","commit_id":"481da73db56bb460dafc8a0428ed775bab3f191e"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"98913b10dffcaba16effe5f135072f627fbfe419","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        headers \u003d {\u0027Content-Type\u0027: \u0027application/json\u0027}"},{"line_number":54,"context_line":"        resp, body \u003d self.client.post(SAML2_ENDPOINT, json\u003dbody,"},{"line_number":55,"context_line":"                                      headers\u003dheaders)"},{"line_number":56,"context_line":"        return resp"}],"source_content_type":"text/x-python","patch_set":6,"id":"da9b358b_934a6cc4","line":56,"updated":"2015-03-31 05:35:28.000000000","message":"Returning the resp looks odd, as a consumer I would prefer to get the body rather than parsing the response object.\n\nReturning body also make it consistent with how our create operation behaves, which returns the object created.\n\nAnd also the docs says it will return the string :)","commit_id":"9766f5637510a497a6c3aad4cdf683e27b4d8aef"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b23bd171fd7fbe4c0a32cf65d4b8e6ff68e7b8fe","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        headers \u003d {\u0027Content-Type\u0027: \u0027application/json\u0027}"},{"line_number":54,"context_line":"        resp, body \u003d self.client.post(SAML2_ENDPOINT, json\u003dbody,"},{"line_number":55,"context_line":"                                      headers\u003dheaders)"},{"line_number":56,"context_line":"        return resp"}],"source_content_type":"text/x-python","patch_set":6,"id":"da9b358b_ce97278f","line":56,"in_reply_to":"da9b358b_934a6cc4","updated":"2015-03-31 06:01:09.000000000","message":"Yeah, i wasn\u0027t quite sure how to handle this, there are also headers returned as part of the API spec, so I\u0027m not sure how to return both (aside from using a tuple), but as you said, normally we return just the body.","commit_id":"9766f5637510a497a6c3aad4cdf683e27b4d8aef"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"d931035bf86dfa3d4c49db2feb6ed0628da5295a","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        headers \u003d {\u0027Content-Type\u0027: \u0027application/json\u0027}"},{"line_number":54,"context_line":"        resp, body \u003d self.client.post(SAML2_ENDPOINT, json\u003dbody,"},{"line_number":55,"context_line":"                                      headers\u003dheaders)"},{"line_number":56,"context_line":"        return resp"}],"source_content_type":"text/x-python","patch_set":6,"id":"da9b358b_625f0fe6","line":56,"in_reply_to":"da9b358b_ce97278f","updated":"2015-03-31 06:43:56.000000000","message":"ended up returning the content instead of requiring the headers and content being returned.","commit_id":"9766f5637510a497a6c3aad4cdf683e27b4d8aef"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"ce9ec3f4f1f8892b060cad28bbe0c7639e3fa781","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            }"},{"line_number":51,"context_line":"        }"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        headers \u003d {\u0027Content-Type\u0027: \u0027application/json\u0027}"},{"line_number":54,"context_line":"        resp, body \u003d self.client.post(SAML2_ENDPOINT, json\u003dbody,"},{"line_number":55,"context_line":"                                      headers\u003dheaders)"},{"line_number":56,"context_line":"        return resp.text"}],"source_content_type":"text/x-python","patch_set":9,"id":"baa041b7_35f3b875","line":53,"updated":"2015-04-01 20:38:03.000000000","message":"Assumedly here you would also want to set an Accept header otherwise it will default to application/json.","commit_id":"a2fc6cf4f4cd718e8ca01d2b692193b69fc724ad"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a2f49279f233ae9c48e98249aa86c30a2aee45c7","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            }"},{"line_number":51,"context_line":"        }"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        headers \u003d {\u0027Content-Type\u0027: \u0027application/json\u0027}"},{"line_number":54,"context_line":"        resp, body \u003d self.client.post(SAML2_ENDPOINT, json\u003dbody,"},{"line_number":55,"context_line":"                                      headers\u003dheaders)"},{"line_number":56,"context_line":"        return resp.text"}],"source_content_type":"text/x-python","patch_set":9,"id":"baa041b7_792c964a","line":53,"in_reply_to":"baa041b7_35f3b875","updated":"2015-04-02 00:40:15.000000000","message":"y, we should pass accept header, and should validate that the server sent the correct content-type back.","commit_id":"a2fc6cf4f4cd718e8ca01d2b692193b69fc724ad"}]}
