<?php
// CurlHttpTest.php
// Created: 2024-08-13
// Updated: 2024-08-13

declare(strict_types=1);

use PHPUnit\Framework\TestCase;
use PHPUnit\Framework\Attributes\CoversClass;
use Aiwass\CurlHttpRequest;

#[CoversClass(CurlHttpRequest::class)]
final class CurlHttpTest extends TestCase {
    public function testGetRequest(): void {
        $request = new CurlHttpRequest;
        $request->setPost(false);
        $request->setUrl('https://httpbin.org/get?alreadyhere=true');
        $request->setHeader('X-Test', 'teste');
        $request->setParams('soap=beans');
        $response = json_decode($request->execute(), true);

        $this->assertTrue(array_key_exists('X-Test', $response['headers']));
        $this->assertEquals('teste', $response['headers']['X-Test']);

        $this->assertTrue(array_key_exists('alreadyhere', $response['args']));
        $this->assertEquals('true', $response['args']['alreadyhere']);

        $this->assertTrue(array_key_exists('soap', $response['args']));
        $this->assertEquals('beans', $response['args']['soap']);
    }

    public function testPostRequest(): void {
        $request = new CurlHttpRequest;
        $request->setPost(true);
        $request->setUrl('https://httpbin.org/post');
        $request->setHeader('X-Meow', 'soap');
        $request->setParams('windows=xp&macos=leopard');
        $response = json_decode($request->execute(), true);

        $this->assertTrue(array_key_exists('X-Meow', $response['headers']));
        $this->assertEquals('soap', $response['headers']['X-Meow']);

        $this->assertTrue(array_key_exists('windows', $response['form']));
        $this->assertEquals('xp', $response['form']['windows']);

        $this->assertTrue(array_key_exists('macos', $response['form']));
        $this->assertEquals('leopard', $response['form']['macos']);
    }
}