)]}'
{"glance/tests/unit/common/test_signature_utils.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c14182444d4fe5393ba1c8bb16db466238f792d4","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import base64"},{"line_number":17,"context_line":"from cryptography.hazmat.backends import default_backend"},{"line_number":18,"context_line":"from cryptography.hazmat.primitives.asymmetric import padding"},{"line_number":19,"context_line":"from cryptography.hazmat.primitives.asymmetric import rsa"},{"line_number":20,"context_line":"from glance.common import exception"},{"line_number":21,"context_line":"from glance.common import signature_utils"},{"line_number":22,"context_line":"from glance.tests import utils as test_utils"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_b285e9cf","line":19,"updated":"2015-08-20 11:06:06.000000000","message":"you need to separate out the imports\nplease refer, http://docs.openstack.org/developer/hacking/#import-order-template","commit_id":"c83ada63d876e570d79d574b00a1ba45386e341e"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"c78c733885afeabac3e36134b871f73bde7ad1fa","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import base64"},{"line_number":17,"context_line":"from cryptography.hazmat.backends import default_backend"},{"line_number":18,"context_line":"from cryptography.hazmat.primitives.asymmetric import padding"},{"line_number":19,"context_line":"from cryptography.hazmat.primitives.asymmetric import rsa"},{"line_number":20,"context_line":"from glance.common import exception"},{"line_number":21,"context_line":"from glance.common import signature_utils"},{"line_number":22,"context_line":"from glance.tests import utils as test_utils"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_06180274","line":19,"in_reply_to":"fa1b9901_b285e9cf","updated":"2015-08-20 16:41:57.000000000","message":"Done","commit_id":"c83ada63d876e570d79d574b00a1ba45386e341e"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c14182444d4fe5393ba1c8bb16db466238f792d4","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from glance.common import exception"},{"line_number":21,"context_line":"from glance.common import signature_utils"},{"line_number":22,"context_line":"from glance.tests import utils as test_utils"},{"line_number":23,"context_line":"import mock"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"TEST_PRIVATE_KEY \u003d rsa.generate_private_key(public_exponent\u003d3,"},{"line_number":26,"context_line":"                                            key_size\u003d1024,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_32723912","line":23,"updated":"2015-08-20 11:06:06.000000000","message":"import mock should be moved upwards, please refer above link","commit_id":"c83ada63d876e570d79d574b00a1ba45386e341e"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"c78c733885afeabac3e36134b871f73bde7ad1fa","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from glance.common import exception"},{"line_number":21,"context_line":"from glance.common import signature_utils"},{"line_number":22,"context_line":"from glance.tests import utils as test_utils"},{"line_number":23,"context_line":"import mock"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"TEST_PRIVATE_KEY \u003d rsa.generate_private_key(public_exponent\u003d3,"},{"line_number":26,"context_line":"                                            key_size\u003d1024,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_c62c4a9b","line":23,"in_reply_to":"fa1b9901_32723912","updated":"2015-08-20 16:41:57.000000000","message":"Done","commit_id":"c83ada63d876e570d79d574b00a1ba45386e341e"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c14182444d4fe5393ba1c8bb16db466238f792d4","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    def get(self, context, certificate_uuid):"},{"line_number":39,"context_line":"        cert \u003d self.certs.get(certificate_uuid)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        if cert \u003d\u003d None:"},{"line_number":42,"context_line":"            raise Exception(\"No matching certificate found.\")"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        return cert"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_b2d3a9d4","line":41,"updated":"2015-08-20 11:06:06.000000000","message":"better to use\nif cert is None:\n\nor\n\nif not cert:","commit_id":"c83ada63d876e570d79d574b00a1ba45386e341e"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"c78c733885afeabac3e36134b871f73bde7ad1fa","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    def get(self, context, certificate_uuid):"},{"line_number":39,"context_line":"        cert \u003d self.certs.get(certificate_uuid)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        if cert \u003d\u003d None:"},{"line_number":42,"context_line":"            raise Exception(\"No matching certificate found.\")"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        return cert"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_661f7e5b","line":41,"in_reply_to":"fa1b9901_b2d3a9d4","updated":"2015-08-20 16:41:57.000000000","message":"Done","commit_id":"c83ada63d876e570d79d574b00a1ba45386e341e"},{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"d99ba0e8695aa8f5af5acec518ce0ee014faeab2","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        return cert"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class FakeCertificate(object):"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def __init__(self, data, pub_key, cert_format):"},{"line_number":52,"context_line":"        self.data \u003d data"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_43b3bc4d","line":49,"updated":"2015-09-09 22:15:16.000000000","message":"It looks like this class is both a fake castellan certificate, and a fake cryptography certificate.\n\nThe \"format\" and \"get_encoded\" methods are for a castellan x_509 object: https://github.com/openstack/castellan/blob/master/castellan/common/objects/x_509.py#L36\n\nThe \"public_key\" method is for a cryptography x509 Certificate: https://cryptography.io/en/latest/x509/reference/#cryptography.x509.Certificate.public_key\n\nI think that two \"fake\" certificate classes should be made--one to mock a castellan certificate, and one to mock a cryptography certificate.","commit_id":"5d9fc7e02f0978d7d3f84b4c4241ed320ab5ace2"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"667dfc0f904b96919ed9b16ee826c34057563382","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        return cert"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class FakeCertificate(object):"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def __init__(self, data, pub_key, cert_format):"},{"line_number":52,"context_line":"        self.data \u003d data"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_2b0e8332","line":49,"in_reply_to":"da20952f_43b3bc4d","updated":"2015-09-10 14:31:21.000000000","message":"Done","commit_id":"5d9fc7e02f0978d7d3f84b4c4241ed320ab5ace2"},{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"d99ba0e8695aa8f5af5acec518ce0ee014faeab2","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    \"\"\"Test methods of signature_utils\"\"\""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def test_should_verify_signature(self):"},{"line_number":77,"context_line":"        image_props \u003d {\u0027signature_certificate_uuid\u0027: \u0027CERT_UUID\u0027,"},{"line_number":78,"context_line":"                       \u0027signature_hash_method\u0027: \u0027HASH_METHOD\u0027,"},{"line_number":79,"context_line":"                       \u0027signature\u0027: \u0027SIGNATURE\u0027,"},{"line_number":80,"context_line":"                       \u0027signature_key_type\u0027: \u0027SIG_KEY_TYPE\u0027}"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_23e6c844","line":77,"updated":"2015-09-09 22:15:16.000000000","message":"Since these values are no longer hardcoded in the signature_utils file (see https://github.com/openstack/glance/blob/master/glance/common/signature_utils.py#L71), should these also not be hardcoded?","commit_id":"5d9fc7e02f0978d7d3f84b4c4241ed320ab5ace2"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"667dfc0f904b96919ed9b16ee826c34057563382","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    \"\"\"Test methods of signature_utils\"\"\""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def test_should_verify_signature(self):"},{"line_number":77,"context_line":"        image_props \u003d {\u0027signature_certificate_uuid\u0027: \u0027CERT_UUID\u0027,"},{"line_number":78,"context_line":"                       \u0027signature_hash_method\u0027: \u0027HASH_METHOD\u0027,"},{"line_number":79,"context_line":"                       \u0027signature\u0027: \u0027SIGNATURE\u0027,"},{"line_number":80,"context_line":"                       \u0027signature_key_type\u0027: \u0027SIG_KEY_TYPE\u0027}"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_ab285386","line":77,"in_reply_to":"da20952f_23e6c844","updated":"2015-09-10 14:31:21.000000000","message":"Done","commit_id":"5d9fc7e02f0978d7d3f84b4c4241ed320ab5ace2"},{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"26257394e359eb9dc6dbcac9b07ee81f4a34ae76","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"# Required image property names"},{"line_number":32,"context_line":"(SIGNATURE, HASH_METHOD, KEY_TYPE, CERT_UUID) \u003d ("},{"line_number":33,"context_line":"    \u0027signature\u0027,"},{"line_number":34,"context_line":"    \u0027signature_hash_method\u0027,"},{"line_number":35,"context_line":"    \u0027signature_key_type\u0027,"},{"line_number":36,"context_line":"    \u0027signature_certificate_uuid\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"da20952f_71f54eeb","line":33,"updated":"2015-09-10 15:08:51.000000000","message":"I would recommend not hardcoding these, and instead using the values from the signature_utils file.","commit_id":"ed2901925e5b28907fa2a1e22535a1c911262ab7"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"9a59f8f01f29c72dfc420634ea43b92ee3cb3f2b","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"# Required image property names"},{"line_number":32,"context_line":"(SIGNATURE, HASH_METHOD, KEY_TYPE, CERT_UUID) \u003d ("},{"line_number":33,"context_line":"    \u0027signature\u0027,"},{"line_number":34,"context_line":"    \u0027signature_hash_method\u0027,"},{"line_number":35,"context_line":"    \u0027signature_key_type\u0027,"},{"line_number":36,"context_line":"    \u0027signature_certificate_uuid\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"da20952f_1f0e5932","line":33,"in_reply_to":"da20952f_71f54eeb","updated":"2015-09-10 15:51:27.000000000","message":"Done","commit_id":"ed2901925e5b28907fa2a1e22535a1c911262ab7"},{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"73a3f39972b47fb16b73a96a084de02d54c82e8b","unresolved":false,"context_lines":[{"line_number":323,"context_line":"    @mock.patch(\u0027castellan.key_manager.API\u0027, return_value\u003dFakeKeyManager())"},{"line_number":324,"context_line":"    def test_get_certificate(self, mock_key_manager_API, mock_load_cert):"},{"line_number":325,"context_line":"        cert_uuid \u003d \u0027valid_format_cert\u0027"},{"line_number":326,"context_line":"        expected_cert_data \u003d \u0027EXPECTED_VALUE\u0027"},{"line_number":327,"context_line":"        mock_load_cert.return_value \u003d expected_cert_data"},{"line_number":328,"context_line":"        self.assertEqual(expected_cert_data,"},{"line_number":329,"context_line":"                         signature_utils.get_certificate(None, cert_uuid))"}],"source_content_type":"text/x-python","patch_set":11,"id":"da20952f_d148dace","line":326,"updated":"2015-09-10 15:16:51.000000000","message":"would it make more sense for this return value to be a FakeCryptoCertificate object instead of \u0027EXPECTED_VALUE\u0027?","commit_id":"ed2901925e5b28907fa2a1e22535a1c911262ab7"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"9a59f8f01f29c72dfc420634ea43b92ee3cb3f2b","unresolved":false,"context_lines":[{"line_number":323,"context_line":"    @mock.patch(\u0027castellan.key_manager.API\u0027, return_value\u003dFakeKeyManager())"},{"line_number":324,"context_line":"    def test_get_certificate(self, mock_key_manager_API, mock_load_cert):"},{"line_number":325,"context_line":"        cert_uuid \u003d \u0027valid_format_cert\u0027"},{"line_number":326,"context_line":"        expected_cert_data \u003d \u0027EXPECTED_VALUE\u0027"},{"line_number":327,"context_line":"        mock_load_cert.return_value \u003d expected_cert_data"},{"line_number":328,"context_line":"        self.assertEqual(expected_cert_data,"},{"line_number":329,"context_line":"                         signature_utils.get_certificate(None, cert_uuid))"}],"source_content_type":"text/x-python","patch_set":11,"id":"da20952f_bf1c0d6b","line":326,"in_reply_to":"da20952f_d148dace","updated":"2015-09-10 15:51:27.000000000","message":"Done","commit_id":"ed2901925e5b28907fa2a1e22535a1c911262ab7"}]}
