diff --git a/R/set_shema_rights.R b/R/set_shema_rights.R index fbb6abf2c1834b3f85c1f56dfc45829881edef6d..69148235dc76d8460cf32935c401c7579ec1ba2b 100644 --- a/R/set_shema_rights.R +++ b/R/set_shema_rights.R @@ -51,22 +51,24 @@ set_schema_rights <- function(schema = "public", table = NULL, con = NULL, db = tables_concernees <- ifelse(is.null(table), "ALL TABLES", table) - droit2 <- dplyr::transmute(droits, liste_priv = gsub("\\{|\\}", "", .data$liste_priv) %>% strsplit(split = ",") %>% list) %>% - dplyr::summarise(liste_priv = list(unlist(.data$liste_priv)) ) %>% - dplyr::pull(.data$liste_priv) %>% unlist() %>% tibble::enframe(name = NULL) %>% - tidyr::separate(col = .data$value, sep = "([=/])", into = c("role", "droits", "granter"), remove = TRUE) %>% - dplyr::select(-.data$granter) %>% - dplyr::distinct() %>% - mutate(privilege = dplyr::case_when( - .data$droits == "arwdDxt" ~ "ALL", - .data$droits == "r" ~ "SELECT", - TRUE ~ purrr::map2_chr(.x = ref_privilege$abrv, .y = ref_privilege$verbe, .f = ~ ifelse(grepl(pattern = .x, .data$droits), .y, NA_character_)) %>% - setdiff(., NA_character_) %>% - paste(collapse = ", ") - ), - sql = paste0("GRANT ", .data$privilege," ON ", tables_concernees ," IN SCHEMA ", schema ," TO ", .data$role, ";") - ) + ## non fonctionnel pour le moment + # droit2 <- dplyr::transmute(droits, liste_priv = gsub("\\{|\\}", "", .data$liste_priv) %>% strsplit(split = ",") %>% list) %>% + # dplyr::summarise(liste_priv = list(unlist(.data$liste_priv)) ) %>% + # dplyr::pull(.data$liste_priv) %>% unlist() %>% tibble::enframe(name = NULL) %>% + # tidyr::separate(col = .data$value, sep = "([=/])", into = c("role", "droits", "granter"), remove = TRUE) %>% + # dplyr::select(-.data$granter) %>% + # dplyr::distinct() %>% + # mutate(privilege = dplyr::case_when( + # .data$droits == "arwdDxt" ~ "ALL", + # .data$droits == "r" ~ "SELECT", + # TRUE ~ purrr::map2_chr(.x = ref_privilege$abrv, .y = ref_privilege$verbe, .f = ~ ifelse(grepl(pattern = .x, .data$droits), .y, NA_character_)) %>% + # setdiff(., NA_character_) %>% + # paste(collapse = ", ") + # ), + # sql = paste0("GRANT ", .data$privilege," ON ", tables_concernees ," IN SCHEMA ", schema ," TO ", .data$role, ";") + # ) + return(invisible(NULL)) } diff --git a/tests/testthat/test-9-set_schema_rights.R b/tests/testthat/test-9-set_schema_rights.R new file mode 100644 index 0000000000000000000000000000000000000000..e56f7762ced1b71c897c8dcc57fddb9e053beaab --- /dev/null +++ b/tests/testthat/test-9-set_schema_rights.R @@ -0,0 +1,26 @@ +test_that("set_schema_rights works", { + if(DBI::dbCanConnect(RPostgres::Postgres(), host="localhost", user="runner", password=Sys.getenv("BDD_RUNNER_PWD"), dbname="postgres")){ + Sys.setenv(port="5432") + Sys.setenv(server="localhost") + Sys.setenv(user_test="runner") + Sys.setenv(pwd_test=Sys.getenv("BDD_RUNNER_PWD")) + + con<<-connect_to_db(db = 'test_datalibaba', user = 'test') + + expect_error(set_schema_rights(schema = "public", table = "test_iris", db = NULL, user = NULL, server = Sys.getenv("server")), + "con, db et user ne sont pas renseign\u00e9s, merci de fournir les arguments necessaires a la connexion ") + expect_error(set_schema_rights(schema = "public", table = "test_iris", db = NULL, user = "test", server = Sys.getenv("server")), + "con et db ne sont pas renseign\u00e9s, merci de fournir les arguments necessaires a la connexion ") + expect_error(set_schema_rights(schema = "public", table = "test_iris", db = "test_datalibaba", user = NULL, server = Sys.getenv("server")), + "con et user ne sont pas renseign\u00e9s, merci de fournir les arguments necessaires a la connexion ") + expect_error(set_schema_rights(schema = NULL, table = "test_iris", con = con, db = "test_datalibaba", user = "test", server = Sys.getenv("server")), + "schema n'est pas renseign\u00e9. ") + + expect_null(set_schema_rights(schema = "public", table = "test_iris", db = "test_datalibaba", user = "test", server = Sys.getenv("server"))) + + }else{ + print(DBI::dbCanConnect(RPostgres::Postgres(), host="localhost", user="runner", password=Sys.getenv("BDD_RUNNER_PWD"), dbname="postgres")) + print('warning: connect_to_db - local database postgresql doesnt work !') + expect_equal(1,1) + } +})