)]}'
{"swift/common/middleware/decrypter.py":[{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"70a0a827599ebdc87c3055fe815bc5103dfd8835","unresolved":false,"context_lines":[{"line_number":293,"context_line":"        #        app_resp \u003d self.process_json_resp(keys, app_resp)"},{"line_number":294,"context_line":"        #    elif out_content_type.endswith(\u0027/xml\u0027):"},{"line_number":295,"context_line":"        #        app_resp \u003d self.process_xml_resp(keys, app_resp)"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"        start_response(self._response_status,"},{"line_number":298,"context_line":"                       self._response_headers,"},{"line_number":299,"context_line":"                       self._response_exc_info)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_da8f9f21","line":296,"updated":"2016-01-04 01:42:57.000000000","message":"Nice, thanks for just commenting out for now.  The decryption of etag will be added very soon.  :-)","commit_id":"10be02bdf409b5e50acb59e205411cace1033784"},{"author":{"_account_id":12261,"name":"Mahati","email":"mahati.chamarthy@gmail.com","username":"Mahati"},"change_message_id":"5a418cd29a232bf557d22a4904d5897d69393b25","unresolved":false,"context_lines":[{"line_number":293,"context_line":"        #        app_resp \u003d self.process_json_resp(keys, app_resp)"},{"line_number":294,"context_line":"        #    elif out_content_type.endswith(\u0027/xml\u0027):"},{"line_number":295,"context_line":"        #        app_resp \u003d self.process_xml_resp(keys, app_resp)"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"        start_response(self._response_status,"},{"line_number":298,"context_line":"                       self._response_headers,"},{"line_number":299,"context_line":"                       self._response_exc_info)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_c452e434","line":296,"in_reply_to":"fa69d971_da8f9f21","updated":"2016-01-06 14:16:16.000000000","message":"Cool","commit_id":"10be02bdf409b5e50acb59e205411cace1033784"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"8db25495c061406a4c926c73cd3193b8772096bd","unresolved":false,"context_lines":[{"line_number":292,"context_line":"        #    if out_content_type \u003d\u003d \u0027application/json\u0027:"},{"line_number":293,"context_line":"        #        app_resp \u003d self.process_json_resp(keys, app_resp)"},{"line_number":294,"context_line":"        #    elif out_content_type.endswith(\u0027/xml\u0027):"},{"line_number":295,"context_line":"        #        app_resp \u003d self.process_xml_resp(keys, app_resp)"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"        start_response(self._response_status,"},{"line_number":298,"context_line":"                       self._response_headers,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_8d3acc97","line":295,"updated":"2016-01-06 16:12:36.000000000","message":"just delete the code :)","commit_id":"62ee6b2dd55c53a9deedaaf458b7e8a4f7d8b087"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"1c3fbb3b26bfee1066a47f2a72e149cb2c197a2c","unresolved":false,"context_lines":[{"line_number":282,"context_line":"        return app_resp"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"class DecrypterContContext(BaseDecrypterContext):"},{"line_number":286,"context_line":"    def __init__(self, decrypter, logger):"},{"line_number":287,"context_line":"        super(DecrypterContContext, self).__init__(decrypter, logger)"},{"line_number":288,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_f18500cf","side":"PARENT","line":285,"updated":"2016-01-18 12:25:19.000000000","message":"hmmm, this class does nothing now, so why not delete it altogether?","commit_id":"688aa7dd5fcdcf41fb74179bc41d3d48d3888788"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"1c3fbb3b26bfee1066a47f2a72e149cb2c197a2c","unresolved":false,"context_lines":[{"line_number":304,"context_line":""},{"line_number":305,"context_line":"        return app_resp"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"    def update_content_length(self, new_total_len):"},{"line_number":308,"context_line":"        self._response_headers \u003d ["},{"line_number":309,"context_line":"            (h, v) for h, v in self._response_headers"},{"line_number":310,"context_line":"            if h.lower() !\u003d \u0027content-length\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_d1347c4b","side":"PARENT","line":307,"updated":"2016-01-18 12:25:19.000000000","message":"never called","commit_id":"688aa7dd5fcdcf41fb74179bc41d3d48d3888788"}],"swift/common/middleware/encrypter.py":[{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"70a0a827599ebdc87c3055fe815bc5103dfd8835","unresolved":false,"context_lines":[{"line_number":188,"context_line":"            raise HTTPUnprocessableEntity(request\u003dreq)"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"        # update content-type in case it is missing"},{"line_number":191,"context_line":"        update_content_type(req)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        error_resp \u003d self.encrypt_user_metadata(req, keys)"},{"line_number":194,"context_line":"        if error_resp:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_3aa91b7c","line":191,"range":{"start_line":191,"start_character":28,"end_line":191,"end_character":31},"updated":"2016-01-04 01:42:57.000000000","message":"Do we still want to add this here?  I was thinking that we wouldn\u0027t be modifying content-type at all anymore, since we are not encrypting it.  This is still updated elsewhere as before, right?","commit_id":"10be02bdf409b5e50acb59e205411cace1033784"},{"author":{"_account_id":12261,"name":"Mahati","email":"mahati.chamarthy@gmail.com","username":"Mahati"},"change_message_id":"5a418cd29a232bf557d22a4904d5897d69393b25","unresolved":false,"context_lines":[{"line_number":188,"context_line":"            raise HTTPUnprocessableEntity(request\u003dreq)"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"        # update content-type in case it is missing"},{"line_number":191,"context_line":"        update_content_type(req)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        error_resp \u003d self.encrypt_user_metadata(req, keys)"},{"line_number":194,"context_line":"        if error_resp:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_e47a88bc","line":191,"range":{"start_line":191,"start_character":28,"end_line":191,"end_character":31},"in_reply_to":"fa69d971_3aa91b7c","updated":"2016-01-06 14:16:16.000000000","message":"This won\u0027t do any harm, if it is checked here, it is skipped at the proxy server. IMHO we could keep this and associated tests, so that some rework can be avoided in future.","commit_id":"10be02bdf409b5e50acb59e205411cace1033784"}],"test/unit/common/middleware/test_decrypter.py":[{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"70a0a827599ebdc87c3055fe815bc5103dfd8835","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        body \u003d \u0027FAKE APP\u0027"},{"line_number":65,"context_line":"        key \u003d fetch_crypto_keys()[\u0027object\u0027]"},{"line_number":66,"context_line":"        enc_body \u003d encrypt(body, key, fake_iv())"},{"line_number":67,"context_line":"        content_type \u003d \u0027text/plain\u0027"},{"line_number":68,"context_line":"        app \u003d FakeSwift()"},{"line_number":69,"context_line":"        hdrs \u003d {\u0027Etag\u0027: \u0027hashOfCiphertext\u0027,"},{"line_number":70,"context_line":"                \u0027content-type\u0027: content_type,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_bab3cbe8","line":67,"updated":"2016-01-04 01:42:57.000000000","message":"no need for a separate variable here, I suppose.  Same comment for the other tests.","commit_id":"10be02bdf409b5e50acb59e205411cace1033784"},{"author":{"_account_id":12261,"name":"Mahati","email":"mahati.chamarthy@gmail.com","username":"Mahati"},"change_message_id":"5a418cd29a232bf557d22a4904d5897d69393b25","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        body \u003d \u0027FAKE APP\u0027"},{"line_number":65,"context_line":"        key \u003d fetch_crypto_keys()[\u0027object\u0027]"},{"line_number":66,"context_line":"        enc_body \u003d encrypt(body, key, fake_iv())"},{"line_number":67,"context_line":"        content_type \u003d \u0027text/plain\u0027"},{"line_number":68,"context_line":"        app \u003d FakeSwift()"},{"line_number":69,"context_line":"        hdrs \u003d {\u0027Etag\u0027: \u0027hashOfCiphertext\u0027,"},{"line_number":70,"context_line":"                \u0027content-type\u0027: content_type,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_c41ae4c5","line":67,"in_reply_to":"fa69d971_bab3cbe8","updated":"2016-01-06 14:16:16.000000000","message":"Done","commit_id":"10be02bdf409b5e50acb59e205411cace1033784"},{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"70a0a827599ebdc87c3055fe815bc5103dfd8835","unresolved":false,"context_lines":[{"line_number":416,"context_line":"                         resp.body)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"    def test_cipher_mismatch_for_content_type(self):"},{"line_number":419,"context_line":"        self.skipTest(\u0027content-type is no more encrypted\u0027)"},{"line_number":420,"context_line":"        # Cipher does not match"},{"line_number":421,"context_line":"        env \u003d {\u0027REQUEST_METHOD\u0027: \u0027GET\u0027,"},{"line_number":422,"context_line":"               \u0027swift.crypto.fetch_crypto_keys\u0027: fetch_crypto_keys}"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_9ae7e7e3","line":419,"range":{"start_line":419,"start_character":47,"end_line":419,"end_character":56},"updated":"2016-01-04 01:42:57.000000000","message":"Please add a comment that this test will no longer be skipped when it is changed to be a test for the encrypted etag instead of for content-type.","commit_id":"10be02bdf409b5e50acb59e205411cace1033784"},{"author":{"_account_id":12261,"name":"Mahati","email":"mahati.chamarthy@gmail.com","username":"Mahati"},"change_message_id":"5a418cd29a232bf557d22a4904d5897d69393b25","unresolved":false,"context_lines":[{"line_number":416,"context_line":"                         resp.body)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"    def test_cipher_mismatch_for_content_type(self):"},{"line_number":419,"context_line":"        self.skipTest(\u0027content-type is no more encrypted\u0027)"},{"line_number":420,"context_line":"        # Cipher does not match"},{"line_number":421,"context_line":"        env \u003d {\u0027REQUEST_METHOD\u0027: \u0027GET\u0027,"},{"line_number":422,"context_line":"               \u0027swift.crypto.fetch_crypto_keys\u0027: fetch_crypto_keys}"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_448594cc","line":419,"range":{"start_line":419,"start_character":47,"end_line":419,"end_character":56},"in_reply_to":"fa69d971_9ae7e7e3","updated":"2016-01-06 14:16:16.000000000","message":"Done","commit_id":"10be02bdf409b5e50acb59e205411cace1033784"},{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"70a0a827599ebdc87c3055fe815bc5103dfd8835","unresolved":false,"context_lines":[{"line_number":532,"context_line":"                      \"last_modified\": \"2015-04-14T23:33:06.439040\","},{"line_number":533,"context_line":"                      \"hash\": \"c6e8196d7f0fff6444b90861fe8d609d\","},{"line_number":534,"context_line":"                      \"name\": \"testfile\","},{"line_number":535,"context_line":"                      \"content_type\": content_type_1}"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"        obj_dict_2 \u003d {\"bytes\": 24,"},{"line_number":538,"context_line":"                      \"last_modified\": \"2015-04-14T23:33:06.519020\","}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_9a35a747","line":535,"updated":"2016-01-04 01:42:57.000000000","message":"Could you leave a comment saying:\nDo this for etag encryption\nencrypt_and_append_meta(\nself, etag.encode(\u0027utf-8\u0027), \nfetch_crypto_keys()[\u0027container\u0027])","commit_id":"10be02bdf409b5e50acb59e205411cace1033784"},{"author":{"_account_id":12261,"name":"Mahati","email":"mahati.chamarthy@gmail.com","username":"Mahati"},"change_message_id":"5a418cd29a232bf557d22a4904d5897d69393b25","unresolved":false,"context_lines":[{"line_number":532,"context_line":"                      \"last_modified\": \"2015-04-14T23:33:06.439040\","},{"line_number":533,"context_line":"                      \"hash\": \"c6e8196d7f0fff6444b90861fe8d609d\","},{"line_number":534,"context_line":"                      \"name\": \"testfile\","},{"line_number":535,"context_line":"                      \"content_type\": content_type_1}"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"        obj_dict_2 \u003d {\"bytes\": 24,"},{"line_number":538,"context_line":"                      \"last_modified\": \"2015-04-14T23:33:06.519020\","}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_a476d003","line":535,"in_reply_to":"fa69d971_9a35a747","updated":"2016-01-06 14:16:16.000000000","message":"Done","commit_id":"10be02bdf409b5e50acb59e205411cace1033784"},{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"70a0a827599ebdc87c3055fe815bc5103dfd8835","unresolved":false,"context_lines":[{"line_number":587,"context_line":"        self.assertDictEqual(obj_dict_2, body_json[1])"},{"line_number":588,"context_line":""},{"line_number":589,"context_line":"    def test_cont_get_json_req_with_cipher_mismatch(self):"},{"line_number":590,"context_line":"        self.skipTest(\u0027content-type no more encrypted\u0027)"},{"line_number":591,"context_line":"        content_type \u003d \u0027image/jpeg\u0027"},{"line_number":592,"context_line":"        bad_crypto_meta \u003d fake_get_crypto_meta(self)"},{"line_number":593,"context_line":"        bad_crypto_meta[\u0027cipher\u0027] \u003d \u0027unknown_cipher\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_3a459bb2","line":590,"updated":"2016-01-04 01:42:57.000000000","message":"add a comment that this test will be no longer skipped when the etag is encrypted.","commit_id":"10be02bdf409b5e50acb59e205411cace1033784"},{"author":{"_account_id":12261,"name":"Mahati","email":"mahati.chamarthy@gmail.com","username":"Mahati"},"change_message_id":"5a418cd29a232bf557d22a4904d5897d69393b25","unresolved":false,"context_lines":[{"line_number":587,"context_line":"        self.assertDictEqual(obj_dict_2, body_json[1])"},{"line_number":588,"context_line":""},{"line_number":589,"context_line":"    def test_cont_get_json_req_with_cipher_mismatch(self):"},{"line_number":590,"context_line":"        self.skipTest(\u0027content-type no more encrypted\u0027)"},{"line_number":591,"context_line":"        content_type \u003d \u0027image/jpeg\u0027"},{"line_number":592,"context_line":"        bad_crypto_meta \u003d fake_get_crypto_meta(self)"},{"line_number":593,"context_line":"        bad_crypto_meta[\u0027cipher\u0027] \u003d \u0027unknown_cipher\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_c471840d","line":590,"in_reply_to":"fa69d971_3a459bb2","updated":"2016-01-06 14:16:16.000000000","message":"Done","commit_id":"10be02bdf409b5e50acb59e205411cace1033784"},{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"70a0a827599ebdc87c3055fe815bc5103dfd8835","unresolved":false,"context_lines":[{"line_number":707,"context_line":"        self._assert_element_contains_dict(obj_dict_2, objs[1])"},{"line_number":708,"context_line":""},{"line_number":709,"context_line":"    def test_cont_get_xml_req_with_cipher_mismatch(self):"},{"line_number":710,"context_line":"        self.skipTest(\u0027content-type is not encrypted\u0027)"},{"line_number":711,"context_line":"        content_type \u003d \u0027image/jpeg\u0027"},{"line_number":712,"context_line":"        bad_crypto_meta \u003d fake_get_crypto_meta(self)"},{"line_number":713,"context_line":"        bad_crypto_meta[\u0027cipher\u0027] \u003d \u0027unknown_cipher\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_ba0f4b87","line":710,"updated":"2016-01-04 01:42:57.000000000","message":"add a comment that this test will be no longer skipped when the etag is encrypted.","commit_id":"10be02bdf409b5e50acb59e205411cace1033784"},{"author":{"_account_id":12261,"name":"Mahati","email":"mahati.chamarthy@gmail.com","username":"Mahati"},"change_message_id":"5a418cd29a232bf557d22a4904d5897d69393b25","unresolved":false,"context_lines":[{"line_number":707,"context_line":"        self._assert_element_contains_dict(obj_dict_2, objs[1])"},{"line_number":708,"context_line":""},{"line_number":709,"context_line":"    def test_cont_get_xml_req_with_cipher_mismatch(self):"},{"line_number":710,"context_line":"        self.skipTest(\u0027content-type is not encrypted\u0027)"},{"line_number":711,"context_line":"        content_type \u003d \u0027image/jpeg\u0027"},{"line_number":712,"context_line":"        bad_crypto_meta \u003d fake_get_crypto_meta(self)"},{"line_number":713,"context_line":"        bad_crypto_meta[\u0027cipher\u0027] \u003d \u0027unknown_cipher\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_84662c4f","line":710,"in_reply_to":"fa69d971_ba0f4b87","updated":"2016-01-06 14:16:16.000000000","message":"Done","commit_id":"10be02bdf409b5e50acb59e205411cace1033784"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"1c3fbb3b26bfee1066a47f2a72e149cb2c197a2c","unresolved":false,"context_lines":[{"line_number":425,"context_line":"        self.assertEqual(\u0027Error creating decryption context for object body\u0027,"},{"line_number":426,"context_line":"                         resp.body)"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"    def test_cipher_mismatch_for_content_type(self):"},{"line_number":429,"context_line":"        # Test won\u0027t be skipped when it is changed to test for encrypted etag"},{"line_number":430,"context_line":"        self.skipTest(\u0027content-type is no more encrypted\u0027)"},{"line_number":431,"context_line":"        # Cipher does not match"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_f4596e36","line":428,"updated":"2016-01-18 12:25:19.000000000","message":"or just delete the test?","commit_id":"7bce9475c4c8460b1d914db2234a860e8f80ca0f"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"1c3fbb3b26bfee1066a47f2a72e149cb2c197a2c","unresolved":false,"context_lines":[{"line_number":596,"context_line":"        obj_dict_2[\u0027content_type\u0027] \u003d content_type_2"},{"line_number":597,"context_line":"        self.assertDictEqual(obj_dict_2, body_json[1])"},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"    def test_cont_get_json_req_with_cipher_mismatch(self):"},{"line_number":600,"context_line":"        # Test won\u0027t be skipped when it is changed to test for encrypted etag"},{"line_number":601,"context_line":"        self.skipTest(\u0027content-type no more encrypted\u0027)"},{"line_number":602,"context_line":"        content_type \u003d \u0027image/jpeg\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_f4708ea6","line":599,"updated":"2016-01-18 12:25:19.000000000","message":"ditto - delete test?","commit_id":"7bce9475c4c8460b1d914db2234a860e8f80ca0f"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"1c3fbb3b26bfee1066a47f2a72e149cb2c197a2c","unresolved":false,"context_lines":[{"line_number":718,"context_line":"        self._assert_element_contains_dict(obj_dict_2, objs[1])"},{"line_number":719,"context_line":""},{"line_number":720,"context_line":"    def test_cont_get_xml_req_with_cipher_mismatch(self):"},{"line_number":721,"context_line":"        # Test won\u0027t be skipped when it is changed to test for encrypted etag"},{"line_number":722,"context_line":"        self.skipTest(\u0027content-type is no more encrypted\u0027)"},{"line_number":723,"context_line":"        content_type \u003d \u0027image/jpeg\u0027"},{"line_number":724,"context_line":"        bad_crypto_meta \u003d fake_get_crypto_meta()"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_d4a46a09","line":721,"updated":"2016-01-18 12:25:19.000000000","message":"ditto - delete test?","commit_id":"7bce9475c4c8460b1d914db2234a860e8f80ca0f"}],"test/unit/common/middleware/test_encrypter.py":[{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"70a0a827599ebdc87c3055fe815bc5103dfd8835","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        # content-type is not encrypted"},{"line_number":85,"context_line":"        ctype \u003d req_hdrs[\u0027Content-Type\u0027]"},{"line_number":86,"context_line":"        self.assertEqual(\u0027text/plain\u0027, ctype)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        # user meta is encrypted"},{"line_number":89,"context_line":"        self.assertEqual(base64.b64encode(encrypt(\u0027encrypt me\u0027, key,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_fa7ce3ec","line":86,"updated":"2016-01-04 01:42:57.000000000","message":"If the update content-type is removed from the encrypter, then this assert can be removed.","commit_id":"10be02bdf409b5e50acb59e205411cace1033784"},{"author":{"_account_id":12261,"name":"Mahati","email":"mahati.chamarthy@gmail.com","username":"Mahati"},"change_message_id":"5a418cd29a232bf557d22a4904d5897d69393b25","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        # content-type is not encrypted"},{"line_number":85,"context_line":"        ctype \u003d req_hdrs[\u0027Content-Type\u0027]"},{"line_number":86,"context_line":"        self.assertEqual(\u0027text/plain\u0027, ctype)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        # user meta is encrypted"},{"line_number":89,"context_line":"        self.assertEqual(base64.b64encode(encrypt(\u0027encrypt me\u0027, key,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_e405a845","line":86,"in_reply_to":"fa69d971_fa7ce3ec","updated":"2016-01-06 14:16:16.000000000","message":"I think we could have this, as it asserts that content-type is not encrypted?","commit_id":"10be02bdf409b5e50acb59e205411cace1033784"},{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"70a0a827599ebdc87c3055fe815bc5103dfd8835","unresolved":false,"context_lines":[{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    def test_PUT_detect_content_type(self):"},{"line_number":311,"context_line":"        # Tests content-type is guessed and not encrypted if"},{"line_number":312,"context_line":"        # x-detect-content-type"},{"line_number":313,"context_line":"        with test_server.save_globals():"},{"line_number":314,"context_line":"            captured_headers \u003d []"},{"line_number":315,"context_line":"            on_connect \u003d self._make_capture_headers(captured_headers)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_9a5a8782","line":312,"updated":"2016-01-04 01:42:57.000000000","message":"If the update content-type is removed from the encrypter, then this test (and the next 3 tests) can be removed.","commit_id":"10be02bdf409b5e50acb59e205411cace1033784"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"1c3fbb3b26bfee1066a47f2a72e149cb2c197a2c","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        self.assertEqual(\u0027do not encrypt me\u0027,"},{"line_number":147,"context_line":"                         req_hdrs[\u0027X-Object-Sysmeta-Test\u0027])"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def test_swift_bytes_not_encrypted(self):"},{"line_number":150,"context_line":"        content_type \u003d \u0027text/plain; foo\u003dbar; swift_bytes\u003d1234567890\u0027"},{"line_number":151,"context_line":"        env \u003d {\u0027REQUEST_METHOD\u0027: \u0027PUT\u0027,"},{"line_number":152,"context_line":"               \u0027swift.crypto.fetch_crypto_keys\u0027: fetch_crypto_keys}"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_145e82e9","side":"PARENT","line":149,"updated":"2016-01-18 12:25:19.000000000","message":"this test doesn\u0027t make any assertions that we have not already made in other tests, so delete?","commit_id":"688aa7dd5fcdcf41fb74179bc41d3d48d3888788"}]}
