)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"848ac4866fd809b849373de3699c4f0296eb7739","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Rodrigo Duarte Sousa \u003crduartes@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-10-26 09:51:07 -0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"PCI-DSS tests"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds a first set of tests for the PCI-DSS feature."},{"line_number":10,"context_line":"It also fixes the behavior of the \"test_users\" API tests to"},{"line_number":11,"context_line":"handle the environment with the PCI-DSS settings enabled."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"7a77a97e_f33600e6","line":9,"range":{"start_line":7,"start_character":0,"end_line":9,"end_character":61},"updated":"2016-11-16 18:08:19.000000000","message":"Why not specifically say what you are testing:\n* user account lockout\n* password history requirements","commit_id":"9587c48b61422f48f9125d3210b9cbc58cd3cfae"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"c53d8a5e3f1cfd5a44d617c93981ffd5b08d0ad5","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Rodrigo Duarte Sousa \u003crduartes@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-10-26 09:51:07 -0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"PCI-DSS tests"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds a first set of tests for the PCI-DSS feature."},{"line_number":10,"context_line":"It also fixes the behavior of the \"test_users\" API tests to"},{"line_number":11,"context_line":"handle the environment with the PCI-DSS settings enabled."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"7a77a97e_9132fd5d","line":9,"range":{"start_line":7,"start_character":0,"end_line":9,"end_character":61},"in_reply_to":"7a77a97e_f33600e6","updated":"2016-11-17 13:14:30.000000000","message":"Done","commit_id":"9587c48b61422f48f9125d3210b9cbc58cd3cfae"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"848ac4866fd809b849373de3699c4f0296eb7739","unresolved":false,"context_lines":[{"line_number":7,"context_line":"PCI-DSS tests"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds a first set of tests for the PCI-DSS feature."},{"line_number":10,"context_line":"It also fixes the behavior of the \"test_users\" API tests to"},{"line_number":11,"context_line":"handle the environment with the PCI-DSS settings enabled."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"We also rely on the \"security_compliance\" feature flag, a follow"},{"line_number":14,"context_line":"up patch in DevStack enables the required settings in"},{"line_number":15,"context_line":"keystone at the same time that sets the configs for the tempest"},{"line_number":16,"context_line":"tests and enables the feature flag."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I59fba9391f77dba026cce79d5fec9cb32c6bb72c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"7a77a97e_93586c34","line":16,"range":{"start_line":10,"start_character":0,"end_line":16,"end_character":35},"updated":"2016-11-16 18:08:19.000000000","message":"Separate patch?","commit_id":"9587c48b61422f48f9125d3210b9cbc58cd3cfae"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"c53d8a5e3f1cfd5a44d617c93981ffd5b08d0ad5","unresolved":false,"context_lines":[{"line_number":7,"context_line":"PCI-DSS tests"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds a first set of tests for the PCI-DSS feature."},{"line_number":10,"context_line":"It also fixes the behavior of the \"test_users\" API tests to"},{"line_number":11,"context_line":"handle the environment with the PCI-DSS settings enabled."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"We also rely on the \"security_compliance\" feature flag, a follow"},{"line_number":14,"context_line":"up patch in DevStack enables the required settings in"},{"line_number":15,"context_line":"keystone at the same time that sets the configs for the tempest"},{"line_number":16,"context_line":"tests and enables the feature flag."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I59fba9391f77dba026cce79d5fec9cb32c6bb72c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"7a77a97e_91191dda","line":16,"range":{"start_line":10,"start_character":0,"end_line":16,"end_character":35},"in_reply_to":"7a77a97e_93586c34","updated":"2016-11-17 13:14:30.000000000","message":"yes, a devstack one (the devstack change has a Depends-On to this one)","commit_id":"9587c48b61422f48f9125d3210b9cbc58cd3cfae"}],"tempest/api/identity/admin/v3/test_users.py":[{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"848ac4866fd809b849373de3699c4f0296eb7739","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                          password\u003dpassword)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        # If we wait the required time, the user account will be unlocked"},{"line_number":188,"context_line":"        time.sleep(CONF.identity.user_lockout_duration + 1)"},{"line_number":189,"context_line":"        self.token.auth(user_id\u003duser_id, password\u003dpassword)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    @testtools.skipUnless(CONF.identity_feature_enabled.security_compliance,"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a77a97e_30906eec","line":188,"range":{"start_line":188,"start_character":8,"end_line":188,"end_character":18},"updated":"2016-11-16 18:08:19.000000000","message":"We shouldn\u0027t sleep here as it will cause a delay running these tests. Instead user freezegun to test the lockout duration.","commit_id":"9587c48b61422f48f9125d3210b9cbc58cd3cfae"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"63f7f2c333cf8f7d795491c422e92af7c8bd1a2a","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                          password\u003dpassword)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        # If we wait the required time, the user account will be unlocked"},{"line_number":188,"context_line":"        time.sleep(CONF.identity.user_lockout_duration + 1)"},{"line_number":189,"context_line":"        self.token.auth(user_id\u003duser_id, password\u003dpassword)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    @testtools.skipUnless(CONF.identity_feature_enabled.security_compliance,"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a77a97e_7903b10d","line":188,"range":{"start_line":188,"start_character":8,"end_line":188,"end_character":18},"in_reply_to":"7a77a97e_30906eec","updated":"2016-11-16 18:49:51.000000000","message":"can freezegun update the system time? Thought it would just mock the time response.","commit_id":"9587c48b61422f48f9125d3210b9cbc58cd3cfae"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"d224d8c0215108bd311eb45f43486970c1c2d06f","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                          password\u003dpassword)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        # If we wait the required time, the user account will be unlocked"},{"line_number":188,"context_line":"        time.sleep(CONF.identity.user_lockout_duration + 1)"},{"line_number":189,"context_line":"        self.token.auth(user_id\u003duser_id, password\u003dpassword)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    @testtools.skipUnless(CONF.identity_feature_enabled.security_compliance,"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a77a97e_dfabc5d4","line":188,"range":{"start_line":188,"start_character":8,"end_line":188,"end_character":18},"in_reply_to":"7a77a97e_7903b10d","updated":"2016-11-16 19:40:04.000000000","message":"yes, see this test as an example:\nhttps://github.com/openstack/keystone/blob/master/keystone/tests/unit/identity/test_backend_sql.py#L375-L398","commit_id":"9587c48b61422f48f9125d3210b9cbc58cd3cfae"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"eba07a6c7b23ed4b86f7ab62a60e3056b0734575","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                          password\u003dpassword)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        # If we wait the required time, the user account will be unlocked"},{"line_number":188,"context_line":"        time.sleep(CONF.identity.user_lockout_duration + 1)"},{"line_number":189,"context_line":"        self.token.auth(user_id\u003duser_id, password\u003dpassword)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    @testtools.skipUnless(CONF.identity_feature_enabled.security_compliance,"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a77a97e_b1fc5973","line":188,"range":{"start_line":188,"start_character":8,"end_line":188,"end_character":18},"in_reply_to":"7a77a97e_dfabc5d4","updated":"2016-11-17 13:13:31.000000000","message":"according to [1], it mocks the time - here we are executing an integration test, so we actually want to see the time passing.\n\n[1] https://github.com/spulec/freezegun#freezegun-let-your-python-tests-travel-through-time","commit_id":"9587c48b61422f48f9125d3210b9cbc58cd3cfae"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"d6f2092fae7aeff89d790a73013e24177364e733","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import testtools"},{"line_number":17,"context_line":"import time"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from tempest.api.identity import base"}],"source_content_type":"text/x-python","patch_set":18,"id":"3a71b18c_ed68028a","line":16,"updated":"2016-12-02 11:50:04.000000000","message":"testtools is not part of Python stdlib so the import should not be grouped here.","commit_id":"eeb14bf2be7f10ab7dc859da7dbd6a581733a2e1"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"60a858b2cec533323573f5585abbc0866c9f1b0f","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import testtools"},{"line_number":17,"context_line":"import time"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from tempest.api.identity import base"}],"source_content_type":"text/x-python","patch_set":18,"id":"3a71b18c_5e6facc4","line":16,"in_reply_to":"3a71b18c_ed68028a","updated":"2016-12-04 17:27:57.000000000","message":"Done","commit_id":"eeb14bf2be7f10ab7dc859da7dbd6a581733a2e1"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b8adb6942fefa757ab08b69dd32ebafbebc40087","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    @testtools.skipUnless(CONF.identity_feature_enabled.security_compliance,"},{"line_number":163,"context_line":"                          \u0027Security compliance not available.\u0027)"},{"line_number":164,"context_line":"    @test.idempotent_id(\u0027a7ad8bbf-2cff-4520-8c1d-96332e151658\u0027)"},{"line_number":165,"context_line":"    def test_user_account_lockout(self):"},{"line_number":166,"context_line":"        password \u003d self.os.credentials.password"},{"line_number":167,"context_line":"        user_id \u003d self.os.credentials.user_id"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"5a74a57a_de1c147a","line":165,"range":{"start_line":165,"start_character":8,"end_line":165,"end_character":33},"updated":"2016-11-23 03:55:22.000000000","message":"nice comments for this test","commit_id":"eeb14bf2be7f10ab7dc859da7dbd6a581733a2e1"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"60a858b2cec533323573f5585abbc0866c9f1b0f","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    @testtools.skipUnless(CONF.identity_feature_enabled.security_compliance,"},{"line_number":163,"context_line":"                          \u0027Security compliance not available.\u0027)"},{"line_number":164,"context_line":"    @test.idempotent_id(\u0027a7ad8bbf-2cff-4520-8c1d-96332e151658\u0027)"},{"line_number":165,"context_line":"    def test_user_account_lockout(self):"},{"line_number":166,"context_line":"        password \u003d self.os.credentials.password"},{"line_number":167,"context_line":"        user_id \u003d self.os.credentials.user_id"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"3a71b18c_3e78308f","line":165,"range":{"start_line":165,"start_character":8,"end_line":165,"end_character":33},"in_reply_to":"3a71b18c_adca8a6c","updated":"2016-12-04 17:27:57.000000000","message":"Done","commit_id":"eeb14bf2be7f10ab7dc859da7dbd6a581733a2e1"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"d6f2092fae7aeff89d790a73013e24177364e733","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    @testtools.skipUnless(CONF.identity_feature_enabled.security_compliance,"},{"line_number":163,"context_line":"                          \u0027Security compliance not available.\u0027)"},{"line_number":164,"context_line":"    @test.idempotent_id(\u0027a7ad8bbf-2cff-4520-8c1d-96332e151658\u0027)"},{"line_number":165,"context_line":"    def test_user_account_lockout(self):"},{"line_number":166,"context_line":"        password \u003d self.os.credentials.password"},{"line_number":167,"context_line":"        user_id \u003d self.os.credentials.user_id"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"3a71b18c_adca8a6c","line":165,"range":{"start_line":165,"start_character":8,"end_line":165,"end_character":33},"in_reply_to":"5a74a57a_de1c147a","updated":"2016-12-02 11:50:04.000000000","message":"Why does this test need the \u0027admin\u0027 creds ? I mean, this test is in the \u0027identity/admin\u0027 folder. It would be better to move it in the \u0027non admin\u0027 folder if possible.","commit_id":"eeb14bf2be7f10ab7dc859da7dbd6a581733a2e1"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b8adb6942fefa757ab08b69dd32ebafbebc40087","unresolved":false,"context_lines":[{"line_number":191,"context_line":"    @testtools.skipUnless(CONF.identity_feature_enabled.security_compliance,"},{"line_number":192,"context_line":"                          \u0027Security compliance not available.\u0027)"},{"line_number":193,"context_line":"    @test.idempotent_id(\u0027568cd46c-ee6c-4ab4-a33a-d3791931979e\u0027)"},{"line_number":194,"context_line":"    def test_password_history_not_enforced_in_admin_reset(self):"},{"line_number":195,"context_line":"        old_password \u003d self.os.credentials.password"},{"line_number":196,"context_line":"        user_id \u003d self.os.credentials.user_id"},{"line_number":197,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"5a74a57a_811ddd68","line":194,"range":{"start_line":194,"start_character":8,"end_line":194,"end_character":57},"updated":"2016-11-23 03:55:22.000000000","message":"this test feels weak, without any PCI options this will pass just fine. we should try to catch an exception when the user tries to re-use a password","commit_id":"eeb14bf2be7f10ab7dc859da7dbd6a581733a2e1"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"b98d354d13aa2a1acbf8c8504d8418e4abc28a28","unresolved":false,"context_lines":[{"line_number":191,"context_line":"    @testtools.skipUnless(CONF.identity_feature_enabled.security_compliance,"},{"line_number":192,"context_line":"                          \u0027Security compliance not available.\u0027)"},{"line_number":193,"context_line":"    @test.idempotent_id(\u0027568cd46c-ee6c-4ab4-a33a-d3791931979e\u0027)"},{"line_number":194,"context_line":"    def test_password_history_not_enforced_in_admin_reset(self):"},{"line_number":195,"context_line":"        old_password \u003d self.os.credentials.password"},{"line_number":196,"context_line":"        user_id \u003d self.os.credentials.user_id"},{"line_number":197,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"5a74a57a_594f2792","line":194,"range":{"start_line":194,"start_character":8,"end_line":194,"end_character":57},"in_reply_to":"5a74a57a_811ddd68","updated":"2016-11-23 14:09:24.000000000","message":"think this is the purpose of this test: show that PCI settings don\u0027t affect the admin API when resetting passwords.","commit_id":"eeb14bf2be7f10ab7dc859da7dbd6a581733a2e1"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"d9c4879c1642512fe083ca7cbe4b16caaea66da6","unresolved":false,"context_lines":[{"line_number":164,"context_line":"    @test.idempotent_id(\u0027568cd46c-ee6c-4ab4-a33a-d3791931979e\u0027)"},{"line_number":165,"context_line":"    def test_password_history_not_enforced_in_admin_reset(self):"},{"line_number":166,"context_line":"        old_password \u003d self.os.credentials.password"},{"line_number":167,"context_line":"        user_id \u003d self.os.credentials.user_id"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        new_password \u003d data_utils.rand_password()"},{"line_number":170,"context_line":"        self.users_client.update_user(user_id, password\u003dnew_password)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a71b18c_604a1b85","line":167,"updated":"2016-12-09 12:08:05.000000000","message":"I\u0027m not totally happy with this. In case of dynamic credentials, this is probably fine, even though it may still have an impact on other tests within this class. \nIn case of pre provisioned credentials it is likely that admin credentials are not there, so this test would not be executed, but it can\u0027t be excluded.\n\nI think it would be best for this test to create a disposable user and reset it\u0027s password instead, so in no case it would risk impacting other tests is something goes wrong.","commit_id":"82b2024e39dd30a29c34bed252eac8c6caccfdbc"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4833faab51abe2c91ddc75cc731e72484cfa7f7a","unresolved":false,"context_lines":[{"line_number":164,"context_line":"    @test.idempotent_id(\u0027568cd46c-ee6c-4ab4-a33a-d3791931979e\u0027)"},{"line_number":165,"context_line":"    def test_password_history_not_enforced_in_admin_reset(self):"},{"line_number":166,"context_line":"        old_password \u003d self.os.credentials.password"},{"line_number":167,"context_line":"        user_id \u003d self.os.credentials.user_id"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        new_password \u003d data_utils.rand_password()"},{"line_number":170,"context_line":"        self.users_client.update_user(user_id, password\u003dnew_password)"}],"source_content_type":"text/x-python","patch_set":20,"id":"1a6eadb0_8f4a3f82","line":167,"in_reply_to":"3a71b18c_604a1b85","updated":"2016-12-13 13:24:54.000000000","message":"I get your opinion, but we are safe here. If this test doesn\u0027t work, we have a severe bug in keystone - so leaving an inconsistent state here doesn\u0027t matter since it would break everything anyway.","commit_id":"82b2024e39dd30a29c34bed252eac8c6caccfdbc"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"d9c4879c1642512fe083ca7cbe4b16caaea66da6","unresolved":false,"context_lines":[{"line_number":177,"context_line":"            self.users_client.update_user(user_id, password\u003dnew_password)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        # Restore original password"},{"line_number":180,"context_line":"        self.users_client.update_user(user_id, password\u003dold_password)"},{"line_number":181,"context_line":"        # Check authorization with old password"},{"line_number":182,"context_line":"        self.token.auth(user_id\u003duser_id, password\u003dold_password)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a71b18c_20302301","line":180,"updated":"2016-12-09 12:08:05.000000000","message":"This is ok, but you should also schedule this via addCleanup right after the password update (L170), because if something fails between L170 and L180 then your password won\u0027t be restored.\n\nIf you implement the disposable user approach I suggested, it would not be necessary since the user would be discarded anyways, but you would then need an addCleanup to delete the user after it was created.","commit_id":"82b2024e39dd30a29c34bed252eac8c6caccfdbc"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4833faab51abe2c91ddc75cc731e72484cfa7f7a","unresolved":false,"context_lines":[{"line_number":177,"context_line":"            self.users_client.update_user(user_id, password\u003dnew_password)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        # Restore original password"},{"line_number":180,"context_line":"        self.users_client.update_user(user_id, password\u003dold_password)"},{"line_number":181,"context_line":"        # Check authorization with old password"},{"line_number":182,"context_line":"        self.token.auth(user_id\u003duser_id, password\u003dold_password)"}],"source_content_type":"text/x-python","patch_set":20,"id":"1a6eadb0_cf0c3797","line":180,"in_reply_to":"3a71b18c_20302301","updated":"2016-12-13 13:24:54.000000000","message":"Added a cleanup to be safe, but left this line here so we can test the authentication on the next line.","commit_id":"82b2024e39dd30a29c34bed252eac8c6caccfdbc"}],"tempest/api/identity/v2/test_users.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"d6f2092fae7aeff89d790a73013e24177364e733","unresolved":false,"context_lines":[{"line_number":25,"context_line":"CONF \u003d config.CONF"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class IdentityUsersTest(base.BaseIdentityV2Test):"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @classmethod"},{"line_number":31,"context_line":"    def resource_setup(cls):"}],"source_content_type":"text/x-python","patch_set":18,"id":"3a71b18c_6d1072a9","line":28,"updated":"2016-12-02 11:50:04.000000000","message":"I am not sure why you have to change these tests given that these tests are for Keystone V2 None of the PCI-DSS features should apply to keystone v2 right ?","commit_id":"eeb14bf2be7f10ab7dc859da7dbd6a581733a2e1"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"60a858b2cec533323573f5585abbc0866c9f1b0f","unresolved":false,"context_lines":[{"line_number":25,"context_line":"CONF \u003d config.CONF"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class IdentityUsersTest(base.BaseIdentityV2Test):"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @classmethod"},{"line_number":31,"context_line":"    def resource_setup(cls):"}],"source_content_type":"text/x-python","patch_set":18,"id":"3a71b18c_1e753497","line":28,"in_reply_to":"3a71b18c_6d1072a9","updated":"2016-12-04 17:27:57.000000000","message":"no... they apply, the PCI-DSS stuff is enforced at the backend level, so it happens to affect both v2.0 and v3 APIs. We are testing only in the v3 ones, since the spec was intended for it and v2.0 is deprecated.","commit_id":"eeb14bf2be7f10ab7dc859da7dbd6a581733a2e1"},{"author":{"_account_id":23184,"name":"DavidPurcell","email":"d.purcell222@gmail.com","username":"DavidPurcell"},"change_message_id":"25dfd1edcbd5a493819eb8ee746a0edc72d5bf1c","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        # Clear auth restores the original credentials and deletes"},{"line_number":71,"context_line":"        # cached auth data"},{"line_number":72,"context_line":"        self.non_admin_users_client.auth_provider.clear_auth()"},{"line_number":73,"context_line":"        # NOTE(lbragstad): Fernet tokens are not subsecond aware and"},{"line_number":74,"context_line":"        # Keystone should only be precise to the second. Sleep to ensure we"},{"line_number":75,"context_line":"        # are passing the second boundary before attempting to"},{"line_number":76,"context_line":"        # authenticate."},{"line_number":77,"context_line":"        time.sleep(1)"},{"line_number":78,"context_line":"        self.non_admin_users_client.auth_provider.set_auth()"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @test.idempotent_id(\u0027165859c9-277f-4124-9479-a7d1627b0ca7\u0027)"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a6eadb0_0baa1519","line":77,"range":{"start_line":73,"start_character":8,"end_line":77,"end_character":21},"updated":"2016-12-15 22:18:45.000000000","message":"This helped me solve an entirely different issue, thanks.","commit_id":"2d78e8ed478e7304c850158254f0746bdc47bb73"}],"tempest/api/identity/v3/test_users.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"8577940de2cbcfa8c3c68bb73fe348119d9e9337","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import testtools"},{"line_number":17,"context_line":"import time"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from tempest.api.identity import base"}],"source_content_type":"text/x-python","patch_set":19,"id":"3a71b18c_1f4a7d55","line":16,"updated":"2016-12-05 11:33:32.000000000","message":"I am really sorry to insist on this testtools import :) It should be on its own dedicated import group.\n\nI insist because this will inevitably lead to someone sending a patch just to change that, so I rather we fix it now. This might sound stupid, sorry. (use the inline edit in gerrit, it works well for this trivial change).","commit_id":"a1c5aef1912b31d247b90c3a9b6a458d51d13ce9"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"2b0c30ae852cd5c65ad1e012fe826b03c2ab2eaa","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import testtools"},{"line_number":17,"context_line":"import time"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from tempest.api.identity import base"}],"source_content_type":"text/x-python","patch_set":19,"id":"3a71b18c_ffcdc185","line":16,"in_reply_to":"3a71b18c_1f4a7d55","updated":"2016-12-05 11:44:11.000000000","message":"np, I really thought I had fixed that :)","commit_id":"a1c5aef1912b31d247b90c3a9b6a458d51d13ce9"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"d9c4879c1642512fe083ca7cbe4b16caaea66da6","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        new_pass1 \u003d data_utils.rand_password()"},{"line_number":110,"context_line":"        new_pass2 \u003d data_utils.rand_password()"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        self.addCleanup(self._restore_password, old_pass, new_pass2)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        # Update password"},{"line_number":115,"context_line":"        self._update_password(original_password\u003dold_pass, password\u003dnew_pass1)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a71b18c_9b85e85a","line":112,"updated":"2016-12-09 12:08:05.000000000","message":"This will work only if user_unique_last_password_count \u003d\u003d 2, which is the default value, but which can be overwritten. If it is set to 3 for instance, the test will go through ok, but the cleanup will fail, leaving the user with a different password set.","commit_id":"82b2024e39dd30a29c34bed252eac8c6caccfdbc"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4833faab51abe2c91ddc75cc731e72484cfa7f7a","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        new_pass1 \u003d data_utils.rand_password()"},{"line_number":110,"context_line":"        new_pass2 \u003d data_utils.rand_password()"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        self.addCleanup(self._restore_password, old_pass, new_pass2)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        # Update password"},{"line_number":115,"context_line":"        self._update_password(original_password\u003dold_pass, password\u003dnew_pass1)"}],"source_content_type":"text/x-python","patch_set":20,"id":"1a6eadb0_af1d3b75","line":112,"in_reply_to":"3a71b18c_9b85e85a","updated":"2016-12-13 13:24:54.000000000","message":"the _restore_password() method makes sure it clears up the history... see lines 63-67.","commit_id":"82b2024e39dd30a29c34bed252eac8c6caccfdbc"}],"tempest/config.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b8adb6942fefa757ab08b69dd32ebafbebc40087","unresolved":false,"context_lines":[{"line_number":218,"context_line":"                     \"entry all which indicates every extension is enabled. \""},{"line_number":219,"context_line":"                     \"Empty list indicates all extensions are disabled. \""},{"line_number":220,"context_line":"                     \"To get the list of extensions run: \u0027keystone discover\u0027\"),"},{"line_number":221,"context_line":"    # TODO(rodrigods): Remove the reseller flag when Kilo and Liberty is end"},{"line_number":222,"context_line":"    # of life."},{"line_number":223,"context_line":"    cfg.BoolOpt(\u0027reseller\u0027,"},{"line_number":224,"context_line":"                default\u003dFalse,"},{"line_number":225,"context_line":"                help\u003d\u0027Does the environment support reseller?\u0027),"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a74a57a_a148195d","line":222,"range":{"start_line":221,"start_character":0,"end_line":222,"end_character":14},"updated":"2016-11-23 03:55:22.000000000","message":"you should remove this in a separate patch ;)","commit_id":"eeb14bf2be7f10ab7dc859da7dbd6a581733a2e1"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"d9c4879c1642512fe083ca7cbe4b16caaea66da6","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                default\u003dFalse,"},{"line_number":173,"context_line":"                help\u003d\"Whether keystone identity v3 policy required \""},{"line_number":174,"context_line":"                     \"a domain scoped token to use admin APIs\"),"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    # Security Compliance (PCI-DSS)"},{"line_number":177,"context_line":"    cfg.IntOpt(\u0027user_lockout_failure_attempts\u0027,"},{"line_number":178,"context_line":"               default\u003d2,"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a71b18c_9d5880fc","line":175,"updated":"2016-12-09 12:08:05.000000000","message":"NIT: extra white line","commit_id":"82b2024e39dd30a29c34bed252eac8c6caccfdbc"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4833faab51abe2c91ddc75cc731e72484cfa7f7a","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                default\u003dFalse,"},{"line_number":173,"context_line":"                help\u003d\"Whether keystone identity v3 policy required \""},{"line_number":174,"context_line":"                     \"a domain scoped token to use admin APIs\"),"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    # Security Compliance (PCI-DSS)"},{"line_number":177,"context_line":"    cfg.IntOpt(\u0027user_lockout_failure_attempts\u0027,"},{"line_number":178,"context_line":"               default\u003d2,"}],"source_content_type":"text/x-python","patch_set":20,"id":"1a6eadb0_ef17334f","line":175,"in_reply_to":"3a71b18c_9d5880fc","updated":"2016-12-13 13:24:54.000000000","message":"Done","commit_id":"82b2024e39dd30a29c34bed252eac8c6caccfdbc"}]}
