Codeception / Codeception/module-mezzio

Does this module work with `codeception/module-rest`?

Ouverte
#18 3 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
PHP
Étoiles
1
Forks
4
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

I'm getting 401 (Unauthorized) in the tests I use $I->amHttpAuthenticated('test', 'test'); with.
Routes that I don't check authorization seem to work.

When I run a test using Mezzio

FetchCest: Test fetch and retrieve svg
Signature: Codeception\Acceptance\FetchCest:testFetchAndRetrieveSvg
Test: tests/Codeception/Acceptance/FetchCest.php:testFetchAndRetrieveSvg
Scenario --
 I am http authenticated "test","test"
 I send post "/fetch",{"url":"https://upload.wikimedia.org/wikipedia/en/8/80/Wikipedia-logo-v2.svg","name":"Wikipedia Logo"}
  [Request] POST /fetch {"url":"https://upload.wikimedia.org/wikipedia/en/8/80/Wikipedia-logo-v2.svg","name":"Wikipedia Logo"}
  [Request Headers] []
  [Page] /fetch
  [Response] 401
  [Request Cookies] []
  [Response Headers] {"WWW-Authenticate":["Basic realm="media-store""]}
  [Response] 
 I see response is json 
 FAIL 

When I run it using PhpBrowser

FetchCest: Test fetch and retrieve svg
Signature: Codeception\Acceptance\FetchCest:testFetchAndRetrieveSvg
Test: tests/Codeception/Acceptance/FetchCest.php:testFetchAndRetrieveSvg
Scenario --
 I am http authenticated "test","test"
 I send post "/fetch",{"url":"https://upload.wikimedia.org/wikipedia/en/8/80/Wikipedia-logo-v2.svg","name":"Wikipedia Logo"}
  [Request] POST http://media-store.localhost/fetch {"url":"https://upload.wikimedia.org/wikipedia/en/8/80/Wikipedia-logo-v2.svg","name":"Wikipedia Logo"}
  [Request Headers] []
  [Page] http://media-store.localhost/fetch
  [Response] 200
  [Request Cookies] []
  [Response Headers] {"Server":["nginx/1.27.1"],"Date":["Wed, 09 Oct 2024 02:29:39 GMT"],"Content-Type":["application/json"],"Transfer-Encoding":["chunked"],"Connection":["keep-alive"],"X-Powered-By":["PHP/8.3.12"]}
  [Response] {"success":true,"url":"http://media-store.localhost/img/store/79/bd/bb953537891b27c9d26a0f1815584fbe5364/wikipedia-logo","meta":{"width":103,"height":94,"filesize":165428,"mimetype":"image/svg+xml"}}
 I see response is json 
 I see response contains json {"success":true,"meta":{"mimetype":"image/svg+xml"}}
 I see response code is 200
 I grab data from response by json path "url"
 I assert not null "/img/store/79/bd/bb953537891b27c9d26a0f1815584fbe5364/wikipedia-logo"
 I assert string contains string ignoring case "Wikipedia","/img/store/79/bd/bb953537891b27c9d26a0f1815584fbe5364/wikipedia-logo"
 I assert string contains string ignoring case "Logo","/img/store/79/bd/bb953537891b27c9d26a0f1815584fbe5364/wikipedia-logo"
 I am http authenticated "",""
 I send get "/img/store/79/bd/bb953537891b27c9d26a0f1815584fbe5364/wikipedia-logo"
  [Request] GET http://media-store.localhost/img/store/79/bd/bb953537891b27c9d26a0f1815584fbe5364/wikipedia-logo
  [Request Headers] []
  [Page] http://media-store.localhost/img/store/79/bd/bb953537891b27c9d26a0f1815584fbe5364/wikipedia-logo
  [Response] 200
  [Request Cookies] []
  [Response Headers] {"Server":["nginx/1.27.1"],"Date":["Wed, 09 Oct 2024 02:29:40 GMT"],"Content-Type":["image/svg+xml"],"Transfer-Encoding":["chunked"],"Connection":["keep-alive"],"X-Powered-By":["PHP/8.3.12"],"Last-Modified":["Tue, 08 Oct 2024 07:59:10 GMT"],"Cache-Control":["public, max-age=86400, no-transform"],"ETag":["0df5066882793e7b1893e3adc393abbc"]}
  [Response] <A very long XML string here>
 I see response code is 200
 PASSED 

Here's my Acceptance.suite.yml

actor: AcceptanceTester
suite_namespace: Codeception\Acceptance
modules:
  enabled:
    - \Codeception\Module\Asserts
    - \Codeception\Module\REST
  config:
    \Codeception\Module\REST:
      depends: \Codeception\Module\PhpBrowser
      url: http://media-store.localhost/
env:
  mezzio:
    modules:
      enabled:
        - \Codeception\Module\Mezzio
      config:
        \Codeception\Module\REST:
          depends: \Codeception\Module\Mezzio
          url: /
  docker:
    modules:
      config:
        \Codeception\Module\REST:
          url: http://localhost:8080/

And my test

public function testFetchAndRetrieveSvg(AcceptanceTester $I): void
{
    // Fetch the Wikipedia logo
    $I->amHttpAuthenticated('test', 'test');
    $I->sendPost('/fetch', [
        'url' => 'https://upload.wikimedia.org/wikipedia/en/8/80/Wikipedia-logo-v2.svg',
        'name' => 'Wikipedia Logo',
    ]);
    $I->seeResponseIsJson();
    $I->seeResponseContainsJson([
        'success' => true,
        'meta' => [
            'mimetype' => 'image/svg+xml',
        ],
    ]);
    $I->seeResponseCodeIs(StatusCodes::STATUS_OK);

    // Parse the URL that we retrieved in the response
    $path = parse_url($I->grabDataFromResponseByJsonPath('url')[0])['path'];
    $I->assertNotNull($path);
    $I->assertStringContainsStringIgnoringCase('Wikipedia', $path);
    $I->assertStringContainsStringIgnoringCase('Logo', $path);

    // Retrieve the stored image without authentication
    $I->amHttpAuthenticated('', '');
    $I->sendGet($path);
    $I->seeResponseCodeIs(StatusCodes::STATUS_OK);
}

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par tests/Codeception/Acceptance/FetchCest.php et Acceptance.suite.yml, puis comparez la configuration du module REST sous PhpBrowser avec la configuration de Mezzio. Reproduisez la requête POST authentifiée à l’aide du module Mezzio et examinez le module ainsi que l’intégration REST concernés. Le travail est terminé lorsque la requête s’authentifie correctement avec Mezzio et qu’un test de régression couvre ce comportement.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
php
Domaine
backend, testing
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
25/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.