Set suitable permission to postgres tests user

Ce qu'il se passe :

Lorsque l'on souhaite lancer les tests en local avec la commande tape la commande :

bundle exec rspec --profile 10 --format RspecJunitFormatter --out ~/test_results/rspec.xml --format progress

génère l'erreur :

This is most likely caused due to missing permissions.
Rails needs superuser privileges to disable referential integrity.

    cause: PG::InsufficientPrivilege: ERROR:  permission denied: "RI_ConstraintTrigger_a_17801" is a system trigger
: ALTER TABLE "action_text_rich_texts" DISABLE TRIGGER ALL;ALTER TABLE "bill_signatures" DISABLE TRIGGER ALL;ALTER TABLE "delayed_jobs" DISABLE TRIGGER ALL;ALTER TABLE "drop_down_lists" DISABLE TRIGGER ALL;ALTER TABLE "flipper_gates" DISABLE TRIGGER ALL;ALTER TABLE "invites" DISABLE TRIGGER ALL;ALTER TABLE "task_records" DISABLE TRIGGER ALL;ALTER TABLE "administrateurs_instructeurs" DISABLE TRIGGER ALL;ALTER TABLE "schema_migrations" DISABLE TRIGGER ALL;ALTER TABLE "ar_internal_metadata" DISABLE TRIGGER ALL;ALTER TABLE "active_storage_attachments" DISABLE TRIGGER ALL;ALTER TABLE "administrateurs_procedures" DISABLE TRIGGER ALL;ALTER TABLE "active_storage_blobs" DISABLE TRIGGER ALL;ALTER TABLE "administrations" DISABLE TRIGGER ALL;ALTER TABLE "deleted_dossiers" DISABLE TRIGGER ALL;ALTER TABLE "commentaires" DISABLE TRIGGER ALL;ALTER TABLE "etablissements" DISABLE TRIGGER ALL;ALTER TABLE "exercices" DISABLE TRIGGER ALL;ALTER TABLE "exports" DISABLE TRIGGER ALL;ALTER TABLE "exports_groupe_instructeurs" DISABLE TRIGGER ALL;ALTER TABLE "flipper_features" DISABLE TRIGGER ALL;ALTER TABLE "follows" DISABLE TRIGGER ALL;ALTER TABLE "france_connect_informations" DISABLE TRIGGER ALL;ALTER TABLE "initiated_mails" DISABLE TRIGGER ALL;ALTER TABLE "individuals" DISABLE TRIGGER ALL;ALTER TABLE "geo_areas" DISABLE TRIGGER ALL;ALTER TABLE "module_api_cartos" DISABLE TRIGGER ALL;ALTER TABLE "refused_mails" DISABLE TRIGGER ALL;ALTER TABLE "services" DISABLE TRIGGER ALL;ALTER TABLE "received_mails" DISABLE TRIGGER ALL;ALTER TABLE "procedure_presentations" DISABLE TRIGGER ALL;ALTER TABLE "without_continuation_mails" DISABLE TRIGGER ALL;ALTER TABLE "users" DISABLE TRIGGER ALL;ALTER TABLE "virus_scans" DISABLE TRIGGER ALL;ALTER TABLE "trusted_device_tokens" DISABLE TRIGGER ALL;ALTER TABLE "assign_tos" DISABLE TRIGGER ALL;ALTER TABLE "groupe_instructeurs" DISABLE TRIGGER ALL;ALTER TABLE "attestation_templates" DISABLE TRIGGER ALL;ALTER TABLE "attestations" DISABLE TRIGGER ALL;ALTER TABLE "avis" DISABLE TRIGGER ALL;ALTER TABLE "types_de_champ" DISABLE TRIGGER ALL;ALTER TABLE "closed_mails" DISABLE TRIGGER ALL;ALTER TABLE "administrateurs" DISABLE TRIGGER ALL;ALTER TABLE "instructeurs" DISABLE TRIGGER ALL;ALTER TABLE "procedures" DISABLE TRIGGER ALL;ALTER TABLE "dossier_operation_logs" DISABLE TRIGGER ALL;ALTER TABLE "dossiers" DISABLE TRIGGER ALL;ALTER TABLE "feedbacks" DISABLE TRIGGER ALL;ALTER TABLE "champs" DISABLE TRIGGER ALL

Suggestion

Appliquer les droits root au user postgres db_test_user_name lors de la configuration de la base donnée dans le fichier default.pp.

Ressources PUPPET

Module Postgres > Manage users, roles, and permissions

class { 'postgresql::server':
}

postgresql::server::role { 'marmot':
  password_hash => postgresql::postgresql_password('marmot', 'mypasswd'),
}

postgresql::server::database_grant { 'test1':
  privilege => 'ALL',
  db        => 'test1',
  role      => 'marmot',
}

postgresql::server::table_grant { 'my_table of test2':
  privilege => 'ALL',
  table     => 'my_table',
  db        => 'test2',
  role      => 'marmot',
}

Ressources Postgres

ALTER TABLE DISABLE TRIGGER :

https://www.postgresql.org/docs/9.6/sql-altertable.html

Edited by Matthieu FAURE