我如何测试 Laravel 护照 API 端点

     2023-03-15     23

关键词:

【中文标题】我如何测试 Laravel 护照 API 端点【英文标题】:How do i test Laravel passport API endpoints 【发布时间】:2019-09-15 00:25:55 【问题描述】:

所以我想对我的 API 端点进行单元测试。 我正在使用 Laravel 5.8,api 身份验证是通过 Passport 完成的 我有以下测试:

public function guest_can_login()

    $user = factory(User::class)->create();

    $response = $this->json('POST', 'api/login', [
        'email' => $user->email,
        'password' => 'secret',
    ]);

    $response
        ->assertStatus(200)
        ->assertJson([
            'success' => true,
        ]);

当我使用 Postman 执行请求时,它运行良好,对用户进行身份验证并返回一个令牌,但是当我启动测试时它失败并显示(“预期状态代码 200 但收到 500。”)

所以我在回复中进行了更深入的搜索,我发现了这个:

"message": "未找到个人访问客户端。请创建一个。"

不知道为什么会这样,如果有人对此有见解的话

编辑:已修复,请参阅下面的最后一个答案

【问题讨论】:

【参考方案1】:

这就是我编写设置的方式...它曾经可以在没有护照哈希的情况下工作,现在已经过哈希它不起作用...有人知道为什么吗?会很酷的...

public function setUp(): void

    parent::setUp();

    Route::get('/test-route', function (Request $request) 
        return $request->user();
    )->middleware('auth:api');

    $clientRepository = new ClientRepository();

    $personal_access_client = $clientRepository->createPersonalAccessClient(
        null,
        'Personal Access Client Test',
        '/'
    );

    DB::table('oauth_personal_access_clients')->insert([
        'client_id' => $personal_access_client->id,
        'created_at' => date('Y-m-d'),
        'updated_at' => date('Y-m-d'),
    ]);

【讨论】:

致任何对哈希密码有疑问的人...就像重写配置('passport')一样简单...【参考方案2】:

运行测试时未找到护照设置,这就是运行测试时给出错误 500 的原因。命令 artisan passport install 设置测试环境的通行证以运行测试,这就是它与下面的命令行配合良好的原因;

  \Artisan::call('passport:install');

【讨论】:

您好,欢迎来到 Stack Overflow!请拨打tour。在accepted answer 和另一个answer 中已经建议了完全相同的命令,并提供了更多代码和解释。您可以编辑您的答案,以便为问题添加一些新内容吗?【参考方案3】:

如果您使用的是刷新数据库特征

public function setUp()
    parent::setUp();
     \Artisan::call('passport:install');  
  

【讨论】:

我将 Laravel 7 与 php 7.2.29 一起使用,我不得不将 'void' 作为返回类型 public function setUp(): void【参考方案4】:

只是为了让有同样问题的人清楚,问题是我使用内存数据库进行测试,每次运行测试时它都会重置,所以当然护照密钥也会被擦除,那就是为什么在测试开始时添加\Artisan::call('passport:install'); 可以解决此问题。

【讨论】:

【参考方案5】:

您看到此错误是因为您尚未创建任何护照客户端。首先,确保您已正确安装护照。然后在你的项目根目录下运行以下命令创建access client

php artisan passport:install

【讨论】:

如何在同一端点上使用护照 js 本地和基本策略?

】如何在同一端点上使用护照js本地和基本策略?【英文标题】:Howtousepassportjslocalandbasicstrategyonthesameendpoint?【发布时间】:2015-02-0106:36:19【问题描述】:我正在使用基于Yeoman生成器的MEANStack,并且我正在尝试使用密码保护我的a... 查看详情

使用外部 Laravel 护照流明 api 进行 Laravel 客户端身份验证

】使用外部Laravel护照流明api进行Laravel客户端身份验证【英文标题】:LaravelclientauthentificationwithexternalLaravelpassportlumenapi【发布时间】:2020-03-2509:38:51【问题描述】:我一直在网上寻找,但我找不到任何方法。让我解释一下,我有... 查看详情

如何将 Laravel 护照用于 Auth 和 Lumen 作为 api

】如何将Laravel护照用于Auth和Lumen作为api【英文标题】:HowtouseLaravelpassportforAuthandLumenasapi【发布时间】:2017-10-0717:37:13【问题描述】:我正在研究使用laravel、laravelpassport、lumen和AngularJS开发一个使用API的应用程序我有3个域如下aut... 查看详情

如何使用 Chrome 扩展程序获取 Laravel 护照令牌?

】如何使用Chrome扩展程序获取Laravel护照令牌?【英文标题】:HowtouseChromeextensiongetLaravelpassporttoken?【发布时间】:2019-11-2918:48:51【问题描述】:我正在使用Chrome扩展访问Laravel护照API。目前,Laravel护照API已设置并正在运行。我尝... 查看详情

如何在 laravel 中使用社交名流和护照创建 REST API

