)]}'
{"trove/tests/api/users.py":[{"author":{"_account_id":9782,"name":"Morgan Jones","email":"morgan@tesora.com","username":"vgnbkr"},"change_message_id":"f984991153bf3ae6a0124bc6e5e1158b2c4a8a4e","unresolved":false,"context_lines":[{"line_number":322,"context_line":"            self.dbaas.users.update_attributes("},{"line_number":323,"context_line":"                instance_info.id, username, user_new, hostname)"},{"line_number":324,"context_line":"            fail(\"Updating user without any changes should fail\")"},{"line_number":325,"context_line":"        except Exception:"},{"line_number":326,"context_line":"            # We don\u0027t check the type of exception, because the client is"},{"line_number":327,"context_line":"            # the one throwing it before the server call is made. By the"},{"line_number":328,"context_line":"            # same token, we don\u0027t need to check the last_http_code either."}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_62f9e5c6","line":325,"updated":"2015-12-07 20:27:56.000000000","message":"I don\u0027t think this is correct behaviour either.  This could fail for reasons other than \"updating user without changes\" and the test would still pass.  If there is an additional exception you need to handle, explicitly list it.","commit_id":"69337aef9e13344ac0a8b9bb58e84046f14e73fd"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"aea40ece2a663ab62f3115be2b7694e3f04c0f8d","unresolved":false,"context_lines":[{"line_number":322,"context_line":"            self.dbaas.users.update_attributes("},{"line_number":323,"context_line":"                instance_info.id, username, user_new, hostname)"},{"line_number":324,"context_line":"            fail(\"Updating user without any changes should fail\")"},{"line_number":325,"context_line":"        except Exception:"},{"line_number":326,"context_line":"            # We don\u0027t check the type of exception, because the client is"},{"line_number":327,"context_line":"            # the one throwing it before the server call is made. By the"},{"line_number":328,"context_line":"            # same token, we don\u0027t need to check the last_http_code either."}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_0111df03","line":325,"in_reply_to":"7a740942_62f9e5c6","updated":"2015-12-13 14:42:38.000000000","message":"That\u0027s what got us into this issue in the first place - hardcoding a client exception in tests that are supposed to validate server functionality.  It\u0027s this tight-coupling that I was trying to fix.  If we insist on having them tightly coupled, then we might as well just live with what we have (and I\u0027ll abandon this changeset).","commit_id":"69337aef9e13344ac0a8b9bb58e84046f14e73fd"}],"trove/tests/scenario/groups/user_actions_group.py":[{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"d9e76850e80af1fecbcc76068f53e112c4790ae9","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    @test(depends_on\u003d[create_users],"},{"line_number":66,"context_line":"          runs_after\u003d[list_users])"},{"line_number":67,"context_line":"    def create_user_with_no_attributes(self):"},{"line_number":68,"context_line":"        \"\"\"Ensure creating a user with blank specification fails.\"\"\""},{"line_number":69,"context_line":"        self.test_runner.run_user_create_with_no_attributes()"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a7e1126_716c60d0","side":"PARENT","line":67,"updated":"2015-12-18 16:53:33.000000000","message":"I think you removed a wrong test-case - this one \u0027creates\u0027 a user.","commit_id":"21097931bd045f73d6a38bf96002aa4d2e448b60"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"10e49edd546b360fea77b9d5ebcbfac578b5e3b6","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    @test(depends_on\u003d[create_users],"},{"line_number":66,"context_line":"          runs_after\u003d[list_users])"},{"line_number":67,"context_line":"    def create_user_with_no_attributes(self):"},{"line_number":68,"context_line":"        \"\"\"Ensure creating a user with blank specification fails.\"\"\""},{"line_number":69,"context_line":"        self.test_runner.run_user_create_with_no_attributes()"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a7e1126_0907e5ca","side":"PARENT","line":67,"in_reply_to":"3a7e1126_716c60d0","updated":"2015-12-19 07:30:13.000000000","message":"right - I got lazy and did a search on \u0027user_with_no_attribute\u0027 - oops","commit_id":"21097931bd045f73d6a38bf96002aa4d2e448b60"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"d9e76850e80af1fecbcc76068f53e112c4790ae9","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    @test(depends_on\u003d[create_users],"},{"line_number":90,"context_line":"          runs_after\u003d[create_existing_user])"},{"line_number":91,"context_line":"    def update_user_with_no_attributes(self):"},{"line_number":92,"context_line":"        \"\"\"Ensure updating a user with blank specification fails.\"\"\""},{"line_number":93,"context_line":"        self.test_runner.run_user_update_with_no_attributes()"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a7e1126_915a2c29","side":"PARENT","line":91,"updated":"2015-12-18 16:53:33.000000000","message":"It should be this one.","commit_id":"21097931bd045f73d6a38bf96002aa4d2e448b60"}],"trove/tests/scenario/runners/user_actions_runners.py":[{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"d9e76850e80af1fecbcc76068f53e112c4790ae9","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            self.assert_pagination_match("},{"line_number":112,"context_line":"                list_page, full_list, limit, len(full_list))"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def run_user_create_with_no_attributes("},{"line_number":115,"context_line":"            self, expected_exception\u003dexceptions.BadRequest,"},{"line_number":116,"context_line":"            expected_http_code\u003d400):"},{"line_number":117,"context_line":"        self.assert_users_create_failure("}],"source_content_type":"text/x-python","patch_set":5,"id":"3a7e1126_d1899476","side":"PARENT","line":114,"updated":"2015-12-18 16:53:33.000000000","message":"ditto","commit_id":"21097931bd045f73d6a38bf96002aa4d2e448b60"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"d9e76850e80af1fecbcc76068f53e112c4790ae9","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            expected_exception, expected_http_code,"},{"line_number":176,"context_line":"            self.auth_client.users.create, instance_id, serial_users_def)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def run_user_update_with_no_attributes(self):"},{"line_number":179,"context_line":"        # Note: this is caught on the client-side."},{"line_number":180,"context_line":"        self.assert_user_attribute_update_failure("},{"line_number":181,"context_line":"            self.instance_info.id, self.user_defs[0],"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a7e1126_91f6acf7","side":"PARENT","line":178,"updated":"2015-12-18 16:53:33.000000000","message":"ditto","commit_id":"21097931bd045f73d6a38bf96002aa4d2e448b60"}]}
