)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"1818612f50930fddfe94cd887b3053203cbe6371","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix keystone.tests.unit.test_v3_oauth1.MaliciousOAuth1Tests"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Config options \u0027access_token_duration\u0027 and \u0027request_token_duration\u0027 only"},{"line_number":10,"context_line":"allow value \u003e\u003d 0, so override with value 1 and use hacking \u0027time.sleep(1.1)\u0027"},{"line_number":11,"context_line":"to wait token to be expired. This commit also enhance condition check"},{"line_number":12,"context_line":"for these two options."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5ff73747_87e2ce00","line":10,"range":{"start_line":10,"start_character":43,"end_line":10,"end_character":75},"updated":"2017-05-03 09:41:29.000000000","message":"you changed it to use freezegun","commit_id":"3f21b441ff9103f2a1e91dc87bae9b64d3f39ef1"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"969bdcdff0188470dba1273ba81a0d9a866a1b36","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix keystone.tests.unit.test_v3_oauth1.MaliciousOAuth1Tests"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Config options \u0027access_token_duration\u0027 and \u0027request_token_duration\u0027 only"},{"line_number":10,"context_line":"allow value \u003e\u003d 0, so override with value 1 and use hacking \u0027time.sleep(1.1)\u0027"},{"line_number":11,"context_line":"to wait token to be expired. This commit also enhance condition check"},{"line_number":12,"context_line":"for these two options."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5ff73747_4773a64e","line":10,"range":{"start_line":10,"start_character":43,"end_line":10,"end_character":75},"in_reply_to":"5ff73747_87e2ce00","updated":"2017-05-03 09:51:06.000000000","message":"Done","commit_id":"3f21b441ff9103f2a1e91dc87bae9b64d3f39ef1"}],"keystone/oauth1/backends/sql.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d2648eab4638719e0272ca9dd9035e977542febe","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        request_token_id \u003d uuid.uuid4().hex"},{"line_number":153,"context_line":"        request_token_secret \u003d uuid.uuid4().hex"},{"line_number":154,"context_line":"        expiry_date \u003d None"},{"line_number":155,"context_line":"        if request_token_duration \u003e 0:"},{"line_number":156,"context_line":"            now \u003d timeutils.utcnow()"},{"line_number":157,"context_line":"            future \u003d now + datetime.timedelta(seconds\u003drequest_token_duration)"},{"line_number":158,"context_line":"            expiry_date \u003d utils.isotime(future, subsecond\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_402dc7a6","line":155,"updated":"2017-05-03 13:32:25.000000000","message":"Isn\u0027t this redundant? If request_token_duration is an integer, the statement should evaluate to False if it\u0027s 0:\n\n  \u003e\u003e\u003e i \u003d 0\n  \u003e\u003e\u003e if i:\n  ...     print \u0027here\u0027\n  ... \n  \u003e\u003e\u003e if i \u003e 0:\n  ...     print \u0027here\u0027\n  ... \n  \u003e\u003e\u003e i \u003d 1\n  \u003e\u003e\u003e if i:\n  ...     print \u0027here\u0027\n  ... \n  here\n  \u003e\u003e\u003e if i \u003e 0:\n  ...     print \u0027here\u0027\n  ... \n  here","commit_id":"9ebaa3611938f28e89961b2a03574537d0bcc412"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"3a817e9b4a48e016e29d2f830eab85397e647603","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        request_token_id \u003d uuid.uuid4().hex"},{"line_number":153,"context_line":"        request_token_secret \u003d uuid.uuid4().hex"},{"line_number":154,"context_line":"        expiry_date \u003d None"},{"line_number":155,"context_line":"        if request_token_duration \u003e 0:"},{"line_number":156,"context_line":"            now \u003d timeutils.utcnow()"},{"line_number":157,"context_line":"            future \u003d now + datetime.timedelta(seconds\u003drequest_token_duration)"},{"line_number":158,"context_line":"            expiry_date \u003d utils.isotime(future, subsecond\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_63aa0dd3","line":155,"in_reply_to":"5ff73747_402dc7a6","updated":"2017-05-03 13:40:39.000000000","message":"when request_token_duration equals -1, it will pass the check  before I changed -1 to 1. so we\u0027d better make it explicitly","commit_id":"9ebaa3611938f28e89961b2a03574537d0bcc412"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"4b11a5916e0a82a7cd91289ac486518737f06f00","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        request_token_id \u003d uuid.uuid4().hex"},{"line_number":153,"context_line":"        request_token_secret \u003d uuid.uuid4().hex"},{"line_number":154,"context_line":"        expiry_date \u003d None"},{"line_number":155,"context_line":"        if request_token_duration \u003e 0:"},{"line_number":156,"context_line":"            now \u003d timeutils.utcnow()"},{"line_number":157,"context_line":"            future \u003d now + datetime.timedelta(seconds\u003drequest_token_duration)"},{"line_number":158,"context_line":"            expiry_date \u003d utils.isotime(future, subsecond\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_0330e906","line":155,"in_reply_to":"5ff73747_63aa0dd3","updated":"2017-05-03 13:53:32.000000000","message":"Aha - sure. Good catch.","commit_id":"9ebaa3611938f28e89961b2a03574537d0bcc412"}],"keystone/tests/unit/test_v3_oauth1.py":[{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"8c931871cde49b874f4712bb1ba96c6429e6845f","unresolved":false,"context_lines":[{"line_number":862,"context_line":"        url \u003d self._authorize_request_token(request_key)"},{"line_number":863,"context_line":"        body \u003d {\u0027roles\u0027: [{\u0027id\u0027: self.role_id}]}"},{"line_number":864,"context_line":"        # NOTE(gcb) hacking wait for more than request_token_duration"},{"line_number":865,"context_line":"        time.sleep(1.1)"},{"line_number":866,"context_line":"        self.put(url, body\u003dbody, expected_status\u003dhttp_client.UNAUTHORIZED)"},{"line_number":867,"context_line":""},{"line_number":868,"context_line":"    def test_expired_creating_keystone_token(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_6bcd9283","line":865,"updated":"2017-04-30 14:29:22.000000000","message":"It would be better to use freezegun, see an example here: http://git.openstack.org/cgit/openstack/keystone/tree/keystone/tests/unit/identity/test_backend_sql.py#n572","commit_id":"9e1d71dd8b361153cb780a23067569675460abd3"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"d0f707468de65edd9fae45a6b00fa8004f151d8a","unresolved":false,"context_lines":[{"line_number":862,"context_line":"        url \u003d self._authorize_request_token(request_key)"},{"line_number":863,"context_line":"        body \u003d {\u0027roles\u0027: [{\u0027id\u0027: self.role_id}]}"},{"line_number":864,"context_line":"        # NOTE(gcb) hacking wait for more than request_token_duration"},{"line_number":865,"context_line":"        time.sleep(1.1)"},{"line_number":866,"context_line":"        self.put(url, body\u003dbody, expected_status\u003dhttp_client.UNAUTHORIZED)"},{"line_number":867,"context_line":""},{"line_number":868,"context_line":"    def test_expired_creating_keystone_token(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_60790c92","line":865,"in_reply_to":"5ff73747_6bcd9283","updated":"2017-05-02 11:26:17.000000000","message":"Not sure this method can mock the time when we call remote method with self.put.","commit_id":"9e1d71dd8b361153cb780a23067569675460abd3"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"1818612f50930fddfe94cd887b3053203cbe6371","unresolved":false,"context_lines":[{"line_number":865,"context_line":"            url \u003d self._authorize_request_token(request_key)"},{"line_number":866,"context_line":"            body \u003d {\u0027roles\u0027: [{\u0027id\u0027: self.role_id}]}"},{"line_number":867,"context_line":"            frozen_time.tick(delta\u003ddatetime.timedelta("},{"line_number":868,"context_line":"                seconds\u003dCONF.oauth1.request_token_duration + 1))"},{"line_number":869,"context_line":"            self.put(url, body\u003dbody, expected_status\u003dhttp_client.UNAUTHORIZED)"},{"line_number":870,"context_line":""},{"line_number":871,"context_line":"    def test_expired_creating_keystone_token(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5ff73747_07d7de25","line":868,"updated":"2017-05-03 09:41:29.000000000","message":"I think you could just say seconds\u003d2 here","commit_id":"3f21b441ff9103f2a1e91dc87bae9b64d3f39ef1"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"969bdcdff0188470dba1273ba81a0d9a866a1b36","unresolved":false,"context_lines":[{"line_number":865,"context_line":"            url \u003d self._authorize_request_token(request_key)"},{"line_number":866,"context_line":"            body \u003d {\u0027roles\u0027: [{\u0027id\u0027: self.role_id}]}"},{"line_number":867,"context_line":"            frozen_time.tick(delta\u003ddatetime.timedelta("},{"line_number":868,"context_line":"                seconds\u003dCONF.oauth1.request_token_duration + 1))"},{"line_number":869,"context_line":"            self.put(url, body\u003dbody, expected_status\u003dhttp_client.UNAUTHORIZED)"},{"line_number":870,"context_line":""},{"line_number":871,"context_line":"    def test_expired_creating_keystone_token(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5ff73747_e782b200","line":868,"in_reply_to":"5ff73747_07d7de25","updated":"2017-05-03 09:51:06.000000000","message":"Done","commit_id":"3f21b441ff9103f2a1e91dc87bae9b64d3f39ef1"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"a83ffa205e8b7af02b9014a394fb0c1a84a40c1e","unresolved":false,"context_lines":[{"line_number":909,"context_line":"            url, headers, body \u003d self._get_oauth_token(self.consumer,"},{"line_number":910,"context_line":"                                                       self.access_token)"},{"line_number":911,"context_line":"            frozen_time.tick(delta\u003ddatetime.timedelta("},{"line_number":912,"context_line":"                seconds\u003dCONF.oauth1.access_token_duration + 1))"},{"line_number":913,"context_line":"            self.post(url, headers\u003dheaders, body\u003dbody,"},{"line_number":914,"context_line":"                      expected_status\u003dhttp_client.UNAUTHORIZED)"},{"line_number":915,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_60f56383","line":912,"updated":"2017-05-03 13:25:16.000000000","message":"Sorry, this should use seconds\u003d2 as well to be consistent","commit_id":"9ebaa3611938f28e89961b2a03574537d0bcc412"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"3a817e9b4a48e016e29d2f830eab85397e647603","unresolved":false,"context_lines":[{"line_number":909,"context_line":"            url, headers, body \u003d self._get_oauth_token(self.consumer,"},{"line_number":910,"context_line":"                                                       self.access_token)"},{"line_number":911,"context_line":"            frozen_time.tick(delta\u003ddatetime.timedelta("},{"line_number":912,"context_line":"                seconds\u003dCONF.oauth1.access_token_duration + 1))"},{"line_number":913,"context_line":"            self.post(url, headers\u003dheaders, body\u003dbody,"},{"line_number":914,"context_line":"                      expected_status\u003dhttp_client.UNAUTHORIZED)"},{"line_number":915,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_e3317da4","line":912,"in_reply_to":"5ff73747_40e387a5","updated":"2017-05-03 13:40:39.000000000","message":"okay, keeping the older format make sense to me.","commit_id":"9ebaa3611938f28e89961b2a03574537d0bcc412"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"33c8bd8fece5c843d16064a5919d77093a6d9b74","unresolved":false,"context_lines":[{"line_number":909,"context_line":"            url, headers, body \u003d self._get_oauth_token(self.consumer,"},{"line_number":910,"context_line":"                                                       self.access_token)"},{"line_number":911,"context_line":"            frozen_time.tick(delta\u003ddatetime.timedelta("},{"line_number":912,"context_line":"                seconds\u003dCONF.oauth1.access_token_duration + 1))"},{"line_number":913,"context_line":"            self.post(url, headers\u003dheaders, body\u003dbody,"},{"line_number":914,"context_line":"                      expected_status\u003dhttp_client.UNAUTHORIZED)"},{"line_number":915,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_40e387a5","line":912,"in_reply_to":"5ff73747_60f56383","updated":"2017-05-03 13:28:21.000000000","message":"I don\u0027t mind having this in the older format because it easier to figure out what\u0027s going on. If we do change this to 2 second, it should be well commented. Otherwise it may appear arbitrary and hard for others to understand. Also - the test could fail if the default value of CONF.oauth1.access_token_duration ever changes anything greater than 1.","commit_id":"9ebaa3611938f28e89961b2a03574537d0bcc412"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b5cece18869054fe30aefe827f5d75f619905027","unresolved":false,"context_lines":[{"line_number":839,"context_line":"                      resp_data[\u0027error\u0027][\u0027message\u0027])"},{"line_number":840,"context_line":""},{"line_number":841,"context_line":"    def test_expired_authorizing_request_token(self):"},{"line_number":842,"context_line":"        self.config_fixture.config(group\u003d\u0027oauth1\u0027, request_token_duration\u003d-1)"},{"line_number":843,"context_line":""},{"line_number":844,"context_line":"        consumer \u003d self._create_single_consumer()"},{"line_number":845,"context_line":"        consumer_id \u003d consumer[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_de077818","side":"PARENT","line":842,"updated":"2017-05-03 13:55:53.000000000","message":"For other reviewers, this is actually invalid because the minimum value of request_token_duration and access_token_duration is 0, so setting this to -1 isn\u0027t something that\u0027s realistic in a deployment.","commit_id":"e18923daa1e3bdf4ee444ebe44e6dd11e65676ec"}]}
