AddressListTest.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. namespace Tests\Unit\Wallet;
  3. use Illuminate\Support\Facades\Log;
  4. use Tests\Unit\CommonTest;
  5. use Uraus\App\Common\ACCOUNT_TYPE;
  6. use Uraus\App\Common\RESPONSE_CODE;
  7. use Uraus\App\Request;
  8. use Uraus\App\Response;
  9. class AddressListTest extends CommonTest
  10. {
  11. public function testA()
  12. {
  13. $token = '3e4740d2dce9a04c301ef29f74dcbca2';
  14. // 1. 准备 Protobuf 请求数据
  15. $l1 = new Request\RequestWallet\RequestWalletAddressList();
  16. $l1->setType(ACCOUNT_TYPE::UN40);
  17. $l2 = new Request\RequestWallet();
  18. $l2->setAddressList($l1);
  19. $request = new Request();
  20. $request->setWallet($l2);
  21. $requestData = $request->serializeToString();
  22. Log::info('序列化请求数据完成', [
  23. 'data_length' => strlen($requestData)
  24. ]);
  25. // 2. 发送真实的 HTTP 请求
  26. Log::info('发送 HTTP 请求');
  27. $response = $this->client->post('/api/protobuf', [
  28. 'body' => $requestData,
  29. 'headers' => [
  30. 'Content-Type' => 'application/x-protobuf',
  31. 'Accept' => 'application/x-protobuf',
  32. "Token" => $token
  33. ]
  34. ]);
  35. Log::info('收到 HTTP 响应', [
  36. 'status_code' => $response->getStatusCode(),
  37. 'headers' => $response->getHeaders()
  38. ]);
  39. // 3. 验证 HTTP 响应状态码
  40. $this->assertEquals(200, $response->getStatusCode());
  41. // 4. 解析响应数据
  42. $responseContent = $response->getBody()->getContents();
  43. Log::info('获取响应内容', [
  44. 'content_length' => strlen($responseContent)
  45. ]);
  46. $protoResponse = new Response();
  47. $protoResponse->mergeFromString($responseContent);
  48. dump($protoResponse->serializeToJsonString());
  49. Log::info('解析响应数据完成', [
  50. 'response_code' => $protoResponse->getCode(),
  51. 'run_ms' => $protoResponse->getRunMs()
  52. ]);
  53. // 5. 验证基本响应字段
  54. // $this->assertEquals(RESPONSE_CODE::HANDLE_NOT, $protoResponse->getCode());
  55. $this->assertEquals(RESPONSE_CODE::OK, $protoResponse->getCode());
  56. $this->assertStringStartsWith('token', $protoResponse->getPublic()->getLogin()->getToken());
  57. Log::info('测试完成');
  58. }
  59. }