Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

运行python -m unittest discover 报错 FAILED (failures=2)( test_sign_data_with_private_key_sha1和test_sign_data_with_private_key_sha256) #50

Closed
waketzheng opened this issue May 30, 2018 · 3 comments

Comments

@waketzheng
Copy link
Contributor

运行如下命令:

$ git clone git@github.com:xxx/alipay.git
$ cd alipay
$ virtualenv --python=python venv
$ source venv/bin/activate
$ pip install -r requirements.txt
$ python -m unittest discover

测试没通过:

..............Invalid command 'sha'; type "help" for a list.
FInvalid command 'sha'; type "help" for a list.
F..
======================================================================
FAIL: test_sign_data_with_private_key_sha1 (tests.test.AliPayTestCase)
openssl 以及aliapy分别对数据进行签名,得到同样的结果
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/vagrant/coding/alipay/tests/test.py", line 108, in test_sign_data_with_private_key_sha1
    self.assertEqual(result1, result2)
AssertionError: u'Q7kdCF6TYdKFOFAjrlmi910KVZ7NnDY+/DeQVe3Qd81BhGSF2ChutTqQB2skMbqBgAzZrBj9kIrty7 [truncated]... != u''
- Q7kdCF6TYdKFOFAjrlmi910KVZ7NnDY+/DeQVe3Qd81BhGSF2ChutTqQB2skMbqBgAzZrBj9kIrty7vBzY5LxdiUQbWGsM7THGb9w7MYqFpTKKtAy4ZJUUpCxQ0gqEvoSAR21F288IgJIuBZc1MJbBr6n2uMPVHl3zc0Box8trDPjqiVOWpDLrfFcBdQeFj4udPemGc8MbWvv6MZNIsGrBJKi5zYGlbv+hsooVgjNNWWrWkIBRivMxMfA2K4CKl3kJoxflEwGr5G9o/qGPXb7xCS7NZWU9F+DQeiw7R4GRyRqtFOUMEWE5uR/rLUoFVdmhgFcgSoIbw9Bpe1XLc8SQ==
+


======================================================================
FAIL: test_sign_data_with_private_key_sha256 (tests.test.AliPayTestCase)
openssl 以及aliapy分别对数据进行签名,得到同样的结果
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/vagrant/coding/alipay/tests/test.py", line 120, in test_sign_data_with_private_key_sha256
    self.assertEqual(result1, result2)
AssertionError: u'N1IQLlHVZSmai3D0kF2r3IZTwrpUQdh0pbUAjE8bbiKBjRUvXX2T127yJW2pre4kPlS2HWgdbV6yDq [truncated]... != u''
- N1IQLlHVZSmai3D0kF2r3IZTwrpUQdh0pbUAjE8bbiKBjRUvXX2T127yJW2pre4kPlS2HWgdbV6yDqk2ykIDHldFnJBkhs/UPwt4D1Lt2rKgGETH1Tn98vgvbmYtAXNZDCAK6CcA+FTVFrpsHmBC4AkUppOb97gzmDeTRh9vTOXzNoMBv7bYktdCRPBODQEXhcTfYNS57JgB25+uuHeAQdju3TdMeupHj2K0ktpBCLNwc9FOXAjOBil0Bo3aEV4+RLllGcsig5oe3vrKL5OfenSzA9YbgiGhHC8lWtYYeeBlOY0zijRTb+uCnnwMQTKbLHY/1HoY/D9b7n1uBAL1Bw==
+


----------------------------------------------------------------------
Ran 18 tests in 0.941s

FAILED (failures=2)

操作系统和python版本如下:

$ cat /etc/issue
Ubuntu 18.04 LTS \n \l

$ python -V
Python 2.7.15rc1

怎么才能让测试通过呀?

@fzlee
Copy link
Owner

fzlee commented May 30, 2018

这边通过库以及openssl的sha函数分别对字符串进行摘要, 比较结果, 如果相同则测试通过。

result1 = alipay._sign("hello\n")
result2 = subprocess.check_output(
            "echo hello | openssl sha -sha1 -sign {} | openssl base64".format(
                self._app_private_key_path
), shell=True).decode("utf-8")

你试试在命令行下执行 openssl --help 试试, 看看有没有sha这个子命令

@fzlee fzlee closed this as completed May 30, 2018
@waketzheng
Copy link
Contributor Author

把第104行和地116行修改如下后,测试通过了:

-            "echo hello | openssl sha -sha1 -sign {} | openssl base64".format(
+            "echo hello | openssl sha1 -sign {} | openssl base64".format(

-            "echo hello | openssl sha -sha256 -sign {} | openssl base64".format(
+            "echo hello | openssl sha256 -sign {} | openssl base64".format(

@fzlee
Copy link
Owner

fzlee commented May 31, 2018

应该是实用的openssl版本不同导致的, 我改成了

openssl dgst -sha1/256

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants