Commit Graph

10048 Commits

Author SHA1 Message Date
chimp1984
c4b88ab512
Use createAndGetOffer from createOfferService 2019-11-14 22:56:42 -05:00
chimp1984
ef27dbd03d
Use getMaxTradeLimit from createOfferService 2019-11-14 22:44:40 -05:00
chimp1984
b584825101
Pass useMarketBasedPriceValue to getPriceAsLong 2019-11-14 22:42:39 -05:00
chimp1984
646808623c
Use marketPriceMarginParam from createOfferService 2019-11-14 22:41:53 -05:00
chimp1984
7d2016a839
Use getPriceAsLong from createOfferService 2019-11-14 22:34:22 -05:00
chimp1984
8eea87ef32
Use txFeeFromFeeService from createOfferService
- Use getEstimatedFeeAndTxSize from CreateOfferService for
txFeeFromFeeService
2019-11-14 22:14:44 -05:00
chimp1984
8423845f37
Use methods from createOfferService
- Use getBuyerSecurityDepositAsCoin and getSellerSecurityDepositAsCoin
from CreateOfferService
2019-11-14 22:03:53 -05:00
chimp1984
947fe5ae19
Add getEstimatedFeeAndTxSize method
- Rename estimateTxSize to updateEstimatedFeeAndTxSize
- Add getEstimatedFeeAndTxSize method to CreateOfferService
- Add dependent methods and fields
2019-11-14 21:53:59 -05:00
chimp1984
15f9860513
Add getSellerSecurityDeposit method 2019-11-14 21:35:01 -05:00
chimp1984
9865c80b96
Add getRandomOfferId method 2019-11-14 21:34:14 -05:00
chimp1984
e30875eb15
User weaker access, add final 2019-11-14 21:33:17 -05:00
chimp1984
bdf0d86fa4
Remove commented out code 2019-11-14 21:31:36 -05:00
chimp1984
838113f986
Add CreateOfferService class 2019-11-14 21:31:01 -05:00
chimp1984
f6b097235f
Add toProtoTradeStatistics2 method
API will use getTradeStatistics and expect TradeStatistics2 not
PersistableNetworkPayload
2019-11-14 21:06:42 -05:00
chimp1984
a20449458b
Remove trailing spaces 2019-11-14 21:05:34 -05:00
Julian Knutsen
bdfe32bd18
[BUGFIX] Validate Entry.receiversPubKey for MailboxPayloads
The remove code checks to ensure these fields match, but the add code
never did. This could lead to a situation where a MailboxStoragePayload
could be added, but never removed.
2019-11-14 10:19:28 -08:00
Julian Knutsen
9ffbcf795e
[REFACTOR] Use common path for updating map/data store on remove
Previously, the expire path, the remove path, and the onDisconnect
all used separate logic for updating the map, signaling listeners, and
removing PersistablePaylod objects from the data store. This led to a
bug where the onDisconnect path did not update the protectedDataStore.

Combine the three code paths to ensure that the same state is updated
regardless of the context.
2019-11-14 10:08:08 -08:00
Julian Knutsen
b10a603ead
[BUGFIX] Correctly remove PersistablePayload in onDisconnect path
The code to remove expired Entrys in the onDisconnect path was not
correctly removing the Entry from the protectedDataStore.

This patch adds a test that failed and fixes the bug.
2019-11-14 10:08:07 -08:00
Julian Knutsen
8ecb5b9cb1
[REFACTOR] Clean up removeExpiredEntries
* All of this work is done on the UserThread so there is no need to
clone the map.

* ArrayList objects are faster to iterate than HashSets and the data is
  guaranteed to be unique since the source is a ConcurrentHashMap

* Finding all items to remove first, then removing them all is an easier
  to read code pattern instead of removing during iteration.
2019-11-14 10:04:59 -08:00
Julian Knutsen
bdef1e46ea
Add payload safety checks in ProtectedStorageEntry
It is currently possible to construct a valid Payload object
that implements both the ProtectedStoragePayload and
PersistableNetworkPayload interfaces even though this combination is
invalid.

Instead of depending on future reviewers to catch an error, assert that
ProtectedStoragePayloads and PersistableNetworkPayloads are incompatible
as objects inside a ProtectedStorageEntry.

