terraform/internal/backend/remote-state/pg
2026-02-23 18:09:29 +01:00
..
backend.go make copyrightfix 2026-02-17 13:56:34 +00:00
backend_state.go make copyrightfix 2026-02-17 13:56:34 +00:00
backend_test.go make copyrightfix 2026-02-17 13:56:34 +00:00
client.go make copyrightfix 2026-02-17 13:56:34 +00:00
client_test.go make copyrightfix 2026-02-17 13:56:34 +00:00
go.mod make syncdeps 2026-02-23 18:09:29 +01:00
go.sum make syncdeps 2026-02-23 18:09:29 +01:00
README.md Add backend testing documentation (#37448) 2025-08-18 11:17:03 +01:00

How to test the pg backend

Create a Postgres resources in a Docker container

1.Run this command to launch a Docker container using the postgres image that can use SSL:

docker run \
  --name pg_backend_testing \
  --rm \
  -e POSTGRES_USER=postgres \
  -e POSTGRES_PASSWORD=password \
  -p 5432:5432 \
  postgres:latest \
  -c ssl=on \
  -c ssl_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem \
  -c ssl_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

Note that for testing we use the user "postgres", and this value is reused in command below.

  1. Use exec to access a shell inside the Docker container:
% docker exec -it $(docker ps -aqf "name=^pg_backend_testing$") bash
  1. Run a command to create a Postgres database called terraform_backend_pg_test
root@<container-id>:/# createdb -U postgres terraform_backend_pg_test
root@<container-id>:/# exit

Set up environment variables needed for tests

Set the following environment variables:

DATABASE_URL=postgresql://localhost:5432/terraform_backend_pg_test?sslmode=require
PGUSER=postgres
PGPASSWORD=password

The DATABASE_URL value is a connection string and should not include the username and password. Instead, the username and password must be supplied by separate environment variables to let some tests override those values.

Run the tests!

The setup above should be sufficient for running the tests. Each time you want to run the tests you will need to re-launch the container and create the terraform_backend_pg_test database that's expected by the tests.