功能测试一个受JWT保护的api

编辑本页

功能测试一个受JWT保护的api

配置

生成一些测试特定的键,例如:

1 2
Openssl genrsa -out config/jwt/private-test. out配置Pem -aes256 4096Openssl 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
使用LexikJWTAuthenticationBundle编码器JWTEncoderInterface受保护的静态函数createAuthenticatedClient(数组索赔客户端自我::createClient ();编码器客户端->getContainer ()->get (JWTEncoderInterface::类);客户端->setServerParameter (“HTTP_Authorization”sprintf (“不记名% s”编码器->编码(索赔)));返回客户端;}
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。