@Test(groups = CREATE_DROP_VIEW) public void createSimpleView() { executeWith(createViewAs("SELECT * FROM nation"), view -> { assertThat(query(format("SELECT * FROM %s", view.getName()))) .hasRowsCount(25); }); }
@Test(groups = CREATE_DROP_VIEW) public void createViewWithAggregate() { executeWith(createViewAs("SELECT n_regionkey, count(*) countries FROM nation GROUP BY n_regionkey ORDER BY n_regionkey"), view -> { assertThat(query(format("SELECT * FROM %s", view.getName()))) .hasRowsCount(5); }); }
@Test(groups = CREATE_DROP_VIEW) public void querySimpleViewQualified() { executeWith(createViewAs("SELECT * FROM nation"), view -> { assertThat(query(format("SELECT %s.n_regionkey FROM %s", view.getName(), view.getName()))) .hasRowsCount(25); }); }
@Test(groups = {AUTHORIZATION, PROFILE_SPECIFIC_TESTS}) public void testViewOwnerPrivileges() { onHive().executeQuery("set role admin;"); executeWith(createViewAs(viewName, format("SELECT * FROM %s", tableName), aliceExecutor), view -> { assertThat(onHive().executeQuery(format("SHOW GRANT USER alice ON %s", viewName)) .project(7, 8)) // Project only two relevant columns of SHOW GRANT: Privilege and Grant Option .containsOnly(ownerGrants()); }); }
@Test(groups = {CREATE_DROP_VIEW, SMOKE}) public void createOrReplaceSimpleView() { executeWith(createViewAs("SELECT * FROM nation"), view -> { assertThat(query(format("CREATE OR REPLACE VIEW %s AS SELECT * FROM nation", view.getName()))) .hasRowsCount(1); assertThat(query(format("SELECT * FROM %s", view.getName()))) .hasRowsCount(25); }); }
@Test(groups = CREATE_DROP_VIEW) public void createSimpleViewTwiceShouldFail() { executeWith(createViewAs("SELECT * FROM nation"), view -> { assertThat(() -> query(format("CREATE VIEW %s AS SELECT * FROM nation", view.getName()))) .failsWithMessage("View already exists"); assertThat(query(format("SELECT * FROM %s", view.getName()))) .hasRowsCount(25); }); }
@Test(groups = {CREATE_DROP_VIEW, SMOKE}) public void dropViewTest() { executeWith(createViewAs("SELECT * FROM nation"), view -> { assertThat(query(format("SELECT * FROM %s", view.getName()))) .hasRowsCount(25); assertThat(query(format("DROP VIEW %s", view.getName()))) .hasRowsCount(1); assertThat(() -> query(format("SELECT * FROM %s", view.getName()))) .failsWithMessage("does not exist"); }); } }