gggeek/ezdbintegrity

允许检查数据库中数据的完整性

资助包维护!
tanoconsulting

安装量: 8,934

依赖项: 0

建议者: 0

安全: 0

星标: 5

关注者: 5

分支: 2

开放问题: 3

类型:ezpublish-legacy-extension

0.28.0 2023-03-11 11:32 UTC

README

对于 eZPlatform 3.0 及更高版本,请查看: https://github.com/tanoconsulting/ezdbintegritybundle

目标

允许检查数据库(eZ Publish 的,但也可以是其他数据库)中数据的完整性。允许检查 eZPublish 存储文件(内容中的图像和二进制文件)的完整性。

支持的检查

  1. 外键完整性

    这适用于没有启用外键,但实际上存在父子关系的数据库。要检查的关系通过配置文件定义。标准配置为 eZ Publish/eZPlatform 模式(版本 4.x => 5.x)提供了外键定义。

  2. 数据完整性

    类似于外键检查,这些是自定义的 SQL 查询,可以执行以查找任何类型的数据不一致。要运行的查询通过配置文件定义。标准配置为 eZ Publish/eZPlatform 模式(版本 4.x => 5.x)提供了许多数据完整性查询。

  3. 内容对象完整性

    这检查 eZ Publish 内容对象,根据其数据类型定义验证每个属性。例如,它检查是否应该为 null 的属性,或者图像文件是否丢失。请注意:目前并不支持所有数据类型,只支持有限的一组。

  4. 孤立存储文件

    这检查在已知的 eZ Publish 存储目录中找到的所有文件,并列出在数据库中找不到的任何文件,这些文件对应于 ezmedia、ezimage 和 ezbinaryfile 属性。

    注意 提醒

    • 通过 eZ5 栈生成的图像变体不会存储在数据库中的 ezimage 表中。因此,它们将被报告为孤立。如果您删除它们,eZ5 将重新生成它们,所以这不是什么大问题,但可能包括许多实际正在使用的文件。

    脚本可以选择删除文件。我们假设您使用此功能不承担任何责任!

如何使用

  • 运行 php extension/ezdbintegrity/bin/php/checkschema.php --helpphp extension/ezdbintegrity/bin/php/checkattributes.php --helpphp extension/ezdbintegrity/bin/php/checkstorage.php --help 以开始

  • 您可以在 ezdbintegrity.ini.append.php 中定义更多要检查的外键和属性类型

免责声明

!!! 不要盲目删除数据库中报告为外键违规的数据!!!

!!! 不要盲目删除报告为孤立的存储文件!!!

如果您这样做,我们不承担任何责任。您应仔细调查违规的原因。很可能问题是出在这个扩展,而不是您的数据——提供的外键定义是从现有的代码库和数据库中逆向工程得出的,并不是一成不变的。

运行测试

该包使用 PHPUnit 运行功能测试。

注意 测试 模拟与数据库的交互,但在其中创建/修改/删除许多类型的数据。因此,运行测试可能会留下陈旧/损坏的数据。建议使用专用的 eZ Publish 安装或至少专用数据库来运行测试套件。

为该包设置专用测试环境

运行扩展测试的一个安全选择是设置一个专用环境,类似于在GitHub Actions上运行测试套件时使用的环境。其优点很多:一方面,你可以从你想要的任何版本的eZPublish开始;另一方面,你将更有信心,你添加或修改的任何测试也将通过GitHub。缺点是,你需要Docker和Docker-compose,而且你将使用的环境将与传统eZPublish设置大不相同!另外,构建该环境需要相当多的磁盘空间和时间。

设置专用测试环境并在其中运行测试的步骤

git clone --depth 1 https://github.com/tanoconsulting/euts.git teststack
# if you have a github auth token, it is a good idea to copy it now to teststack/docker/data/.composer/auth.json

# this config sets up a test environment with eZPlatform 2.5 running on php 7.4 / ubuntu jammy
export TESTSTACK_CONFIG_FILE=Tests/environment/.euts.2.5.env

./teststack/teststack build
./teststack/teststack runtests
./teststack/teststack stop

注意:第一次运行时需要一些时间,但之后的运行会更快。注意:请确保有足够的磁盘空间可用。

如果您想手动运行命令,例如symfony控制台

./teststack/teststack console cache:clear

或者轻松地访问数据库shell提示符

./teststack/teststack dbconsole

或者运行测试的Docker容器的命令行shell提示符

./teststack/teststack shell

在Docker容器中运行的测试使用的是在文件Tests/environment/.euts.2.5.env中指定的debian/php/mysql/eZPlatform内核版本,该文件由环境变量TESTSTACK_CONFIG_FILE指定。如果未设置该环境变量的值,将查找名为.euts.env的文件。如果不存在此类文件,将使用一些默认值,您可以在./teststack/README.md中的文档中找到它们。如果您想针对不同的eZ/php/debian版本进行测试,请随意

  • 创建.euts.env文件(如果不存在的话)
  • 向其中添加任何必要的变量(参见文件teststack/.euts.env.example作为指导)
  • 重新构建测试堆栈
  • 以通常的方式运行测试

您甚至可以通过使用不同的环境文件,同时保持多个测试堆栈可用

  • 创建一个名为.euts.env.local的文件,并向其中添加任何所需的env变量,从唯一的COMPOSE_PROJECT_NAME开始
  • 通过./teststack/teststack. -e .euts.env.local build构建新的测试堆栈
  • 通过./teststack/teststack -e .euts.env.local runtests运行测试

License Latest Stable Version Total Downloads

Build Status Code Coverage