Commit Graph

10181 Commits (dc488624e8b24fb93b26a1bc5fd52e34785c4c2f)

Author SHA1 Message Date
Kieran Prasch ec07eee6d2 Removes Alice, Bob, and Card CLI 2022-10-18 20:22:25 +02:00
KPrasch 723cc00afc
Merge pull request #2960 from nucypher/tdec
[EPIC] Condition-Based Decryption PoC
2022-10-18 20:21:58 +02:00
Kieran Prasch 31fb711297 post-rebase import fix 2022-10-18 20:17:42 +02:00
Kieran Prasch baac304d30 Removal of ConditionLingo bytes serialization assertion 2022-10-18 20:10:38 +02:00
Kieran Prasch 5fd04472ab Support for nucypher-core Address and updates ReencryptionResponse function signature 2022-10-18 20:10:38 +02:00
Kieran Prasch d2fa00b78d fixes prior unresolved conflict 2022-10-18 20:10:38 +02:00
Kieran Prasch 9ae4d5c966 to/from wei method updates for web3 v6+ support 2022-10-18 20:10:37 +02:00
Kieran Prasch a0bbfa0f59 Bump and relock deps; Include nucypher-core v0.4.0 2022-10-18 20:09:26 +02:00
Kieran Prasch aa05019a68 Handle rust-native conditions newtype just-in-time; Co-existing with ConditionsLingo 2022-10-18 20:09:26 +02:00
jMyles fb5bf28e0c Instantiating Conditions and Context objects instead of passing native types. I don't love the 'string' and 'dict' suffixes in the names, but I'm not feeling creative this second. 2022-10-18 20:09:26 +02:00
derekpierre 19dfcd2030 Minor refactor to allow for easier testing in the future. 2022-10-18 20:09:26 +02:00
derekpierre 0d99fc3c06 More RFCs from #2980.
Co-authored-by: David Núñez <david@nucypher.com>.
Co-authored-by: Kieran Prasch <kieranprasch@gmail.com>
2022-10-18 20:09:26 +02:00
derekpierre b7f1a1085a Apply RFCs from #2980. 2022-10-18 20:09:26 +02:00
derekpierre 15819cde61 Time condition in test should use integers instead of strings. 2022-10-18 20:09:25 +02:00
derekpierre 27d6112de1 Exception occuring during RPC call is propagated back to the caller as error message.
Better exception handling by condition objects either at creation or verification - including some refactoring of RPCCondition/ContractCondition.
Added/updated unit tests.
2022-10-18 20:09:25 +02:00
derekpierre c7e16088fb Simple test that shows a contract call failure not properly handled during condition verification.
Code cleanup.
2022-10-18 20:09:25 +02:00
KPrasch 388286c18c Apply suggestions from code review
Co-authored-by: Derek Pierre <derek.pierre@gmail.com>
2022-10-18 20:09:25 +02:00
Kieran Prasch 48c357ef18 Inspiration credits to lit protocol. 2022-10-18 20:09:25 +02:00
derekpierre e3446303b7 Remove support for None in ReturnValueTest - solidity has no concept of None/null so not needed. We can revisit later.
Updated condition tests to use 'is True' or 'is False'
Added SubscriptionManager test to show condition test whose contract call returns a struct and that the struct can be tested for equality/inequality.
2022-10-18 20:09:25 +02:00
derekpierre d0d71944b9 Remove __eq__ from ReturnValueTest obj - only needed for tests. 2022-10-18 20:09:25 +02:00
derekpierre 658a4470a2 Apply RFCs from #2974.
Co-authored-by: KPrasch <kieran@nucypher.com>
2022-10-18 20:09:25 +02:00
derekpierre 96c829d5a6 ReturnValueTest can now take any valid value type (including None) for comparison - this provides flexibility based on the result of a contract call.
String value types need to be quoted, but context variables are a special case of strings that don't need to be.
Added tests.
2022-10-18 20:09:25 +02:00
derekpierre d158221794 Add '!=' comparator as a valid comparator for ReturnValueTest.
Updated tests.
2022-10-18 20:09:25 +02:00
David Núñez c238217b66 Use operator module instead of lambdas to implement comparators
Co-authored-by: Derek Pierre <derek.pierre@gmail.com>

