hyperledger / aries-agent-test-harness

Aries agent test framework, with agent backchannel support
https://aries-interop.info
Apache License 2.0
60 stars 65 forks source link

Add anoncred support #759

Closed jamshale closed 8 months ago

jamshale commented 8 months ago

This allows the askar-anoncreds wallet and endpoints to be tested in the test harness by running the command BACKCHANNEL_EXTRA_acapy_main="{\"wallet-type\":\"askar-anoncreds\"}" ./manage run -d acapy-main -t @Anoncreds

Some imports and formatting was changed due to my ruff formatting extension. Not sure if anyone cares.

Note: This was based off of my acapy fork which includes the recent anoncred endpoint changes. They have been merged to acapy but for some reason acapy main wasn't getting updated with the latest code for me when I was developing.

nodlesh commented 7 months ago

Note that there are other ways to set the wallet-type on an agent besides the EXTRA args. One is to use an ACA-Py config file that contains startup parameters. The other is in a feature file, as seen in the draft PR https://github.com/hyperledger/aries-agent-test-harness/pull/760 where we add start_parameters to the Given we have n agents step. I'll probably add support for these other options in that PR.

ianco commented 7 months ago

Note that there are other ways to set the wallet-type on an agent besides the EXTRA args. One is to use an adapt config file that contains startup parameters. The other is in a feature file, as seen in the draft PR #760 where we add start_parameters to the Given we have n agents step. I'll probably add support for these other options in that PR.

I think we generally want to set the wallet type globally. I.e. run me all the tests with aca-py askar wallet, or askar-anoncreds wallet. I don't see the value in setting this in a feature file where we set this on a per-test basis.

ianco commented 7 months ago

Note that the V1 credential and presentation endpoints are not supported for anoncreds (and won't be) so we should add a tag to these (@DEPRECATED or something like that), so we can run ... -t ~@DEPRECATED ...)

nodlesh commented 7 months ago

I think we generally want to set the wallet type globally. I.e. run me all the tests with aca-py askar wallet, or askar-anoncreds wallet. I don't see the value in setting this in a feature file where we set this on a per-test basis.

Yes, I agree, generally. It depends on if we want these tests to run in existing runsets or have them separate. All I've done here is open up the start parameters to be fully added to the features file data. It only worked with Transport Protocols previously, and instead of just adding the did peer flags, I opened it all up.

We are adding the @AnonCreds tag to tests that need handling for that. I think that should cover the case for the @Deprecated, maybe?

Right now, this PR, checks for wallet type in the EXTRA Args environment variable to set the handling for AnonCreds, I think it also should check if the tag @AnonCred is set on the tests. Whether or not the wallet type setting comes from the feature file (rarely, if ever), or the config file, the tag will handle all cases.

ianco commented 7 months ago

askar-anoncreds will eventually replace askar and we will be deprecating indy so we don't need to put too much effort into supporting multiple wallet types.

Agree regarding the @AnonCreds tag, however we may deprecate api's for other reasons ...