)]}'
{"keystone/tests/unit/token/test_fernet_provider.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"a23ce68d20635c879b703f09c5f5967ab60a2632","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            )"},{"line_number":236,"context_line":"        )"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def test_strings_are_url_safe(self):"},{"line_number":239,"context_line":"        s \u003d common.random_urlsafe_str()"},{"line_number":240,"context_line":"        self.assertEqual(s, urllib.parse.quote_plus(s))"},{"line_number":241,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_cb48ca8d","line":238,"updated":"2016-10-17 18:49:18.000000000","message":"It\u0027s a little strange to move these tests here. They are not fernet specific at all","commit_id":"2d8675631e26b02f6f5ccddf5b1357ce4a2a12b6"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c73f862bdc02b590211ddd3b2b93cf3483f5e246","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            )"},{"line_number":236,"context_line":"        )"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def test_strings_are_url_safe(self):"},{"line_number":239,"context_line":"        s \u003d common.random_urlsafe_str()"},{"line_number":240,"context_line":"        self.assertEqual(s, urllib.parse.quote_plus(s))"},{"line_number":241,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_1abe60ff","line":238,"in_reply_to":"fa6399be_08c005e0","updated":"2016-10-18 18:11:20.000000000","message":"Possibly, but this is definitely the wrong place.","commit_id":"2d8675631e26b02f6f5ccddf5b1357ce4a2a12b6"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"4b8b388b5ba8807fc9c44ecb7f17ecc3bfdcb6c6","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            )"},{"line_number":236,"context_line":"        )"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def test_strings_are_url_safe(self):"},{"line_number":239,"context_line":"        s \u003d common.random_urlsafe_str()"},{"line_number":240,"context_line":"        self.assertEqual(s, urllib.parse.quote_plus(s))"},{"line_number":241,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_6e53496d","line":238,"in_reply_to":"fa6399be_08c005e0","updated":"2016-10-17 20:39:52.000000000","message":"random_urlsafe_str() is implemented in common.py and is test_common.py.\n\nrandom_urlsafe_str_to_bytes() is now a method under class BasePayLoad and the test is under TestPayloads.","commit_id":"2d8675631e26b02f6f5ccddf5b1357ce4a2a12b6"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"57a4fddbb956c9ba3844ac93c0f750880f790986","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            )"},{"line_number":236,"context_line":"        )"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def test_strings_are_url_safe(self):"},{"line_number":239,"context_line":"        s \u003d common.random_urlsafe_str()"},{"line_number":240,"context_line":"        self.assertEqual(s, urllib.parse.quote_plus(s))"},{"line_number":241,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_da24e8c7","line":238,"in_reply_to":"fa6399be_1abe60ff","updated":"2016-10-18 18:28:24.000000000","message":"Done","commit_id":"2d8675631e26b02f6f5ccddf5b1357ce4a2a12b6"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1b64de03f8519d743353faa7860f8e5894ce3c48","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            )"},{"line_number":236,"context_line":"        )"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def test_strings_are_url_safe(self):"},{"line_number":239,"context_line":"        s \u003d common.random_urlsafe_str()"},{"line_number":240,"context_line":"        self.assertEqual(s, urllib.parse.quote_plus(s))"},{"line_number":241,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_08c005e0","line":238,"in_reply_to":"fa6399be_46402f36","updated":"2016-10-17 19:48:29.000000000","message":"These could be moved into a keystone/tests/unit/token/test_common.py module.","commit_id":"2d8675631e26b02f6f5ccddf5b1357ce4a2a12b6"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"b66a212221ecef92bea10d8da24c862901ee4269","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            )"},{"line_number":236,"context_line":"        )"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def test_strings_are_url_safe(self):"},{"line_number":239,"context_line":"        s \u003d common.random_urlsafe_str()"},{"line_number":240,"context_line":"        self.assertEqual(s, urllib.parse.quote_plus(s))"},{"line_number":241,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_46402f36","line":238,"in_reply_to":"fa6399be_cb48ca8d","updated":"2016-10-17 18:52:48.000000000","message":"True, however random_url_safe_str_to_bytes() is only being used by token_formatters.","commit_id":"2d8675631e26b02f6f5ccddf5b1357ce4a2a12b6"}],"keystone/token/providers/common.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c3eb5860f3c820a90655d5c3e547a4a3772cf820","unresolved":false,"context_lines":[{"line_number":40,"context_line":"def default_expire_time():"},{"line_number":41,"context_line":"    \"\"\"Determine when a fresh token should expire."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    Expiration time varies based on configuration (see ``[token] expiration``)."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    :returns: a naive UTC datetime.datetime object"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_145bcc2f","line":43,"updated":"2016-10-17 16:02:07.000000000","message":"nit: \n\n  ``CONF [token] expiration``","commit_id":"559db1af620bcbcdb4c23140f9c6580ed74f1377"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1b64de03f8519d743353faa7860f8e5894ce3c48","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    return base64.urlsafe_b64encode(uuid.uuid4().bytes)[:-2].decode(\u0027utf-8\u0027)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"def build_audit_info(parent_audit_id):"},{"line_number":66,"context_line":"    \"\"\"Build the audit data for a token."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    If ``parent_audit_id`` is None, the list will be one element in length"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_48167d56","line":65,"updated":"2016-10-17 19:48:29.000000000","message":"This should be a kwarg defaulting to None according to the code below. \n\n\n  def build_audit_info(parent_audit_id\u003dNone):\n\nOtherwise we would be calling this like:\n\n  common.build_audit_info(None)\n\nWhich doesn\u0027t seem like a pattern we want to establish(?).","commit_id":"2d8675631e26b02f6f5ccddf5b1357ce4a2a12b6"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"4b8b388b5ba8807fc9c44ecb7f17ecc3bfdcb6c6","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    return base64.urlsafe_b64encode(uuid.uuid4().bytes)[:-2].decode(\u0027utf-8\u0027)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"def build_audit_info(parent_audit_id):"},{"line_number":66,"context_line":"    \"\"\"Build the audit data for a token."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    If ``parent_audit_id`` is None, the list will be one element in length"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_0b8c7f34","line":65,"in_reply_to":"fa6399be_48167d56","updated":"2016-10-17 20:39:52.000000000","message":"Done","commit_id":"2d8675631e26b02f6f5ccddf5b1357ce4a2a12b6"}],"keystone/token/providers/fernet/token_formatters.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1b64de03f8519d743353faa7860f8e5894ce3c48","unresolved":false,"context_lines":[{"line_number":40,"context_line":"TIMESTAMP_END \u003d 9"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def base64_encode(s):"},{"line_number":44,"context_line":"    \"\"\"Encode a URL-safe string."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    :type s: six.text_type"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_4b72f7ae","line":43,"updated":"2016-10-17 19:48:29.000000000","message":"We could take this one step further and just make these class methods of BasePayload, like we do for attempt_convert_uuid_hex_to_bytes.","commit_id":"2d8675631e26b02f6f5ccddf5b1357ce4a2a12b6"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"4b8b388b5ba8807fc9c44ecb7f17ecc3bfdcb6c6","unresolved":false,"context_lines":[{"line_number":40,"context_line":"TIMESTAMP_END \u003d 9"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def base64_encode(s):"},{"line_number":44,"context_line":"    \"\"\"Encode a URL-safe string."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    :type s: six.text_type"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_ce5e1512","line":43,"in_reply_to":"fa6399be_4b72f7ae","updated":"2016-10-17 20:39:52.000000000","message":"Good suggestion, I like it.","commit_id":"2d8675631e26b02f6f5ccddf5b1357ce4a2a12b6"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1b64de03f8519d743353faa7860f8e5894ce3c48","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    return base64.urlsafe_b64encode(s).decode(\u0027utf-8\u0027).rstrip(\u0027\u003d\u0027)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"def random_urlsafe_str_to_bytes(s):"},{"line_number":56,"context_line":"    \"\"\"Convert a string from :func:`random_urlsafe_str()` to six.binary_type."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    :type s: six.text_type"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_ab61d3d5","line":55,"updated":"2016-10-17 19:48:29.000000000","message":"Same comment here","commit_id":"2d8675631e26b02f6f5ccddf5b1357ce4a2a12b6"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"4b8b388b5ba8807fc9c44ecb7f17ecc3bfdcb6c6","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    return base64.urlsafe_b64encode(s).decode(\u0027utf-8\u0027).rstrip(\u0027\u003d\u0027)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"def random_urlsafe_str_to_bytes(s):"},{"line_number":56,"context_line":"    \"\"\"Convert a string from :func:`random_urlsafe_str()` to six.binary_type."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    :type s: six.text_type"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_ee9919d2","line":55,"in_reply_to":"fa6399be_ab61d3d5","updated":"2016-10-17 20:39:52.000000000","message":"Done","commit_id":"2d8675631e26b02f6f5ccddf5b1357ce4a2a12b6"}]}
