ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

测试驱动开发:用 Docker 搭建 deno-postgres 三种认证模式测试环境

测试驱动开发:用 Docker 搭建 deno-postgres 三种认证模式测试环境 测试驱动开发用 Docker 搭建 deno-postgres 三种认证模式测试环境【免费下载链接】postgresPostgreSQL driver for Deno项目地址: https://gitcode.com/gh_mirrors/postgr/postgresdeno-postgres 是 Deno 生态中最流行的 PostgreSQL 驱动PostgreSQL driver for Deno。做测试驱动开发TDD时最头疼的不是写断言而是准备一个稳定、可复现、覆盖各种认证方式的数据库测试环境。好消息是deno-postgres 项目自带一套完整的 Docker 测试环境一条命令就能同时启动clear、md5、scram-sha-256三种 PostgreSQL 认证模式的服务并自动跑完全部测试。本文带你完整搭建并理解这套环境让你从零开始也能为 deno-postgres 贡献代码或复现认证问题。为什么测试驱动开发需要三种认证模式PostgreSQL 的客户端认证pg_hba.conf经历了多代演变驱动必须逐一兼容认证模式安全性说明clearpassword⚠️ 明文传输仅存在于 PostgreSQL 9 及更早版本早已移除md5中等传统加密方式至今仍有大量老系统使用scram-sha-256✅ 最强现代 PostgreSQL 默认认证基于挑战-响应机制如果只测默认的 scram就可能在 md5 或明文模式下翻车。deno-postgres 的测试正是针对这三种模式分别设计了独立的数据库实例这就是 docker-compose.yml 里出现三个 PostgreSQL 服务的原因。一眼看懂 deno-postgres 自带的测试环境项目根目录的 docker-compose.yml 定义了完整的测试矩阵服务名镜像版本认证模式端口postgres_clearpostgres:9明文 password6000postgres_md5postgres:14md56001postgres_scrampostgres:14scram-sha-2566002每个服务的配置都放在独立的目录里例如 docker/postgres_scram/data/ 下就有pg_hba.conf认证规则、postgresql.conf服务配置、server.crt和server.keyTLS 证书。这些测试用的 TLS 证书由 docker/generate_tls_keys.sh 生成用于验证 SSL 连接场景。一键搭建最快配置方法无需手工改任何配置克隆仓库后两条命令搞定git clone https://gitcode.com/gh_mirrors/postgr/postgres cd postgres docker compose build --no-cache docker compose run testsdocker compose run tests会自动完成三件事✅ 启动三个数据库容器 → ✅ 等待端口就绪WAIT_HOSTS→ ✅ 在容器内执行deno test -A --parallel --check跑完整套测试。整个过程完全自动化这正是测试驱动开发想要的可重复环境。三种认证模式背后的配置细节scram-sha-256 的认证规则pg_hba.conf同时覆盖了 SSL 与非 SSL 连接hostssl postgres scram 0.0.0.0/0 scram-sha-256 hostnossl postgres scram 0.0.0.0/0 scram-sha-256md5 模式pg_hba.conf则混合了 md5 与 scram 用户专门测试两种加密并存的情况。而clear 模式pg_hba.conf使用password认证验证老版本 PostgreSQL 的兼容性。数据库初始化时initialize_test_server.sql 会创建scram、md5、clear、socket等专用测试用户密码统一为postgres。md5 版本甚至通过UPDATE PG_AUTHID强制把密码改写成 md5 格式——这些细节都是为了让认证测试覆盖到真实的边界情况。把测试跑起来本地运行与 Docker 运行Docker 是推荐方式但如果你本机已装了 PostgreSQL也可以直接运行deno test --allow-read --allow-net --allow-env测试用例集中在 tests/ 目录认证相关逻辑在 tests/auth_test.ts连接与连接参数测试在 tests/connection_test.ts 和 tests/connection_params_test.ts数据编码解码则在 tests/data_types_test.ts 等文件中。具体运行说明可参考 tests/README.md。不只是认证事务隔离级别也值得关注除认证之外deno-postgres 对 PostgreSQL 事务隔离级别的支持同样完善。项目文档中的这张对比图直观展示了read committed、repeatable read、serializable三种隔离级别在防脏读、防不可重复读、防幻读等方面的差异写事务相关测试前值得先看一遍常见问题与调试技巧端口被占用三个服务固定使用 6000/6001/6002 端口冲突时先docker compose stop清理。等待初始化WAIT_AFTER_HOSTS: 15表示数据库上线后还要等 15 秒让元数据初始化完成测试失败时先确认这步是否走完。TLS 证书过期本地重新运行 docker/generate_tls_keys.sh 即可重新生成。小结用 Docker 搭建 deno-postgres 三种认证模式测试环境本质上就是把环境搭建从手工操作变成可复现的声明式配置。一次docker compose run tests三种认证模式、SSL 连接、socket 连接全部覆盖测试驱动开发的循环因此变得又快又稳。如果你正准备为 deno-postgres 提交认证相关的代码或修复这套现成的环境就是你最好的起点。【免费下载链接】postgresPostgreSQL driver for Deno项目地址: https://gitcode.com/gh_mirrors/postgr/postgres创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表