This allows cleanup of removeExpiredEntries that branched on this
behavior.
2019-11-14 08:42:47 -08:00
Christoph Atteneder
21b76cb869
Updating trading instructions for XMR (Monero) (#3596)
* Updating trading instructions for XMR (Monero)

Prove payments:
- clarifying that the official wallets (Monero GUI or CLI) are NOT required to send XMR, since user can use some alternative wallets (desktop: MyMonero, Exodus / mobile: Cake Wallet, MyMonero, Monerujo) that provide the information required to prove a payment (transaction key, transaction ID and destination address). This information is not provided by the remaining desktop and mobile wallets that currently support Monero, but since they could provide it in the future, I kept the warning about using other wallets different from the previously mentioned.
- listing Monero GUI as first option (for most users), and CLI as second option (for advanced users)
- renaming "transaction hash" to "transaction ID", which is used in official wallets
- renaming "tx private key" to "transaction key", which is used in official wallets
- adding "Secret key" as synonymous for "transaction key" (used in MyMonero wallet)
- adding "destination address" and keeping  "recipient's address" as synonymous
- renaming History tab to Transactions tab in Monero GUI
- adding "save recipient address" option must be enabled in Cake Wallet settings

Check payments:
- adding Monero GUI must be in Advanced mode
- adding Monero GUI verification must be done in Check Transaction section of Prove/check page
- adding parameters TXID TXKEY ADDRESS to the command check_tx_key in Monero CLI, as instructions in (https://www.getmonero.org/resources/user-guides/prove-payment.html)
- adding Explore Monero website (https://www.exploremonero.com/receipt) as alternative to verify payments
- removing payment ID instructions (it is being deprecated at the end of November in v0.15)

More info:
- directing to subreddit Monero support (https://www.reddit.com/r/monerosupport/), which is actively maintained, instead of Monero forum (https://forum.getmonero.org).

* Add max allowed message option to Popup and increase window size for Monero to improve readability
2019-11-14 17:01:27 +01:00
Christoph Atteneder
fa39258d71
Add max allowed message option to Popup and increase window size for Monero to improve readability 2019-11-14 15:21:30 +01:00
Christoph Atteneder
7e08d66a5d
Merge pull request #3575 from beingindot/account_validation
Account validation
2019-11-14 14:49:54 +01:00
beingindot
4432d80061
Added empty check validation for popmoney/revolut/uphold/zelle 2019-11-14 12:31:07 +05:30
Christoph Atteneder
459646ad68
Merge pull request #3573 from beingindot/account_validate_mg_nationalbank
Added check for empty validation
2019-11-13 17:40:47 +01:00
beingindot
755ca19ef6
Added check for empty validation
This commit is for github issue #3458 and #3459
check added for moneybeam and national bank transfer
2019-11-13 21:18:02 +05:30
Julian Knutsen
c81f8a6da3
[TESTS] Rename P2PDataStoreTest
File name now reflects the actual tests run after everything
was split up.
2019-11-12 18:06:47 -08:00
Julian Knutsen
14c78c1c85
[TESTS] Add missing license text to test files 2019-11-12 18:05:25 -08:00
Julian Knutsen
fc553121bf
[TESTS] Make SavedTestState ctor private to TestState
All test callers now just ask the TestState for a SavedTestState instead
of SavedTestState ctor. This makes more sense with the object
relationship since SavedTestState is only used internally to TestState.
2019-11-12 18:05:25 -08:00
Julian Knutsen
fa82c177f1
[TESTS] Clean up TestState static methods
All users pass in an instance of TestState, just make it an instance
method instead of static.
2019-11-12 18:05:25 -08:00
Julian Knutsen
10384acdcc
[TESTS] Split monolithic P2PDataStoreTest into separate files
One monolithic test was useful when it was under development to reduce
code churn, but now that the tests are complete it is easier to find
and run a specific test when separated into separate test files.

This also fixes a downside of Enclosed.class that didn't allow individual
tests to be run in intellij.
2019-11-12 18:05:20 -08:00
Julian Knutsen
eb2f8f315e
[TESTS] Add JavaDocs for test objects
Add JavaDocs for the various Stub and Fake objects that are used
in the P2PDataStore test so future developers can understand why they
exist.
2019-11-12 17:59:16 -08:00
Julian Knutsen
c652528ca1
[DEAD CODE] Remove obsolete tests 2019-11-12 17:47:34 -08:00
Julian Knutsen
d980932748
[DEAD CODE] Remove unused functions and imports 2019-11-12 17:47:33 -08:00
Julian Knutsen
26afd11bbf
[TESTS] Remove dead tests and code
Purge all the superseded tests and helper functions now that everything
can be unit tested.
2019-11-12 17:47:30 -08:00
Julian Knutsen
285214803e
[TESTS] Start deprecating integrations tests
Now that the unit tests cover all of the per-Entry validation,
the tests that create specific configuration of ProtectedStorageEntry
and ProtectedMailboxStorageEntry objects can be removed in favor
of mockable Entrys.

Using mocks prior to this patch was impossible due to the relationship
between the Entry objects and the P2PDataStorage helper functions. Now
that the objects are properly abstracted and tested, real unit tests
can be written for the P2PDataStore module.

This patch leaves the tests and adds an @Ignore so the reviewer can see
which unit test now supersedes the integration test.
2019-11-12 17:44:33 -08:00
Julian Knutsen
5d35d08b00
[PR COMMENTS] Logging format and function rename
Use a more compact version of string formatting
in log messages

Rename isMetadataEquals to matchesRelevantPubKey
which is more descriptive of the actual check
2019-11-12 16:36:35 -08:00
Julian Knutsen
5ae9dd1e17
Combine remove() and removeMailboxData()
Now that all the code is abstracted and tested, the remove()
and removeMailboxData() functions are identical. Combine them and update
callers appropriately.

Now, any caller don't need to know the difference and it removes the
sharp edge originally found in #3556
2019-11-12 16:22:03 -08:00
Julian Knutsen
53b5feb7a0
[TESTS] Update remove validation with BroadcastMessage type
Make the remove validation more robust by asserting that the
correct remove message is broadcast. This will provide a better
safety net when combining the remove functions.
2019-11-12 16:19:58 -08:00
Julian Knutsen
289788e374
Introduce isMetadataEquals and use it
Let the objects compare their metadata instead of doing it for them. This
allows for actual unit testing and paves the way for deduplicating the
remove code paths.

This patch also removes an unnecessary check around comparing the hash
of the stored data to the new data's hash. That check can't fail since
the hash was a requirement for the map lookup in the first place.
2019-11-12 16:19:44 -08:00
Julian Knutsen
0c07883c17
Remove duplicate check in refreshTTL
The current check verifies that the stored Payload.ownerPubKey == stored Entry.ownerPubKey.

This is the same check that was done when the item was originally added
and there is no reason to do it again.
2019-11-12 16:18:02 -08:00
Julian Knutsen
28a7bc887c
[REFACTOR] Move receiversPubKey check behind isValidForRemoveOperation()
This mailbox-only check can now exist inside the object for which it
belongs. This makes it easier to test and moves closer to allowing
the deduplication of the remove() methods.
2019-11-12 16:18:02 -08:00
Julian Knutsen
f915a03ff9
[REFACTOR] Move signature validation behind isValidForRemoveOperation()
Move the signature checks into the objects to clean up the calling code
and make it more testable.
2019-11-12 16:18:01 -08:00
Julian Knutsen
9c7dc0c1ad
[REFACTOR] Move signature validation behind isValidForAddOperation()
Move the signature checks into the objects to clean up the calling code
and make it more testable.

The testing now has to take real hashes so some work was done in the fixtures
to create valid hashable objects.
2019-11-12 16:18:01 -08:00
Julian Knutsen
40337ff1b8
Clean up toString() methods
Add toString() for ProtectedStorageEntry so log messages have useful
information and clean up the formatting.
2019-11-12 16:18:01 -08:00
Julian Knutsen
217a321bbe
[REFACTOR] Remove checkPublicKeys()
Now that the objects can answer questions about valid conditions
for add/remove, ask them directly.

This also pushes the logging down into the ProtectedStorageEntry and
ProtectedMailboxStorageEntry and cleans up the message.
2019-11-12 16:18:00 -08:00
Julian Knutsen
a6317779ed
[REFACTOR] ProtectedStorageEntry::isValidForRemoveOperation()
Extract code from P2PDataStore, test it, and use new methods.
2019-11-12 16:18:00 -08:00
Julian Knutsen
ebf33e2ff1
[REFACTOR] ProtectedStorageEntry::validForAddOperation()
Method bodies are copied from P2PDataStore to separate refactoring
efforts and behavior changes.

Identified a bug where a ProtectedMailboxStorageEntry mailbox entry
could be added, but never removed.
2019-11-12 16:18:00 -08:00
Julian Knutsen
54b4b4df15
[TESTS] Add more tests around mis-wrapped ProtectedStorageEntrys
The code around validating MailboxStoragePayloads is subtle when
a MailboxStoragePayload is wrapped in a ProtectedStorageEntry. Add tests
to document the current behavior.
2019-11-12 16:17:59 -08:00
Julian Knutsen
2c2a57ef9d
[REFACTOR] Remove duplicated code in refreshTTL
The custom code to verify the refreshTTLMessage's signature and update
an entry isn't necessary. Just have the code construct an updated
ProtectedStorageEntry from the existing and new data, verify it,
and add it to the map.

This also allows the removal of the ProtectedStorageEntry APIs
that modify internal state.
2019-11-12 16:13:47 -08:00