protonemedia / laravel-minio-testing-tools

这是我创建的包laravel-minio-testing-tools

1.4.0 2024-03-12 11:42 UTC

This package is auto-updated.

Last update: 2024-09-20 14:04:42 UTC


README

Latest Version on Packagist Software License GitHub Tests Action Status Total Downloads Buy us a tree

此包提供了一组特质,用于在MinIO S3服务器上运行您的测试。

📝 博客文章: https://protone.media/en/blog/how-to-use-a-local-minio-s3-server-with-laravel-and-automatically-configure-it-for-your-laravel-dusk-test-suite

赞助我们

❤️ 我们自豪地通过开发Laravel包并将其免费提供给社区来支持社区。如果此包为您节省了时间,或者您在专业上依赖它,请考虑赞助维护和开发,并查看我们的最新高级包:Inertia Table。跟踪问题和拉取请求需要时间,但我们很高兴提供帮助!

特性

  • 为您的测试启动并配置MinIO服务器。
  • 更新filesystems磁盘配置。
  • 更新和恢复.env文件。
  • Laravel Dusk兼容。
  • GitHub Actions上运行。
  • 与Laravel 10兼容。
  • 需要PHP 8.1或更高版本。

安装

确保您已下载适用于您的操作系统的MinIO服务器和客户端

您可以通过Composer安装此包

composer require protonemedia/laravel-minio-testing-tools --dev

将特质添加到您的测试中,并添加bootUsesMinIOServer方法

<?php

namespace Tests\Browser;

use Illuminate\Foundation\Testing\DatabaseMigrations;
use ProtoneMedia\LaravelMinioTestingTools\UsesMinIOServer;
use Tests\DuskTestCase;

class UploadVideoTest extends DuskTestCase
{
    use DatabaseMigrations;
    use UsesMinIOServer;

    protected function setUp(): void
    {
        parent::setUp();

        $this->bootUsesMinIOServer();
    }

    /** @test */
    public function it_can_upload_a_video_using_multipart_upload()
    {
    }
}

就这些!

GitHub Actions

最简单的方法是在测试运行之前下载MinIO服务器和客户端。

jobs:
  test:
    steps:
      - uses: actions/checkout@v2

      - name: Download MinIO S3 server and client
        run: |
          wget https://dl.minio.io/server/minio/release/linux-amd64/minio -q -P /usr/local/bin/
          wget https://dl.minio.io/client/mc/release/linux-amd64/mc -q -P /usr/local/bin/
          chmod +x /usr/local/bin/minio
          chmod +x /usr/local/bin/mc
          minio --version
          mc --version

如果您正在使用php artisan serve,请确保不要使用--no-reload标志,因为.env文件将实时更改。

可选地,如果您希望在测试套件中实现持久存储,您可以在测试运行之前手动启动服务器。

jobs:
  test:
    steps:
      - uses: actions/checkout@v2

      - name: Download MinIO S3 server and client
        run: |
          wget https://dl.minio.io/server/minio/release/linux-amd64/minio -q -P /usr/local/bin/
          wget https://dl.minio.io/client/mc/release/linux-amd64/mc -q -P /usr/local/bin/
          chmod +x /usr/local/bin/minio
          chmod +x /usr/local/bin/mc
          minio --version
          mc --version

      - name: Run MinIO S3 server
        run: |
          mkdir ~/s3
          sudo minio server ~/s3 --json > minio-log.json &

      - name: Configure MinIO S3
        run: |
          mc config host add local http://127.0.0.1:9000 minioadmin minioadmin
          mc admin user add local user password
          mc admin policy set local readwrite user=user
          mc mb local/bucket-name --region=eu-west-1

      - name: Upload Minio Logs (optional)
        if: failure()
        uses: actions/upload-artifact@v2
        with:
          name: minio
          path: minio-log.json

在这种情况下,您还需要提供包含MinIO配置的环境文件。这使得配置在运行Laravel Dusk时也可由浏览器会话访问。

AWS_ACCESS_KEY_ID=user
AWS_SECRET_ACCESS_KEY=password
AWS_DEFAULT_REGION=eu-west-1
AWS_BUCKET=bucket-name
AWS_URL=http://127.0.0.1:9000
AWS_ENDPOINT=http://127.0.0.1:9000
AWS_USE_PATH_STYLE_ENDPOINT=true

测试

composer test

变更日志

有关最近更改的更多信息,请参阅CHANGELOG

贡献

有关详细信息,请参阅CONTRIBUTING

其他Laravel包

安全

如果您发现任何与安全相关的问题,请通过电子邮件发送到code@protone.media,而不是使用问题跟踪器。请不要发送任何问题,如果您有问题,请创建一个问题。

鸣谢

许可协议

MIT许可(MIT)。有关更多信息,请参阅许可文件