)]}'
{"keystone/tests/unit/test_cli.py":[{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"d7045d7eb2b73d838e7cc42310245b9c6b9a3ba0","unresolved":false,"context_lines":[{"line_number":1182,"context_line":"                                   password_expires_days\u003d0)"},{"line_number":1183,"context_line":"        self.assertFalse("},{"line_number":1184,"context_line":"            security_compliance."},{"line_number":1185,"context_line":"            symptom_minimum_password_age_greater_than_expires_days())"},{"line_number":1186,"context_line":""},{"line_number":1187,"context_line":"    def test_invalid_password_regular_expression(self):"},{"line_number":1188,"context_line":"        # Symptom Detected: Regular expression is invalid"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_19e323db","side":"PARENT","line":1185,"range":{"start_line":1185,"start_character":12,"end_line":1185,"end_character":68},"updated":"2017-04-28 14:23:28.000000000","message":"this is testing keystone\u0027 symptoms detection code, without this it will be untested.","commit_id":"874d571683452e0333ea9766a7bda81290d5f44e"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"4b675fe55b009cebbb97abf6689a03760d793632","unresolved":false,"context_lines":[{"line_number":1182,"context_line":"                                   password_expires_days\u003d0)"},{"line_number":1183,"context_line":"        self.assertFalse("},{"line_number":1184,"context_line":"            security_compliance."},{"line_number":1185,"context_line":"            symptom_minimum_password_age_greater_than_expires_days())"},{"line_number":1186,"context_line":""},{"line_number":1187,"context_line":"    def test_invalid_password_regular_expression(self):"},{"line_number":1188,"context_line":"        # Symptom Detected: Regular expression is invalid"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_52126264","side":"PARENT","line":1185,"in_reply_to":"5ff73747_0caddfe9","updated":"2017-05-02 14:42:09.000000000","message":"If I remember the implementation correctly, there was a patch that laid down all the configuration options first [0]. This option was changed later when the specific PCI-DSS requirement was implemented (as linked in the comment above).\n\nIf this value defaulted to 1 the implementation would break (see the if statement on line 158) [1]. The implied default is to not include the option at all (or comment out password_expires_days), which works in the implementation because `None` is returned:\n\n  Python 2.7.9 (default, Apr  2 2015, 15:33:21) \n  [GCC 4.9.2] on linux2\n  Type \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n  \u003e\u003e\u003e import keystone.conf\n  \u003e\u003e\u003e CONF \u003d keystone.conf.CONF\n  \u003e\u003e\u003e from keystone.server import common\n  \u003e\u003e\u003e common.configure()\n  \u003e\u003e\u003e CONF.security_compliance.password_expires_days\n  \u003e\u003e\u003e print CONF.security_compliance.password_expires_days\n  None\n  \u003e\u003e\u003e \n\n\nSo - maybe what we can do is refactor the test so that a value *isn\u0027t* specified to better model how an operator would achieve that behavior in the real world, since setting password_expires_day \u003d 0 fails keystone on start up.\n\n[0] https://review.openstack.org/#/c/314679/20/keystone/common/config.py\n[1] https://github.com/openstack/keystone/blob/e18923daa1e3bdf4ee444ebe44e6dd11e65676ec/keystone/identity/backends/sql_model.py#L150-L162","commit_id":"874d571683452e0333ea9766a7bda81290d5f44e"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"453d785e7cb9268609de3c8f3f76d429f772dbf8","unresolved":false,"context_lines":[{"line_number":1182,"context_line":"                                   password_expires_days\u003d0)"},{"line_number":1183,"context_line":"        self.assertFalse("},{"line_number":1184,"context_line":"            security_compliance."},{"line_number":1185,"context_line":"            symptom_minimum_password_age_greater_than_expires_days())"},{"line_number":1186,"context_line":""},{"line_number":1187,"context_line":"    def test_invalid_password_regular_expression(self):"},{"line_number":1188,"context_line":"        # Symptom Detected: Regular expression is invalid"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_54935fa4","side":"PARENT","line":1185,"range":{"start_line":1185,"start_character":12,"end_line":1185,"end_character":68},"in_reply_to":"5ff73747_0caddfe9","updated":"2017-05-03 01:40:50.000000000","message":"all config option\u0027s default value is None if we don\u0027t give it one.  None works for all of Opts, see https://github.com/openstack/oslo.config/blob/master/oslo_config/cfg.py#L2664","commit_id":"874d571683452e0333ea9766a7bda81290d5f44e"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"2023eea304e21e7df5ae534ac1ccef113a927ea3","unresolved":false,"context_lines":[{"line_number":1182,"context_line":"                                   password_expires_days\u003d0)"},{"line_number":1183,"context_line":"        self.assertFalse("},{"line_number":1184,"context_line":"            security_compliance."},{"line_number":1185,"context_line":"            symptom_minimum_password_age_greater_than_expires_days())"},{"line_number":1186,"context_line":""},{"line_number":1187,"context_line":"    def test_invalid_password_regular_expression(self):"},{"line_number":1188,"context_line":"        # Symptom Detected: Regular expression is invalid"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_391dbf73","side":"PARENT","line":1185,"range":{"start_line":1185,"start_character":12,"end_line":1185,"end_character":68},"in_reply_to":"5ff73747_19e323db","updated":"2017-04-28 14:36:40.000000000","message":"So test with  password_expires_days\u003d1 ?  I\u0027m not keystone expert :-), hope keystone folks can help fix failures in https://etherpad.openstack.org/p/keystone_enforce_type_issues","commit_id":"874d571683452e0333ea9766a7bda81290d5f44e"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"31da765126e372e979c70968c4fbc7e23c0a1f26","unresolved":false,"context_lines":[{"line_number":1182,"context_line":"                                   password_expires_days\u003d0)"},{"line_number":1183,"context_line":"        self.assertFalse("},{"line_number":1184,"context_line":"            security_compliance."},{"line_number":1185,"context_line":"            symptom_minimum_password_age_greater_than_expires_days())"},{"line_number":1186,"context_line":""},{"line_number":1187,"context_line":"    def test_invalid_password_regular_expression(self):"},{"line_number":1188,"context_line":"        # Symptom Detected: Regular expression is invalid"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_71b91b13","side":"PARENT","line":1185,"range":{"start_line":1185,"start_character":12,"end_line":1185,"end_character":68},"in_reply_to":"5ff73747_2e20ceab","updated":"2017-04-28 16:26:45.000000000","message":"Look at https://github.com/openstack/keystone/blob/master/keystone/conf/security_compliance.py#L56-L58, maybe we\u0027ll make min\u003d0 ?","commit_id":"874d571683452e0333ea9766a7bda81290d5f44e"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"88493e241b319cf81455f4275a977358eefb000d","unresolved":false,"context_lines":[{"line_number":1182,"context_line":"                                   password_expires_days\u003d0)"},{"line_number":1183,"context_line":"        self.assertFalse("},{"line_number":1184,"context_line":"            security_compliance."},{"line_number":1185,"context_line":"            symptom_minimum_password_age_greater_than_expires_days())"},{"line_number":1186,"context_line":""},{"line_number":1187,"context_line":"    def test_invalid_password_regular_expression(self):"},{"line_number":1188,"context_line":"        # Symptom Detected: Regular expression is invalid"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_2e20ceab","side":"PARENT","line":1185,"range":{"start_line":1185,"start_character":12,"end_line":1185,"end_character":68},"in_reply_to":"5ff73747_391dbf73","updated":"2017-04-28 16:19:13.000000000","message":"if set to 0 it means it\u0027s deactivated, which is what this is test case is doing","commit_id":"874d571683452e0333ea9766a7bda81290d5f44e"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"453d785e7cb9268609de3c8f3f76d429f772dbf8","unresolved":false,"context_lines":[{"line_number":1182,"context_line":"                                   password_expires_days\u003d0)"},{"line_number":1183,"context_line":"        self.assertFalse("},{"line_number":1184,"context_line":"            security_compliance."},{"line_number":1185,"context_line":"            symptom_minimum_password_age_greater_than_expires_days())"},{"line_number":1186,"context_line":""},{"line_number":1187,"context_line":"    def test_invalid_password_regular_expression(self):"},{"line_number":1188,"context_line":"        # Symptom Detected: Regular expression is invalid"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_d4ec0f2b","side":"PARENT","line":1185,"in_reply_to":"5ff73747_52126264","updated":"2017-05-03 01:40:50.000000000","message":"agree, we don\u0027t override option password_expires_days\u0027s value , that means its value is the default value \u0027None\u0027.","commit_id":"874d571683452e0333ea9766a7bda81290d5f44e"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"7e3e00fce661d7d999e7628683c38063fdd54fa1","unresolved":false,"context_lines":[{"line_number":1182,"context_line":"                                   password_expires_days\u003d0)"},{"line_number":1183,"context_line":"        self.assertFalse("},{"line_number":1184,"context_line":"            security_compliance."},{"line_number":1185,"context_line":"            symptom_minimum_password_age_greater_than_expires_days())"},{"line_number":1186,"context_line":""},{"line_number":1187,"context_line":"    def test_invalid_password_regular_expression(self):"},{"line_number":1188,"context_line":"        # Symptom Detected: Regular expression is invalid"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_919dc767","side":"PARENT","line":1185,"range":{"start_line":1185,"start_character":12,"end_line":1185,"end_character":68},"in_reply_to":"5ff73747_71b91b13","updated":"2017-04-28 16:33:09.000000000","message":"So the config does not even accept to be set to 0, throwing an error if you try, correct? If that\u0027s the case, I think that should take min\u003d0, and we\u0027ll need a bug for that.","commit_id":"874d571683452e0333ea9766a7bda81290d5f44e"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"b97b4525de6ef901b29e34ae3cd68e830d93aafc","unresolved":false,"context_lines":[{"line_number":1182,"context_line":"                                   password_expires_days\u003d0)"},{"line_number":1183,"context_line":"        self.assertFalse("},{"line_number":1184,"context_line":"            security_compliance."},{"line_number":1185,"context_line":"            symptom_minimum_password_age_greater_than_expires_days())"},{"line_number":1186,"context_line":""},{"line_number":1187,"context_line":"    def test_invalid_password_regular_expression(self):"},{"line_number":1188,"context_line":"        # Symptom Detected: Regular expression is invalid"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_cf2132b6","side":"PARENT","line":1185,"range":{"start_line":1185,"start_character":12,"end_line":1185,"end_character":68},"in_reply_to":"5ff73747_919dc767","updated":"2017-05-02 09:34:51.000000000","message":"min was changed into 1 in https://github.com/openstack/keystone/commit/041f53f2f6bad661ffd9946932005bf19dbccc9c","commit_id":"874d571683452e0333ea9766a7bda81290d5f44e"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"ae4923c45e0e23df6233a02e591e5f39f5e7d96f","unresolved":false,"context_lines":[{"line_number":1182,"context_line":"                                   password_expires_days\u003d0)"},{"line_number":1183,"context_line":"        self.assertFalse("},{"line_number":1184,"context_line":"            security_compliance."},{"line_number":1185,"context_line":"            symptom_minimum_password_age_greater_than_expires_days())"},{"line_number":1186,"context_line":""},{"line_number":1187,"context_line":"    def test_invalid_password_regular_expression(self):"},{"line_number":1188,"context_line":"        # Symptom Detected: Regular expression is invalid"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_d1fc6f71","side":"PARENT","line":1185,"range":{"start_line":1185,"start_character":12,"end_line":1185,"end_character":68},"in_reply_to":"5ff73747_919dc767","updated":"2017-04-29 14:39:45.000000000","message":"yes","commit_id":"874d571683452e0333ea9766a7bda81290d5f44e"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"e07b3d4bd605603180880568c41f0701c22983bb","unresolved":false,"context_lines":[{"line_number":1182,"context_line":"                                   password_expires_days\u003d0)"},{"line_number":1183,"context_line":"        self.assertFalse("},{"line_number":1184,"context_line":"            security_compliance."},{"line_number":1185,"context_line":"            symptom_minimum_password_age_greater_than_expires_days())"},{"line_number":1186,"context_line":""},{"line_number":1187,"context_line":"    def test_invalid_password_regular_expression(self):"},{"line_number":1188,"context_line":"        # Symptom Detected: Regular expression is invalid"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_0caddfe9","side":"PARENT","line":1185,"range":{"start_line":1185,"start_character":12,"end_line":1185,"end_character":68},"in_reply_to":"5ff73747_cf2132b6","updated":"2017-05-02 13:33:44.000000000","message":"Maybe this should test with password_expires_days\u003dNone since that\u0027s the default (not 0)? Does that even work for an IntOpt?","commit_id":"874d571683452e0333ea9766a7bda81290d5f44e"}]}
