)]}'
{"keystone/cmd/doctor/security_compliance.py":[{"author":{"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},"change_message_id":"0f1a74f66e50ffd64e2481e50b02fc2fe8447ed2","unresolved":false,"context_lines":[{"line_number":18,"context_line":"CONF \u003d keystone.conf.CONF"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"def symptom_minimum_password_age_greater_than_expires_days():"},{"line_number":22,"context_line":"    \"\"\"Minimum password age should be less than the password expires days."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    If the minimum password age is greater than or equal to the password"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a71b18c_64705aa5","line":21,"updated":"2016-12-09 19:30:16.000000000","message":"Doesn\u0027t this make the name inaccurate? As it implies equality is ok, but it isn\u0027t.","commit_id":"e4ecc046c8f7adf385a15b74ba16faeeaa19979b"},{"author":{"_account_id":18464,"name":"Richard Avelar","email":"csravelar@gmail.com","username":"razone"},"change_message_id":"71a00e5fccb5ea0252916c405936f8eab793a4e8","unresolved":false,"context_lines":[{"line_number":18,"context_line":"CONF \u003d keystone.conf.CONF"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"def symptom_minimum_password_age_greater_than_expires_days():"},{"line_number":22,"context_line":"    \"\"\"Minimum password age should be less than the password expires days."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    If the minimum password age is greater than or equal to the password"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a71b18c_d8902df0","line":21,"in_reply_to":"3a71b18c_64705aa5","updated":"2016-12-09 21:15:42.000000000","message":"Looking at the naming convention of other symptoms, the point of the long and descriptive names if so that they display to the user just exactly what caused the symptom to be raised. The title of method is part of what gets used to relay the information of the symptom back to the user. Therefore, when this symptom is raised the user will read that the \"...minimum_password_age_greater_than_expires_days\" followed by \n\nMinimum password age should be less than the password expires days.\n\nas do the other symptom methods do","commit_id":"e4ecc046c8f7adf385a15b74ba16faeeaa19979b"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"951d00153620eab2061a3e994a0a2413a82e05a9","unresolved":false,"context_lines":[{"line_number":18,"context_line":"CONF \u003d keystone.conf.CONF"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"def symptom_minimum_password_age_greater_than_expires_days():"},{"line_number":22,"context_line":"    \"\"\"Minimum password age should be less than the password expires days."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    If the minimum password age is greater than or equal to the password"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_7c5f24e5","line":21,"in_reply_to":"3a71b18c_d8902df0","updated":"2016-12-14 13:01:18.000000000","message":"Exactly, I have some difficult to understand the method name too, but the explanation given by Richard is perfect.","commit_id":"e4ecc046c8f7adf385a15b74ba16faeeaa19979b"}],"keystone/tests/unit/test_cli.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"e8d0f3dc36a91f51ff7899862344fb76c56a88b2","unresolved":false,"context_lines":[{"line_number":792,"context_line":""},{"line_number":793,"context_line":"    def test_symptom_min_pass_age_should_be_less_than_pass_expires_days(self):"},{"line_number":794,"context_line":"        symptom_name \u003d (\"symptom_minimum_password_age_should_be_\""},{"line_number":795,"context_line":"                        \"less_than_password_expires_days\")"},{"line_number":796,"context_line":"        # Symptom Detected: Minimum password age is greater than the password"},{"line_number":797,"context_line":"        # expires days. Both values are positive integers greater than zero."},{"line_number":798,"context_line":"        self.config_fixture.config(group\u003d\u0027security_compliance\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a71b18c_f25d3d16","line":795,"updated":"2016-12-08 19:18:58.000000000","message":"haha","commit_id":"9e8775c2f64ddf062eb735cac532facaa0a93bdb"},{"author":{"_account_id":18464,"name":"Richard Avelar","email":"csravelar@gmail.com","username":"razone"},"change_message_id":"b6d9931179224dc3036e53b623ed2b0a5af8641a","unresolved":false,"context_lines":[{"line_number":792,"context_line":""},{"line_number":793,"context_line":"    def test_symptom_min_pass_age_should_be_less_than_pass_expires_days(self):"},{"line_number":794,"context_line":"        symptom_name \u003d (\"symptom_minimum_password_age_should_be_\""},{"line_number":795,"context_line":"                        \"less_than_password_expires_days\")"},{"line_number":796,"context_line":"        # Symptom Detected: Minimum password age is greater than the password"},{"line_number":797,"context_line":"        # expires days. Both values are positive integers greater than zero."},{"line_number":798,"context_line":"        self.config_fixture.config(group\u003d\u0027security_compliance\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a71b18c_0cc5193b","line":795,"in_reply_to":"3a71b18c_f25d3d16","updated":"2016-12-09 16:34:55.000000000","message":"Tell me about it.","commit_id":"9e8775c2f64ddf062eb735cac532facaa0a93bdb"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"e8d0f3dc36a91f51ff7899862344fb76c56a88b2","unresolved":false,"context_lines":[{"line_number":802,"context_line":"        self.assertTrue(getattr(security_compliance, symptom_name)())"},{"line_number":803,"context_line":""},{"line_number":804,"context_line":"        # Symptom Detected: Minimum password age is equal to the password"},{"line_number":805,"context_line":"        # expires days. Both values are positive integers greater than zero."},{"line_number":806,"context_line":"        self.config_fixture.config(group\u003d\u0027security_compliance\u0027,"},{"line_number":807,"context_line":"                                   minimum_password_age\u003d1)"},{"line_number":808,"context_line":"        self.config_fixture.config(group\u003d\u0027security_compliance\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a71b18c_9241693c","line":805,"updated":"2016-12-08 19:18:58.000000000","message":"These could all be broken out into their own specific tests for the sake of granularity and readability. Especially if we are creating a dedicated test case/class for it.","commit_id":"9e8775c2f64ddf062eb735cac532facaa0a93bdb"},{"author":{"_account_id":18464,"name":"Richard Avelar","email":"csravelar@gmail.com","username":"razone"},"change_message_id":"b6d9931179224dc3036e53b623ed2b0a5af8641a","unresolved":false,"context_lines":[{"line_number":802,"context_line":"        self.assertTrue(getattr(security_compliance, symptom_name)())"},{"line_number":803,"context_line":""},{"line_number":804,"context_line":"        # Symptom Detected: Minimum password age is equal to the password"},{"line_number":805,"context_line":"        # expires days. Both values are positive integers greater than zero."},{"line_number":806,"context_line":"        self.config_fixture.config(group\u003d\u0027security_compliance\u0027,"},{"line_number":807,"context_line":"                                   minimum_password_age\u003d1)"},{"line_number":808,"context_line":"        self.config_fixture.config(group\u003d\u0027security_compliance\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a71b18c_4cdd5113","line":805,"in_reply_to":"3a71b18c_32633543","updated":"2016-12-09 16:34:55.000000000","message":"Done","commit_id":"9e8775c2f64ddf062eb735cac532facaa0a93bdb"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"b1234a18f35f1de382d87661d64b8f6ee5a8392b","unresolved":false,"context_lines":[{"line_number":802,"context_line":"        self.assertTrue(getattr(security_compliance, symptom_name)())"},{"line_number":803,"context_line":""},{"line_number":804,"context_line":"        # Symptom Detected: Minimum password age is equal to the password"},{"line_number":805,"context_line":"        # expires days. Both values are positive integers greater than zero."},{"line_number":806,"context_line":"        self.config_fixture.config(group\u003d\u0027security_compliance\u0027,"},{"line_number":807,"context_line":"                                   minimum_password_age\u003d1)"},{"line_number":808,"context_line":"        self.config_fixture.config(group\u003d\u0027security_compliance\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a71b18c_32633543","line":805,"in_reply_to":"3a71b18c_9241693c","updated":"2016-12-08 19:33:51.000000000","message":"++","commit_id":"9e8775c2f64ddf062eb735cac532facaa0a93bdb"},{"author":{"_account_id":18464,"name":"Richard Avelar","email":"csravelar@gmail.com","username":"razone"},"change_message_id":"b6d9931179224dc3036e53b623ed2b0a5af8641a","unresolved":false,"context_lines":[{"line_number":802,"context_line":"        self.assertTrue(getattr(security_compliance, symptom_name)())"},{"line_number":803,"context_line":""},{"line_number":804,"context_line":"        # Symptom Detected: Minimum password age is equal to the password"},{"line_number":805,"context_line":"        # expires days. Both values are positive integers greater than zero."},{"line_number":806,"context_line":"        self.config_fixture.config(group\u003d\u0027security_compliance\u0027,"},{"line_number":807,"context_line":"                                   minimum_password_age\u003d1)"},{"line_number":808,"context_line":"        self.config_fixture.config(group\u003d\u0027security_compliance\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a71b18c_2cc0152a","line":805,"in_reply_to":"3a71b18c_9241693c","updated":"2016-12-09 16:34:55.000000000","message":"Done","commit_id":"9e8775c2f64ddf062eb735cac532facaa0a93bdb"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"0bd912deab2562fb0a965da6cca23f13cb44d44f","unresolved":false,"context_lines":[{"line_number":791,"context_line":"class SecurityComplianceDoctorTests(unit.TestCase):"},{"line_number":792,"context_line":""},{"line_number":793,"context_line":"    def test_symptom_min_pass_age_should_be_less_than_pass_expires_days(self):"},{"line_number":794,"context_line":"        symptom_name \u003d (\"symptom_minimum_password_age_should_be_\""},{"line_number":795,"context_line":"                        \"less_than_password_expires_days\")"},{"line_number":796,"context_line":"        # Symptom Detected: Minimum password age is greater than the password"},{"line_number":797,"context_line":"        # expires days. Both values are positive integers greater than zero."},{"line_number":798,"context_line":"        self.config_fixture.config(group\u003d\u0027security_compliance\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_35305ce8","line":795,"range":{"start_line":794,"start_character":25,"end_line":795,"end_character":55},"updated":"2016-12-09 14:04:52.000000000","message":"We could reword this name in a way that we can at least call it without causing pep8 to fail (too big)\n\nFollowing that same idea that a symptom is something we don\u0027t want, it could be: \"symptom_minimum_password_age_greater_than_expires_days\" or something like that.\n\nwhat do you think about it ?","commit_id":"8123c3903f1d26a590faa37e91885d3080c36ec8"},{"author":{"_account_id":18464,"name":"Richard Avelar","email":"csravelar@gmail.com","username":"razone"},"change_message_id":"edc27a690007573700baaec74951cb4da30ff529","unresolved":false,"context_lines":[{"line_number":791,"context_line":"class SecurityComplianceDoctorTests(unit.TestCase):"},{"line_number":792,"context_line":""},{"line_number":793,"context_line":"    def test_symptom_min_pass_age_should_be_less_than_pass_expires_days(self):"},{"line_number":794,"context_line":"        symptom_name \u003d (\"symptom_minimum_password_age_should_be_\""},{"line_number":795,"context_line":"                        \"less_than_password_expires_days\")"},{"line_number":796,"context_line":"        # Symptom Detected: Minimum password age is greater than the password"},{"line_number":797,"context_line":"        # expires days. Both values are positive integers greater than zero."},{"line_number":798,"context_line":"        self.config_fixture.config(group\u003d\u0027security_compliance\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_ec637ddb","line":795,"range":{"start_line":794,"start_character":25,"end_line":795,"end_character":55},"in_reply_to":"3a71b18c_35305ce8","updated":"2016-12-09 16:34:44.000000000","message":"I believe that name would follow the naming convention that has been used for the symptoms so far (symptom name is what caused it to be raised) and it does not sacrifice the full keywords associated with this symptom that the user would go look for after getting the symptom. I like this idea.","commit_id":"8123c3903f1d26a590faa37e91885d3080c36ec8"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"0bd912deab2562fb0a965da6cca23f13cb44d44f","unresolved":false,"context_lines":[{"line_number":817,"context_line":"                                   password_expires_days\u003d2)"},{"line_number":818,"context_line":"        self.assertFalse(getattr(security_compliance, symptom_name)())"},{"line_number":819,"context_line":""},{"line_number":820,"context_line":"        # No Symptom Detected: Both values are 0"},{"line_number":821,"context_line":"        self.config_fixture.config(group\u003d\u0027security_compliance\u0027,"},{"line_number":822,"context_line":"                                   minimum_password_age\u003d0)"},{"line_number":823,"context_line":"        self.config_fixture.config(group\u003d\u0027security_compliance\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_150440be","line":820,"range":{"start_line":820,"start_character":10,"end_line":820,"end_character":48},"updated":"2016-12-09 14:04:52.000000000","message":"Why? Are they deactivated this way?","commit_id":"8123c3903f1d26a590faa37e91885d3080c36ec8"},{"author":{"_account_id":18464,"name":"Richard Avelar","email":"csravelar@gmail.com","username":"razone"},"change_message_id":"edc27a690007573700baaec74951cb4da30ff529","unresolved":false,"context_lines":[{"line_number":817,"context_line":"                                   password_expires_days\u003d2)"},{"line_number":818,"context_line":"        self.assertFalse(getattr(security_compliance, symptom_name)())"},{"line_number":819,"context_line":""},{"line_number":820,"context_line":"        # No Symptom Detected: Both values are 0"},{"line_number":821,"context_line":"        self.config_fixture.config(group\u003d\u0027security_compliance\u0027,"},{"line_number":822,"context_line":"                                   minimum_password_age\u003d0)"},{"line_number":823,"context_line":"        self.config_fixture.config(group\u003d\u0027security_compliance\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_6ca4cdb8","line":820,"range":{"start_line":820,"start_character":10,"end_line":820,"end_character":48},"in_reply_to":"3a71b18c_150440be","updated":"2016-12-09 16:34:44.000000000","message":"Yes, in the event that these are both zero, the symptom check automatically throws False back. In addition, the default values in keystone.conf are both set to 0 which doesn\u0027t put any constraints on how soon the user can switch their password or any constraints on how soon user must switch their password.","commit_id":"8123c3903f1d26a590faa37e91885d3080c36ec8"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"0bd912deab2562fb0a965da6cca23f13cb44d44f","unresolved":false,"context_lines":[{"line_number":839,"context_line":"        self.assertFalse("},{"line_number":840,"context_line":"            security_compliance.symptom_invalid_password_regular_expression())"},{"line_number":841,"context_line":""},{"line_number":842,"context_line":"        # No Symptom Detected: No regular expression is set"},{"line_number":843,"context_line":"        self.config_fixture.config("},{"line_number":844,"context_line":"            group\u003d\u0027security_compliance\u0027,"},{"line_number":845,"context_line":"            password_regex\u003dNone)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_f51b441a","line":842,"range":{"start_line":842,"start_character":10,"end_line":842,"end_character":59},"updated":"2016-12-09 14:04:52.000000000","message":"is it deactivated ?","commit_id":"8123c3903f1d26a590faa37e91885d3080c36ec8"},{"author":{"_account_id":18464,"name":"Richard Avelar","email":"csravelar@gmail.com","username":"razone"},"change_message_id":"edc27a690007573700baaec74951cb4da30ff529","unresolved":false,"context_lines":[{"line_number":839,"context_line":"        self.assertFalse("},{"line_number":840,"context_line":"            security_compliance.symptom_invalid_password_regular_expression())"},{"line_number":841,"context_line":""},{"line_number":842,"context_line":"        # No Symptom Detected: No regular expression is set"},{"line_number":843,"context_line":"        self.config_fixture.config("},{"line_number":844,"context_line":"            group\u003d\u0027security_compliance\u0027,"},{"line_number":845,"context_line":"            password_regex\u003dNone)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_2c72d549","line":842,"range":{"start_line":842,"start_character":10,"end_line":842,"end_character":59},"in_reply_to":"3a71b18c_f51b441a","updated":"2016-12-09 16:34:44.000000000","message":"Yes","commit_id":"8123c3903f1d26a590faa37e91885d3080c36ec8"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"0bd912deab2562fb0a965da6cca23f13cb44d44f","unresolved":false,"context_lines":[{"line_number":870,"context_line":"            security_compliance."},{"line_number":871,"context_line":"            symptom_password_regular_expression_description_not_set())"},{"line_number":872,"context_line":""},{"line_number":873,"context_line":"        # No Symptom Detected: Regular expression and description are not set"},{"line_number":874,"context_line":"        self.config_fixture.config("},{"line_number":875,"context_line":"            group\u003d\u0027security_compliance\u0027, password_regex\u003dNone)"},{"line_number":876,"context_line":"        self.config_fixture.config("}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_95ddb044","line":873,"range":{"start_line":873,"start_character":10,"end_line":873,"end_character":77},"updated":"2016-12-09 14:04:52.000000000","message":"so the feature is deactivated ?","commit_id":"8123c3903f1d26a590faa37e91885d3080c36ec8"},{"author":{"_account_id":18464,"name":"Richard Avelar","email":"csravelar@gmail.com","username":"razone"},"change_message_id":"edc27a690007573700baaec74951cb4da30ff529","unresolved":false,"context_lines":[{"line_number":870,"context_line":"            security_compliance."},{"line_number":871,"context_line":"            symptom_password_regular_expression_description_not_set())"},{"line_number":872,"context_line":""},{"line_number":873,"context_line":"        # No Symptom Detected: Regular expression and description are not set"},{"line_number":874,"context_line":"        self.config_fixture.config("},{"line_number":875,"context_line":"            group\u003d\u0027security_compliance\u0027, password_regex\u003dNone)"},{"line_number":876,"context_line":"        self.config_fixture.config("}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_acb345e8","line":873,"range":{"start_line":873,"start_character":10,"end_line":873,"end_character":77},"in_reply_to":"3a71b18c_95ddb044","updated":"2016-12-09 16:34:44.000000000","message":"Yes","commit_id":"8123c3903f1d26a590faa37e91885d3080c36ec8"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"c9f95b902be90ca98c8a993fb6be8b01f2097182","unresolved":false,"context_lines":[{"line_number":802,"context_line":"            symptom_minimum_password_age_greater_than_expires_days())"},{"line_number":803,"context_line":""},{"line_number":804,"context_line":"    def test_minimum_password_age_equal_to_password_expires_days(self):"},{"line_number":805,"context_line":"        # Symptom Detected: Minimum password age is equal to thev password"},{"line_number":806,"context_line":"        # expires days. Both values are positive integers greater than zero."},{"line_number":807,"context_line":"        self.config_fixture.config(group\u003d\u0027security_compliance\u0027,"},{"line_number":808,"context_line":"                                   minimum_password_age\u003d1)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_6ddda441","line":805,"range":{"start_line":805,"start_character":64,"end_line":805,"end_character":65},"updated":"2016-12-09 18:19:01.000000000","message":"nit: typo","commit_id":"0bfe9de388a79aa3666c30527a44ff611472e36b"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"951d00153620eab2061a3e994a0a2413a82e05a9","unresolved":false,"context_lines":[{"line_number":791,"context_line":"class SecurityComplianceDoctorTests(unit.TestCase):"},{"line_number":792,"context_line":""},{"line_number":793,"context_line":"    def test_minimum_password_age_greater_than_password_expires_days(self):"},{"line_number":794,"context_line":"        # Symptom Detected: Minimum password age is greater than the password"},{"line_number":795,"context_line":"        # expires days. Both values are positive integers greater than zero."},{"line_number":796,"context_line":"        self.config_fixture.config(group\u003d\u0027security_compliance\u0027,"},{"line_number":797,"context_line":"                                   minimum_password_age\u003d2)"},{"line_number":798,"context_line":"        self.config_fixture.config(group\u003d\u0027security_compliance\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_5c00a8aa","line":795,"range":{"start_line":794,"start_character":0,"end_line":795,"end_character":76},"updated":"2016-12-14 13:01:18.000000000","message":"rather have this kind of comments in the beginning of the test as docstrings. Also applies to the other tests here.","commit_id":"e4ecc046c8f7adf385a15b74ba16faeeaa19979b"}]}
