171 logger.info(
"testDashboards()");
173 MapdTestClient su = MapdTestClient.getClient(
174 "localhost", 6274,
"omnisci",
"admin",
"HyperInteractive");
176 List<String> users = su.get_users();
178 su.runSql(
"CREATE USER dba (password = 'password', is_super = 'true');");
179 su.runSql(
"CREATE USER jason (password = 'password', is_super = 'false');");
180 su.runSql(
"CREATE USER bob (password = 'password', is_super = 'false');");
182 su.runSql(
"CREATE ROLE salesDept;");
183 su.runSql(
"CREATE USER foo (password = 'password', is_super = 'false');");
185 su.runSql(
"GRANT salesDept TO foo;");
188 MapdTestClient.getClient(
"localhost", 6274,
"omnisci",
"dba",
"password");
189 MapdTestClient jason =
190 MapdTestClient.getClient(
"localhost", 6274,
"omnisci",
"jason",
"password");
192 MapdTestClient.getClient(
"localhost", 6274,
"omnisci",
"bob",
"password");
194 MapdTestClient.getClient(
"localhost", 6274,
"omnisci",
"foo",
"password");
196 su.runSql(
"GRANT CREATE DASHBOARD ON DATABASE omnisci TO jason;");
198 shouldThrowException(
"bob should not be able to create dashboards",
199 () -> bob.create_dashboard(
"for_bob"));
200 shouldThrowException(
"foo should not be able to create dashboards",
201 () -> foo.create_dashboard(
"for_bob"));
203 int for_bob = jason.create_dashboard(
"for_bob");
204 int for_sales = jason.create_dashboard(
"for_sales");
205 int for_all = jason.create_dashboard(
"for_all");
207 MapdAsserts.assertEqual(0, bob.get_dashboards().size());
208 MapdAsserts.assertEqual(0, foo.get_dashboards().size());
210 MapdTestClient granter = jason;
211 granter.runSql(
"GRANT VIEW ON DASHBOARD " + for_bob +
" TO bob;");
212 granter.runSql(
"GRANT VIEW ON DASHBOARD " + for_sales +
" TO salesDept;");
213 granter.runSql(
"GRANT VIEW ON DASHBOARD " + for_all +
" TO bob;");
214 granter.runSql(
"GRANT VIEW ON DASHBOARD " + for_all +
" TO salesDept;");
216 MapdAsserts.assertEqual(2, bob.get_dashboards().size());
217 MapdAsserts.assertEqual(2, foo.get_dashboards().size());
219 shouldThrowException(
"bob should not be able to access for_sales",
220 () -> bob.get_dashboard(for_sales));
221 shouldThrowException(
222 "foo should not be able to access for_bob", () -> foo.get_dashboard(for_bob));
224 MapdAsserts.assertEqual(
"for_bob", bob.get_dashboard(for_bob));
225 MapdAsserts.assertEqual(
"for_all", bob.get_dashboard(for_all));
227 MapdAsserts.assertEqual(
"for_sales", foo.get_dashboard(for_sales));
228 MapdAsserts.assertEqual(
"for_all", foo.get_dashboard(for_all));
231 shouldThrowException(
"bob can not edit for_bob",
232 () -> bob.replace_dashboard(for_bob,
"for_bob2",
"jason"));
233 shouldThrowException(
"foo can not edit for_bob",
234 () -> foo.replace_dashboard(for_bob,
"for_bob2",
"jason"));
235 shouldThrowException(
"bob can not edit for_sales",
236 () -> bob.replace_dashboard(for_sales,
"for_sales2",
"jason"));
237 shouldThrowException(
"foo can not edit for_sales",
238 () -> foo.replace_dashboard(for_sales,
"for_sales2",
"jason"));
240 jason.runSql(
"GRANT EDIT ON DASHBOARD " + for_bob +
" TO bob;");
241 jason.runSql(
"GRANT EDIT ON DASHBOARD " + for_sales +
" TO salesDept;");
242 shouldThrowException(
"foo can not edit for_bob",
243 () -> foo.replace_dashboard(for_bob,
"for_bob2",
"jason"));
244 shouldThrowException(
"bob can not edit for_sales",
245 () -> bob.replace_dashboard(for_sales,
"for_sales2",
"jason"));
247 jason.replace_dashboard(for_all,
"for_all2",
"jason");
248 bob.replace_dashboard(for_bob,
"for_bob2",
"jason");
249 foo.replace_dashboard(for_sales,
"for_sales2",
"jason");
251 MapdAsserts.assertEqual(
"for_bob2", bob.get_dashboard(for_bob));
252 MapdAsserts.assertEqual(
"for_all2", bob.get_dashboard(for_all));
254 MapdAsserts.assertEqual(
"for_sales2", foo.get_dashboard(for_sales));
255 MapdAsserts.assertEqual(
"for_all2", foo.get_dashboard(for_all));
257 shouldThrowException(
258 "foo can not delete for_bob", () -> foo.delete_dashboard(for_bob));
259 shouldThrowException(
260 "foo can not delete for_sales", () -> foo.delete_dashboard(for_sales));
261 shouldThrowException(
262 "foo can not delete for_all", () -> foo.delete_dashboard(for_all));
264 shouldThrowException(
265 "bob can not delete for_bob", () -> bob.delete_dashboard(for_bob));
266 shouldThrowException(
267 "bob can not delete for_sales", () -> bob.delete_dashboard(for_sales));
268 shouldThrowException(
269 "bob can not delete for_all", () -> bob.delete_dashboard(for_all));
271 jason.delete_dashboard(for_bob);
273 MapdAsserts.assertEqual(1, bob.get_dashboards().size());
274 MapdAsserts.assertEqual(2, foo.get_dashboards().size());
275 MapdAsserts.assertEqual(
"for_all2", bob.get_dashboard(for_all));
276 MapdAsserts.assertEqual(
"for_sales2", foo.get_dashboard(for_sales));
277 MapdAsserts.assertEqual(
"for_all2", foo.get_dashboard(for_all));
279 jason.delete_dashboard(for_all);
281 MapdAsserts.assertEqual(0, bob.get_dashboards().size());
282 MapdAsserts.assertEqual(1, foo.get_dashboards().size());
283 MapdAsserts.assertEqual(
"for_sales2", foo.get_dashboard(for_sales));
285 jason.delete_dashboard(for_sales);
287 MapdAsserts.assertEqual(0, bob.get_dashboards().size());
288 MapdAsserts.assertEqual(0, foo.get_dashboards().size());
290 su.runSql(
"DROP USER foo;");
291 su.runSql(
"DROP ROLE salesDept;");
292 su.runSql(
"DROP USER bob;");
293 su.runSql(
"DROP USER jason;");
294 su.runSql(
"DROP USER dba;");