)]}'
{"keystone/tests/test_backend.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6b3834a5ea278adffc883976403f6113c2790fed","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from keystone import tests"},{"line_number":30,"context_line":"from keystone.tests import default_fixtures"},{"line_number":31,"context_line":"from keystone.tests import filtering"},{"line_number":32,"context_line":"from keystone.tests.unit.common import test_utils"},{"line_number":33,"context_line":"from keystone.token import provider"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a890539_517b7dbd","line":32,"updated":"2014-11-24 23:26:33.000000000","message":"there shouldn\u0027t be a dependency from unit tests to test_backend. Move the shared piece out into a different module.","commit_id":"02d954cd639d438094b97a9e5dd86d657fff156c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"667787503a99b38ec37735e2e73a302061adeb3f","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from keystone import tests"},{"line_number":30,"context_line":"from keystone.tests import default_fixtures"},{"line_number":31,"context_line":"from keystone.tests import filtering"},{"line_number":32,"context_line":"from keystone.tests.unit.common import test_utils"},{"line_number":33,"context_line":"from keystone.token import provider"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a890539_d2e1862b","line":32,"in_reply_to":"5a890539_517b7dbd","updated":"2014-12-01 18:45:42.000000000","message":"Done","commit_id":"02d954cd639d438094b97a9e5dd86d657fff156c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fc845b77800f6f71f1c208c4d0c62e3592859885","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from keystone import tests"},{"line_number":30,"context_line":"from keystone.tests import default_fixtures"},{"line_number":31,"context_line":"from keystone.tests import filtering"},{"line_number":32,"context_line":"from keystone.tests import utils as test_utils"},{"line_number":33,"context_line":"from keystone.token import provider"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_8ce931e5","line":32,"updated":"2014-12-04 01:21:56.000000000","message":"I\u0027d prefer it if the import wasn\u0027t renamed.","commit_id":"e53556dd9a41848dd871c640e710e3f761aff41c"}],"keystone/tests/unit/common/test_utils.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"d2db30990262a41d2766f97b3cc52c36f5fca5a5","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from keystone import tests"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class TestPasswordHashing(tests.BaseTestCase):"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    def setUp(self):"},{"line_number":22,"context_line":"        super(TestPasswordHashing, self).setUp()"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_0213cab8","side":"PARENT","line":19,"updated":"2014-11-12 16:12:09.000000000","message":"were these tests renamed? why are they all clobbered together?","commit_id":"b05a540e52fde324791eb07ad36e6d59c608a9c9"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7f9900988870d9bb50843a3a75b43e426d593c9b","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from keystone import tests"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class TestPasswordHashing(tests.BaseTestCase):"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    def setUp(self):"},{"line_number":22,"context_line":"        super(TestPasswordHashing, self).setUp()"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_0d005b00","side":"PARENT","line":19,"in_reply_to":"5a890539_0213cab8","updated":"2014-11-12 16:21:42.000000000","message":"Ah, my mistake. It looks like test_utils.py lives in two places but tests the same module. I\u0027ll try and collapse them into on module and move them to keystone/tests/unit/common.","commit_id":"b05a540e52fde324791eb07ad36e6d59c608a9c9"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a99152b85736a7907fab5985457bb639e07810e2","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def test_that_we_can_verify_a_password_against_a_hash(self):"},{"line_number":27,"context_line":"        self.assertTrue(utils.check_password(self.password,"},{"line_number":28,"context_line":"                                             self.hashed_password))"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def test_that_an_incorrect_password_fails_to_validate(self):"},{"line_number":31,"context_line":"        bad_password \u003d uuid.uuid4().hex"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_48a6d111","side":"PARENT","line":28,"updated":"2014-11-12 16:48:57.000000000","message":"This case is tested by `test_hash`","commit_id":"b05a540e52fde324791eb07ad36e6d59c608a9c9"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a99152b85736a7907fab5985457bb639e07810e2","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        bad_password \u003d uuid.uuid4().hex"},{"line_number":32,"context_line":"        self.assertFalse(utils.check_password(bad_password,"},{"line_number":33,"context_line":"                                              self.hashed_password))"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def test_that_a_hash_can_not_be_validated_against_a_hash(self):"},{"line_number":36,"context_line":"        # NOTE(dstanek): Bug 1279849 reported a problem where passwords"},{"line_number":37,"context_line":"        # were not being hashed if they already looked like a hash. This"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_68a9cdde","side":"PARENT","line":34,"updated":"2014-11-12 16:48:57.000000000","message":"this test case is covered by `test_hash`","commit_id":"b05a540e52fde324791eb07ad36e6d59c608a9c9"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"54a232e9fb2e384c79445ac0ad9157687752aa08","unresolved":false,"context_lines":[{"line_number":15,"context_line":"# Copyright 2012 Justin Santa Barbara"},{"line_number":16,"context_line":"# All Rights Reserved."},{"line_number":17,"context_line":"#"},{"line_number":18,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":19,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":20,"context_line":"#    a copy of the License at"},{"line_number":21,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_164ccb41","line":18,"updated":"2014-11-13 15:31:46.000000000","message":"the copyright headers seem to be clobbered together","commit_id":"9d1e86e2a8ac3e25b1400289bc93a7b30d53af6b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"121374022e704d9e43ae3898bbeadee941335a82","unresolved":false,"context_lines":[{"line_number":15,"context_line":"# Copyright 2012 Justin Santa Barbara"},{"line_number":16,"context_line":"# All Rights Reserved."},{"line_number":17,"context_line":"#"},{"line_number":18,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":19,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":20,"context_line":"#    a copy of the License at"},{"line_number":21,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a890539_6723c0a7","line":18,"in_reply_to":"5a890539_164ccb41","updated":"2014-11-20 15:38:13.000000000","message":"Done","commit_id":"9d1e86e2a8ac3e25b1400289bc93a7b30d53af6b"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fc845b77800f6f71f1c208c4d0c62e3592859885","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        self.assertTrue(utils.check_password(self.password,"},{"line_number":28,"context_line":"                                             self.hashed_password))"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def test_that_an_incorrect_password_fails_to_validate(self):"},{"line_number":31,"context_line":"        bad_password \u003d uuid.uuid4().hex"},{"line_number":32,"context_line":"        self.assertFalse(utils.check_password(bad_password,"},{"line_number":33,"context_line":"                                              self.hashed_password))"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_8cd3f1ff","side":"PARENT","line":30,"updated":"2014-12-04 01:21:56.000000000","message":"I don\u0027t understand why this is changing any existing tests.","commit_id":"2dacb1ea15931c96c497374be8f6ff093101c90e"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"9a99c2d2d571efb74182f28503c9afa5dcfc1424","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        self.assertTrue(utils.check_password(self.password,"},{"line_number":28,"context_line":"                                             self.hashed_password))"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def test_that_an_incorrect_password_fails_to_validate(self):"},{"line_number":31,"context_line":"        bad_password \u003d uuid.uuid4().hex"},{"line_number":32,"context_line":"        self.assertFalse(utils.check_password(bad_password,"},{"line_number":33,"context_line":"                                              self.hashed_password))"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_93d14059","side":"PARENT","line":30,"in_reply_to":"5a890539_8cd3f1ff","updated":"2014-12-04 13:13:30.000000000","message":"Because keystone/tests/test_utils.py [1] was testing the same stuff as keystone/tests/unit/test_utils.py [2]. \n\nBoth modules tested the same utility code, so instead of just renaming keystone/tests/test_utils.py to keystone/tests/unit/test_utils.py it would probably be better to consolidate them such that this is only one module unit testing keystone/common/utils.py\n\n[1] https://github.com/openstack/keystone/blob/96b1326bcf9a650acf98a9d7f1835133a58b8c86/keystone/tests/test_utils.py\n[2] https://github.com/openstack/keystone/blob/96b1326bcf9a650acf98a9d7f1835133a58b8c86/keystone/tests/unit/common/test_utils.py","commit_id":"2dacb1ea15931c96c497374be8f6ff093101c90e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6bc317da688ce88c3e4c5a0625de1c859fd704f5","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        self.assertTrue(utils.check_password(self.password,"},{"line_number":28,"context_line":"                                             self.hashed_password))"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def test_that_an_incorrect_password_fails_to_validate(self):"},{"line_number":31,"context_line":"        bad_password \u003d uuid.uuid4().hex"},{"line_number":32,"context_line":"        self.assertFalse(utils.check_password(bad_password,"},{"line_number":33,"context_line":"                                              self.hashed_password))"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_a2656a1f","side":"PARENT","line":30,"in_reply_to":"5a890539_93d14059","updated":"2014-12-10 22:33:17.000000000","message":"I\u0027m fine with consolidating them, but it would be easier to review if it was committed separately.","commit_id":"2dacb1ea15931c96c497374be8f6ff093101c90e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fc845b77800f6f71f1c208c4d0c62e3592859885","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo.serialization import jsonutils"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from keystone.common import utils"},{"line_number":19,"context_line":"from keystone import config"},{"line_number":20,"context_line":"from keystone import exception"},{"line_number":21,"context_line":"from keystone import service"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_ec7f1515","line":18,"updated":"2014-12-04 01:21:56.000000000","message":"If a part is going to rename one of the imports I\u0027d prefer it was the import that wasn\u0027t in the same module, so change this to \"import utils as common_utils\" and change line 23 to \"import utils\".","commit_id":"e53556dd9a41848dd871c640e710e3f761aff41c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"9a99c2d2d571efb74182f28503c9afa5dcfc1424","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo.serialization import jsonutils"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from keystone.common import utils"},{"line_number":19,"context_line":"from keystone import config"},{"line_number":20,"context_line":"from keystone import exception"},{"line_number":21,"context_line":"from keystone import service"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_333b2c39","line":18,"in_reply_to":"5a890539_ec7f1515","updated":"2014-12-04 13:13:30.000000000","message":"Done","commit_id":"e53556dd9a41848dd871c640e710e3f761aff41c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fc845b77800f6f71f1c208c4d0c62e3592859885","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        verified \u003d utils.verify_length_and_trunc_password(normal_password)"},{"line_number":45,"context_line":"        self.assertEqual(normal_password, verified)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def test_that_a_hash_cannot_be_validated_against_a_hash(self):"},{"line_number":48,"context_line":"        # NOTE(dstanek): Bug 1279849 reported a problem where passwords"},{"line_number":49,"context_line":"        # were not being hashed if they already looked like a hash. This"},{"line_number":50,"context_line":"        # would allow someone to hash their password ahead of time"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_0cb1c1df","line":47,"updated":"2014-12-04 01:21:56.000000000","message":"the name was fine before, and fixing the typo is an unrelated change.","commit_id":"e53556dd9a41848dd871c640e710e3f761aff41c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"9a99c2d2d571efb74182f28503c9afa5dcfc1424","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        verified \u003d utils.verify_length_and_trunc_password(normal_password)"},{"line_number":45,"context_line":"        self.assertEqual(normal_password, verified)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def test_that_a_hash_cannot_be_validated_against_a_hash(self):"},{"line_number":48,"context_line":"        # NOTE(dstanek): Bug 1279849 reported a problem where passwords"},{"line_number":49,"context_line":"        # were not being hashed if they already looked like a hash. This"},{"line_number":50,"context_line":"        # would allow someone to hash their password ahead of time"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_734134a5","line":47,"in_reply_to":"5a890539_0cb1c1df","updated":"2014-12-04 13:13:30.000000000","message":"Done","commit_id":"e53556dd9a41848dd871c640e710e3f761aff41c"}]}
