@Test
  public void testDCLROLEOperation() {
    // 1. create role and drop role.
    AuthorStatement roleDcl = createAuthDclStmt("create role role1;");
    assertEquals("role1", roleDcl.getRoleName());
    assertEquals(StatementType.CREATE_ROLE, roleDcl.getType());

    roleDcl = createAuthDclStmt("drop role role1;");
    assertEquals(StatementType.DELETE_ROLE, roleDcl.getType());
    assertEquals("role1", roleDcl.getRoleName());

    // 2. grant and revoke role.
    roleDcl = createAuthDclStmt("grant role `role1` to `user1`;");
    assertEquals(StatementType.GRANT_USER_ROLE, roleDcl.getType());
    assertEquals("role1", roleDcl.getRoleName());
    assertEquals("user1", roleDcl.getUserName());

    roleDcl = createAuthDclStmt("revoke role `role1` from `user1`;");
    assertEquals(StatementType.REVOKE_USER_ROLE, roleDcl.getType());
    assertEquals("role1", roleDcl.getRoleName());
    assertEquals("user1", roleDcl.getUserName());
  }
[ BUG ] We didn't save the old password in the statement. If userA has logged in with
session_A. Session_B's alter password operation cannot block session A's alter password
operation because we only check the user's password before they log in.
iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/parser/StatementGeneratorTest.java