无法对REST测试进行身份验证

时间:2017-10-26 14:36:01

标签: yii2 codeception

我在xampp上设置了以下虚拟主机名:reporting.dev

public function userIsAuthenticated(\ApiTester $I)
    {
        $I->amGoingTo('Check Authentication works');
        // i've tried both of these ways to authenticate
        $I->amHttpAuthenticated('my_email', 'my_password');
        $I->haveHttpHeader('Authorization', 'Basic super_long_token');
        $I->sendGET(Url::toRoute('/api/reports', true)); 
        $I->seeResponseCodeIs(\Codeception\Util\HttpCode::OK); // 200
        $I->deleteHeader('Authorization');
    }

以下请求适用于邮递员http://reporting.dev/api/reports,使用Basic Auth标头和上述测试中的相同标记。

这是我的api suite配置:

class_name: ApiTester
modules:
    enabled:
      - REST:
          depends: PhpBrowser
          #url: /api/
          part: Json
      - Yii2:
          part: [orm, fixtures]
          configFile: 'config/web.php'

我使用Yii2,如果我从我的api控制器中删除了行为功能,将身份验证确定为Basic Auth,那么我会得到200响应和预期的json。

public function behaviors()
  {
      $behaviors = parent::behaviors();
      $behaviors['authenticator'] = [
          'class' => HttpBasicAuth::className(),
          'except' => [], 
      ];
      return $behaviors;
  }

所以我不确定我还能在这做什么,或者为什么我没有经过身份验证

1 个答案:

答案 0 :(得分:0)

我遇到的问题是我的数据库中的身份验证令牌不是base64编码的。

public function userIsAuthenticated(\ApiTester $I)
{
    $I->amGoingTo('Check Authentication works');
    // fixed now 
    $I->haveHttpHeader('Authorization', 'Basic ' . base64_encode('Basic super_long_db_auth_token'));
    $I->sendGET(Url::toRoute('/api/reports', true)); 
    $I->seeResponseCodeIs(\Codeception\Util\HttpCode::OK); // 200
    $I->deleteHeader('Authorization');
}