module PgRls::Database::Prepared

Prepare database for test unit

Public Class Methods

grant_user_credentials(name: PgRls::SECURE_USERNAME, password: 'password') click to toggle source
# File lib/pg_rls/database/prepared.rb, line 8
        def grant_user_credentials(name: PgRls::SECURE_USERNAME, password: 'password')
          return unless Rails.env.test? || PgRls.default_connection?

          PgRls.admin_execute <<-SQL
            DO
            $do$
            BEGIN
              IF NOT EXISTS (
                SELECT FROM pg_catalog.pg_roles AS r
                WHERE r.rolname = '#{name}') THEN

                  CREATE USER #{name} WITH PASSWORD '#{password}';
              END IF;
            END
            $do$;
            GRANT USAGE ON SCHEMA public TO #{name};
            ALTER DEFAULT PRIVILEGES IN SCHEMA public
              GRANT SELECT, INSERT, UPDATE, DELETE
              ON TABLES TO #{name};
            GRANT SELECT, INSERT, UPDATE, DELETE
              ON ALL TABLES IN SCHEMA public
              TO #{name};
            GRANT USAGE, SELECT
              ON ALL SEQUENCES IN SCHEMA public
              TO #{name};
          SQL
        end