功能测试一个受JWT保护的api
编辑本页功能测试一个受JWT保护的api
配置
生成一些测试特定的键,例如:
1 2
$Openssl genrsa -out config/jwt/private-test. out配置Pem -aes256 4096$Openssl rsa -pubout - .在配置/ jwt /私有测试。输出config/jwt/public-test.pem
重写包配置config_test.yml
:
1 2 3 4
#配置/测试/ lexik_jwt_authentication.yamllexik_jwt_authentication:secret_key:' % kernel.project_dir % / config / jwt private-test.pem”public_key:' % kernel.project_dir % / config / jwt public-test.pem”
Protip:如果打算在CI服务器上运行测试,则可能需要提交这些密钥。
使用
创建一个已验证的客户端:
12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
/** *创建一个默认授权头的客户端。* *@param字符串$username *@param字符串$password * *@return\ob娱乐下载 Symfony \包\ FrameworkBundle \客户* /受保护的函数createAuthenticatedClient($用户名=“用户”,$密码=“密码”){$客户端=静态::createClient ();$客户端->请求(“职位”,“/ api / login_check”, [], [], [“CONTENT_TYPE”= >“application / json”], json_encode ([“_username”= >$用户名,“_password”= >$密码,]));$数据= json_decode ($客户端->getResponse ()->getContent (),真正的);$客户端->setServerParameter (“HTTP_Authorization”sprintf (“不记名% s”,$数据[“令牌”)));返回$客户端;}/** * test getPagesAction */公共函数testGetPages(){$客户端=$这->createAuthenticatedClient ();$客户端->请求(“得到”,“/ api /页”);/ /……}
或者手动生成一个用于端到端测试的JWT令牌:
1 2 3 4 5 6 7 8 9 10 11
使用Lexik\包\JWTAuthenticationBundle\编码器\JWTEncoderInterface;受保护的静态函数createAuthenticatedClient(数组$索赔){$客户端=自我::createClient ();$编码器=$客户端->getContainer ()->get (JWTEncoderInterface::类);$客户端->setServerParameter (“HTTP_Authorization”sprintf (“不记名% s”,$编码器->编码($索赔)));返回$客户端;}
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。