Coverage Summary for Class: TestReadOnlyRoleAgain (org.umlg.sqlg.test.roles)
Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
TestReadOnlyRoleAgain |
0%
(0/1)
|
0%
(0/2)
|
0%
(0/12)
|
0%
(0/34)
|
package org.umlg.sqlg.test.roles;
import org.junit.Assert;
import org.junit.Test;
import java.sql.*;
import java.util.HashSet;
import java.util.Set;
/**
* @author <a href="https://github.com/pietermartin">Pieter Martin</a>
* Date: 2018/07/21
*/
public class TestReadOnlyRoleAgain {
@Test
public void test441() throws SQLException {
Connection c = DriverManager.getConnection("jdbc:hsqldb:file:src/test/db2/sqlgraphdb", "SA", "");
try (Statement statement = c.createStatement()) {
statement.execute("CREATE TABLE \"PUBLIC\".\"V_A\" (\"ID\" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, \"name\" LONGVARCHAR);");
statement.execute("INSERT INTO \"PUBLIC\".\"V_A\" (\"name\") VALUES ('john');");
statement.execute("INSERT INTO \"PUBLIC\".\"V_A\" (\"name\") VALUES ('joe');");
c.commit();
ResultSet rs = statement.executeQuery("select \"name\" from \"PUBLIC\".\"V_A\";");
Set<String> names = new HashSet<>(Set.of("john", "joe"));
while (rs.next()) {
names.remove(rs.getString(1));
}
Assert.assertTrue(names.isEmpty());
statement.execute("CREATE USER \"sqlgReadOnly\" PASSWORD 'sqlgReadOnly'");
statement.execute("CREATE ROLE \"READ_ONLY\"");
statement.execute("GRANT READ_ONLY TO \"sqlgReadOnly\"");
statement.execute("GRANT SELECT ON TABLE \"PUBLIC\".\"V_A\" TO READ_ONLY");
c.commit();
} finally {
c.close();
}
Connection readOnlyConnection = DriverManager.getConnection("jdbc:hsqldb:file:src/test/db2/sqlgraphdb", "sqlgReadOnly", "sqlgReadOnly");
try (Statement statement = readOnlyConnection.createStatement()) {
ResultSet rs = statement.executeQuery("select \"name\" from \"PUBLIC\".\"V_A\";");
Set<String> names = new HashSet<>(Set.of("john", "joe"));
while (rs.next()) {
names.remove(rs.getString(1));
}
Assert.assertTrue(names.isEmpty());
DatabaseMetaData metadata = readOnlyConnection.getMetaData();
ResultSet schemaRs = metadata.getSchemas(null, "PUBLIC");
boolean result = schemaRs.next();
Assert.assertTrue(result);
} finally {
readOnlyConnection.close();
}
}
}