)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"7d3fe573218182d1b43f24e35df2c9e5f669fd40","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch removes password history validation from the update_user"},{"line_number":10,"context_line":"(admin password reset) backend method."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"backport: newton"},{"line_number":13,"context_line":"Change-Id: Ic567841703c1da495131cbb052636bbe90d54819"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3a98d1f4_3e851ace","line":12,"updated":"2016-10-04 00:07:11.000000000","message":"need a bug to track this","commit_id":"3957261232aef54f80746c1ba1894abe24bc67a8"}],"keystone/identity/backends/sql.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"d2dea674a9ef5489e3bb2a4adae07b069255a7ca","unresolved":false,"context_lines":[{"line_number":157,"context_line":"    def update_user(self, user_id, user):"},{"line_number":158,"context_line":"        with sql.session_for_write() as session:"},{"line_number":159,"context_line":"            user_ref \u003d self._get_user(session, user_id)"},{"line_number":160,"context_line":"            self._validate_password_history(user[\u0027password\u0027], user_ref)"},{"line_number":161,"context_line":"            old_user_dict \u003d user_ref.to_dict()"},{"line_number":162,"context_line":"            user \u003d utils.hash_user_password(user)"},{"line_number":163,"context_line":"            for k in user:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a98d1f4_8ccfa8af","line":160,"range":{"start_line":160,"start_character":12,"end_line":160,"end_character":71},"updated":"2016-09-29 06:07:46.000000000","message":"we probably want to remove this entirely as this is the admin request","commit_id":"331b673f925d7412f99d6e400286e0d0363c23c4"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"9adcc86b2aa358b912bd7cb7231f50c8464cbf65","unresolved":false,"context_lines":[{"line_number":157,"context_line":"    def update_user(self, user_id, user):"},{"line_number":158,"context_line":"        with sql.session_for_write() as session:"},{"line_number":159,"context_line":"            user_ref \u003d self._get_user(session, user_id)"},{"line_number":160,"context_line":"            self._validate_password_history(user[\u0027password\u0027], user_ref)"},{"line_number":161,"context_line":"            old_user_dict \u003d user_ref.to_dict()"},{"line_number":162,"context_line":"            user \u003d utils.hash_user_password(user)"},{"line_number":163,"context_line":"            for k in user:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a98d1f4_492499ae","line":160,"range":{"start_line":160,"start_character":12,"end_line":160,"end_character":71},"in_reply_to":"3a98d1f4_8ccfa8af","updated":"2016-09-29 13:29:42.000000000","message":"Yeah, I just threw this patch up so I wouldn\u0027t forget it. Still need to think through the requirements here.","commit_id":"331b673f925d7412f99d6e400286e0d0363c23c4"}],"keystone/identity/backends/sql_model.py":[{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"852d85d448bcd95edc97fe1bf16b618da53820f7","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        now \u003d datetime.datetime.utcnow()"},{"line_number":110,"context_line":"        if not self.local_user:"},{"line_number":111,"context_line":"            self.local_user \u003d LocalUser()"},{"line_number":112,"context_line":"        # truncate extra passwords"},{"line_number":113,"context_line":"        if self.local_user.passwords:"},{"line_number":114,"context_line":"            unique_cnt \u003d CONF.security_compliance.unique_last_password_count"},{"line_number":115,"context_line":"            self.local_user.passwords \u003d self.local_user.passwords[-unique_cnt:]"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a98d1f4_a2f6768c","line":112,"range":{"start_line":112,"start_character":8,"end_line":112,"end_character":34},"updated":"2016-10-03 20:26:11.000000000","message":"Removing the validation from update_user, but we still want to truncate any extra passwords.","commit_id":"3957261232aef54f80746c1ba1894abe24bc67a8"}],"keystone/tests/unit/identity/test_backend_sql.py":[{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"852d85d448bcd95edc97fe1bf16b618da53820f7","unresolved":false,"context_lines":[{"line_number":154,"context_line":"            return user_ref"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"class PasswordHistoryValidationTests(test_backend_sql.SqlTests):"},{"line_number":158,"context_line":"    def setUp(self):"},{"line_number":159,"context_line":"        super(PasswordHistoryValidationTests, self).setUp()"},{"line_number":160,"context_line":"        self.passwords \u003d [uuid.uuid4().hex,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a98d1f4_02156a9a","side":"PARENT","line":157,"range":{"start_line":157,"start_character":6,"end_line":157,"end_character":36},"updated":"2016-10-03 20:26:11.000000000","message":"Had to change many of the unit tests from update_user to change_password; did some small refactoring.","commit_id":"cd23e776b7631d2f7b9465ef29789fd354f7d66a"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"7d3fe573218182d1b43f24e35df2c9e5f669fd40","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                          user[\u0027id\u0027],"},{"line_number":176,"context_line":"                          user)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def test_validate_password_history_via_self_service_change_password(self):"},{"line_number":179,"context_line":"        user \u003d self._create_user(self.passwords[0])"},{"line_number":180,"context_line":"        # Attempt to change password to a unique password"},{"line_number":181,"context_line":"        self.identity_api.change_password(self.make_request(),"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a98d1f4_9ef1ce97","side":"PARENT","line":178,"range":{"start_line":178,"start_character":8,"end_line":178,"end_character":71},"updated":"2016-10-04 00:07:11.000000000","message":"why removing the assertions that check the change to the same password? I believe the test was better before","commit_id":"cd23e776b7631d2f7b9465ef29789fd354f7d66a"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"d48801ff8577404402fb34517b6b79df2db27802","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                          user[\u0027id\u0027],"},{"line_number":176,"context_line":"                          user)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def test_validate_password_history_via_self_service_change_password(self):"},{"line_number":179,"context_line":"        user \u003d self._create_user(self.passwords[0])"},{"line_number":180,"context_line":"        # Attempt to change password to a unique password"},{"line_number":181,"context_line":"        self.identity_api.change_password(self.make_request(),"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a98d1f4_fa9d7b0a","side":"PARENT","line":178,"range":{"start_line":178,"start_character":8,"end_line":178,"end_character":71},"in_reply_to":"3a98d1f4_9ef1ce97","updated":"2016-10-04 03:23:09.000000000","message":"Good point, added changing to the same password to test_validate_password_history_with_invalid_password test.","commit_id":"cd23e776b7631d2f7b9465ef29789fd354f7d66a"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"22ec56cba8ceeb4bee6a39354862ea6d6e52cc4a","unresolved":false,"context_lines":[{"line_number":213,"context_line":"                          original_password\u003dpasswords[1],"},{"line_number":214,"context_line":"                          new_password\u003dpasswords[0])"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def test_disable_password_history_and_repeat_same_password(self):"},{"line_number":217,"context_line":"        self.config_fixture.config(group\u003d\u0027security_compliance\u0027,"},{"line_number":218,"context_line":"                                   unique_last_password_count\u003d1)"},{"line_number":219,"context_line":"        password \u003d uuid.uuid4().hex"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a98d1f4_03e70dad","line":216,"range":{"start_line":216,"start_character":8,"end_line":216,"end_character":62},"updated":"2016-10-04 14:03:05.000000000","message":"not related: this test would be better if started checking the failure in changing the password and after disabling the setting, doing the same actions","commit_id":"432fa4acd6d6297fdfd32de86a043488b87c7c43"}]}