】如何在laravel中使用社交名流和护照创建RESTAPI【英文标题】:HowtocreateRESTAPIwithsocialiteandpassportinlaravel【发布时间】:2018-05-2402:15:01【问题描述】:我想创建RESTAPI,它将使用社交(谷歌)登录系统来验证用户进入系统。我正在使... 查看详情

如何在节点/套接字应用程序中验证 laravel 护照 API 令牌?

】如何在节点/套接字应用程序中验证laravel护照API令牌?【英文标题】:Howtoverifylaravelpassportapitokeninnode/socketapplication?【发布时间】:2018-10-2602:36:09【问题描述】:我的问题是关于laravel应用程序中的OAuth护照令牌,它也使用套接... 查看详情

Laravel 护照 api/用户路由未经授权

】Laravel护照api/用户路由未经授权【英文标题】:Laravelpassportapi/userrouteisunauthorized【发布时间】:2019-01-0509:39:29【问题描述】:我使用laravel护照进行令牌认证,并使用axios从vuejs前端发送请求。我可以使用oauth/tokenurl成功登录,它... 查看详情

如何在同一个 laravel 应用程序上通过 laravel 护照安全地使用 axios

】如何在同一个laravel应用程序上通过laravel护照安全地使用axios【英文标题】:Howtouseaxiossecurelywithlaravelpassportonthesamelaravelapp【发布时间】:2020-03-2804:17:40【问题描述】:我有一个准备好所有必需API的Laravel后端,一个android应用程... 查看详情

Laravel 护照和 Vue 登录

】Laravel护照和Vue登录【英文标题】:Laravelpassport&Vuelogin【发布时间】:2019-01-2316:28:30【问题描述】:我已经在laravel中使用护照api进行了登录功能,我得到状态200,问题是我不知道如何登录用户并在成功后重定向到主页请求(... 查看详情

Laravel 护照公共 api 路线

】Laravel护照公共api路线【英文标题】:Laravelpassportpublicapiroutes【发布时间】:2019-06-2304:12:15【问题描述】:我正在尝试为我的api编写一个登录函数,该函数接受用户名和密码,然后给你一个密码授权令牌来发出api请求。调用时... 查看详情

使用 laravel 为不同的 API 制作单个端点

】使用laravel为不同的API制作单个端点【英文标题】:MakingsingleendpointfordifferentAPIusinglaravel【发布时间】:2021-06-2223:51:39【问题描述】:我有一个项目需要我使用Laravel为不同的有效负载格式创建一个端点。由于我对Laravel还很陌生... 查看详情

如何在 laravel 中进行前端 api 身份验证

】如何在laravel中进行前端api身份验证【英文标题】:howtomakefrontendapiauthenticationinlaravel【发布时间】:2019-02-0710:17:25【问题描述】:我在Laravel中使用护照包创建了一个API身份验证系统。当用户每次登录时创建个人访问令牌以及注... 查看详情

使用 laravel 护照从 api 路由注册新用户

】使用laravel护照从api路由注册新用户【英文标题】:registernewuserfromapirouteusinglaravelpassport【发布时间】:2017-05-2711:31:20【问题描述】:我已经安装了laravel5.3和passport包。我一步一步地按照文档我可以使用以下路由POST/oauth/token和... 查看详情

如何在 Laravel 中将我的 API 端点路由为 api.domain.com 而不是 domain.com/api

】如何在Laravel中将我的API端点路由为api.domain.com而不是domain.com/api【英文标题】:HowtoroutemyAPIendpointsinLaravelasapi.domain.cominsteadofdomain.com/api【发布时间】:2020-01-3006:09:28【问题描述】:我是第一次使用Laravel5.8构建一个RESTfulAPI。我... 查看详情

如何使用 API 中间件在 Laravel 中测试 PHPUnit 一个经过身份验证的用户?

】如何使用API中间件在Laravel中测试PHPUnit一个经过身份验证的用户?【英文标题】:HowtotestPHPUnitanauthenticateduseronLaravelwithAPImiddelware?【发布时间】:2020-04-1921:23:23【问题描述】:我正在尝试测试需要经过身份验证的用户的路由和... 查看详情

如何在 laravel 护照中实现多身份验证

】如何在laravel护照中实现多身份验证【英文标题】:howtoimplementmultiauthinlaravelpassport【发布时间】:2018-09-0120:51:57【问题描述】:我有两个用户admin/user我想验证这两个用户的api,它适用于一个用户,但不适用于管理员看看我尝试... 查看详情

在 laravel 护照中注销用户

】在laravel护照中注销用户【英文标题】:Loggingouttheuserinlaravelpassport【发布时间】:2018-06-0710:19:18【问题描述】:我正在使用Laravel5.5进行API开发,我们如何使用laravel护照注销用户?它与网络中的注销相同还是有什么不同?提前... 查看详情

Laravel 护照(看不懂)

】Laravel护照(看不懂)【英文标题】:Laravelpassport(can`tunderstand)【发布时间】:2018-09-0908:11:40【问题描述】:我读了很多关于Laravel护照的文章和视频,但还是看不懂。我有一个适用于Laravel5.5+vueJs的应用程序。所有到后端的请求... 查看详情