"The operator module exports a set of efficient functions corresponding to the intrinsic operators of Python"
2022-10-18 20:09:25 +02:00
derekpierre 43094f6a4b Move type check to is_context_variable() function - code smell RFC for #2974. 2022-10-18 20:09:25 +02:00
derekpierre 5baac258c4 Make SubscriptionManager condition tests pass now that the facilities to make it pass are now available. 2022-10-18 20:09:25 +02:00
derekpierre fb257cba7d Context variables used in ReturnValueTest were not being replaced - needed for the NFT use case. Modified the code to support it.
Updated ERC721 condition tests to use an actual ERC721 contract with a minted NFT.
Added ERC721 tests for balanceof.
2022-10-18 20:09:25 +02:00
derekpierre 0379ce7114 Parameter types for ContractConditions do not have to be strings - we need to be careful with types when checking whether a parameter is a context variable or not.
ERC721 ownerOf function takes an int and not a string which caused failures.
Added/updated tests.
2022-10-18 20:09:25 +02:00
David Núñez 1e8aeb0c7b Adjust name and typehints of ReturnValueTest sanitization method 2022-10-18 20:09:25 +02:00
David Núñez 9ce80c7877 Use pre-defined functions instead of eval for comparisons 2022-10-18 20:09:25 +02:00
David Núñez 36e5368f3c Add more basic unit tests for ReturnValueTest 2022-10-18 20:09:25 +02:00
David Núñez 7219c749ba Sanitize input to constructor of ReturnValueTest 2022-10-18 20:09:25 +02:00
David Núñez 56af2bf27f Basic unit test for ConditionLingo 2022-10-18 20:09:25 +02:00
David Núñez 49075e17cd Use ast.literal_eval() to make sure that subsequent uses of eval() only evaluate expressions with literals, with no side-effects 2022-10-18 20:09:25 +02:00
David Núñez 7c976751b0 Playing around with malicious input that exploits the use of eval()
This test creates an empty file in the filesystem when evaluating a condition. This shouldn't happen! We fix it later in this PR by using the ast module
2022-10-18 20:09:25 +02:00
derekpierre da018d034e Update response messages from Ursula - only log messages were updated, whoops!
Prevent ambigous empty error messages by also including exception class names in message when catching all-encompassing/non-specific exceptions.
Don't check response code since non-200 response code checking already done by middleware.
Code cleanup.
2022-10-18 20:09:25 +02:00
derekpierre ed6227ad09 Code cleanup and additional tests.. 2022-10-18 20:09:25 +02:00
Kieran Prasch b98af7e0ac Resolves authentication TODO on server.py 2022-10-18 20:09:25 +02:00
Kieran Prasch af3820bdb4 adjust missing condition context variable HTTP error 2022-10-18 20:09:25 +02:00
derekpierre e5fb972d2a Initial work for propagating errors that occur during Porter.retrieve_cfrags and communicating them back to the caller in Porter's response. 2022-10-18 20:09:25 +02:00
derekpierre f972c72470 Code cleanup to condition context variable - follow up RFCs from #2966. 2022-10-18 20:09:25 +02:00
derekpierre e42e50a3de Apply RFC from #2966. 2022-10-18 20:09:25 +02:00
derekpierre a4b9ef62d1 Improve error handling. 2022-10-18 20:09:25 +02:00
derekpierre f6721f7b81 Don't let context variable exceptions leak into ReencryptionCondition class. 2022-10-18 20:09:25 +02:00
derekpierre be175448f4 Perform actual validation of context provided for ":userAddress" context variable.
Added tests.
2022-10-18 20:09:25 +02:00
derekpierre a6cc6ce60f Updated deps for eip712-structs. 2022-10-18 20:09:25 +02:00
derekpierre 8c7f9f5a08 Tests updated since flask 2.2.2 has a different way of doing things. 2022-10-18 20:09:25 +02:00
derekpierre 7e8d9eb7f1 Modify tests to use context instead of python parameters. Add test for use of user customized context variable.
Cleanup some test code.
2022-10-18 20:09:25 +02:00
derekpierre 6d35b5754e Simple implementation for `:userAddress` context variable pre-processing.
Allow for user customized context variable - fallback to key-value pairing in context.
2022-10-18 20:09:25 +02:00
derekpierre f164cfb3a9 Clenup of tests regarding `context`. Minor fix for using lists for ConditionLingo conditions instead of tuple. 2022-10-18 20:09:25 +02:00