Something went wrong. Try again.
A barebones implementation of an atproto PDS in PHP and Slim Framework 4.
pds php atproto
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697<?php
declare(strict_types=1);
namespace Tests;
use DI\ContainerBuilder;use Exception;use PHPUnit\Framework\TestCase as PHPUnit_TestCase;use Prophecy\PhpUnit\ProphecyTrait;use Psr\Container\ContainerInterface;use Psr\Http\Message\ServerRequestInterface as Request;use Slim\App;use Slim\Factory\AppFactory;use Slim\Psr7\Factory\StreamFactory;use Slim\Psr7\Headers;use Slim\Psr7\Request as SlimRequest;use Slim\Psr7\Uri;
class TestCase extends PHPUnit_TestCase{ use ProphecyTrait;
/** * @return App<ContainerInterface|null> * @throws Exception */ protected function getAppInstance(): App { // Instantiate PHP-DI ContainerBuilder $containerBuilder = new ContainerBuilder();
// Container intentionally not compiled for tests.
// Set up settings $settings = require __DIR__ . '/../app/settings.php'; assert($settings instanceof \Closure); $settings($containerBuilder);
// Set up dependencies $dependencies = require __DIR__ . '/../app/dependencies.php'; assert($dependencies instanceof \Closure); $dependencies($containerBuilder);
// Set up repositories $repositories = require __DIR__ . '/../app/repositories.php'; assert($repositories instanceof \Closure); $repositories($containerBuilder);
// Build PHP-DI Container instance $container = $containerBuilder->build();
// Instantiate the app AppFactory::setContainer($container); $app = AppFactory::create();
// Register middleware $middleware = require __DIR__ . '/../app/middleware.php'; assert($middleware instanceof \Closure); $middleware($app);
// Register routes $routes = require __DIR__ . '/../app/routes.php'; assert($routes instanceof \Closure); $routes($app);
return $app; }
/** * @param array<string, string|array<int, string>> $headers * @param array<string, string> $cookies * @param array<string, mixed> $serverParams */ protected function createRequest( string $method, string $path, array $headers = ['HTTP_ACCEPT' => 'application/json'], array $cookies = [], array $serverParams = [] ): Request { $uri = new Uri('', '', 80, $path); $handle = fopen('php://temp', 'w+'); if ($handle === false) { throw new \RuntimeException('Unable to open php://temp'); } $stream = (new StreamFactory())->createStreamFromResource($handle);
$h = new Headers(); foreach ($headers as $name => $value) { $h->addHeader($name, $value); }
return new SlimRequest($method, $uri, $h, $cookies, $serverParams, $stream); }}