Skip to content

Commit 5e9e7c6

Browse files
committed
Backend,Frontend,Tests: rm txDetail from SignedTx
This commit removes the redundant proposal and metadata from the SignedTransaction type.
1 parent 7689c69 commit 5e9e7c6

16 files changed

+377
-401
lines changed

src/GWallet.Backend.Tests/Deserialization.fs

Lines changed: 77 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -96,83 +96,71 @@ type Deserialization() =
9696
[<Test>]
9797
member __.``signed btc transaction import``() =
9898

99-
let deserializedSignedTrans: SignedTransaction<IBlockchainFeeInfo> =
99+
let deserializedSignedTrans: SignedTransaction =
100100
Account.ImportSignedTransactionFromJson
101101
MarshallingData.SignedBtcTransactionExampleInJson
102102

103+
// Validate deserialized SignedTranasction
103104
Assert.That(deserializedSignedTrans, Is.Not.Null)
104105

106+
Assert.That(deserializedSignedTrans.Currency, Is.EqualTo Currency.BTC)
107+
Assert.That(deserializedSignedTrans.FeeCurrency, Is.EqualTo Currency.BTC)
105108
Assert.That(deserializedSignedTrans.RawTransaction,
106-
Is.EqualTo "0200000000010111b6e0460bb810b05744f8d38262f95fbab02b168b070598a6f31fad438fced4000000001716001427c106013c0042da165c082b3870c31fb3ab4683feffffff0200ca9a3b0000000017a914d8b6fcc85a383261df05423ddf068a8987bf0287873067a3fa0100000017a914d5df0b9ca6c0e1ba60a9ff29359d2600d9c6659d870247304402203b85cb05b43cc68df72e2e54c6cb508aa324a5de0c53f1bbfe997cbd7509774d022041e1b1823bdaddcd6581d7cde6e6a4c4dbef483e42e59e04dbacbaf537c3e3e8012103fbbdb3b3fc3abbbd983b20a557445fb041d6f21cc5977d2121971cb1ce5298978c000000")
107-
108-
Assert.That(deserializedSignedTrans.TransactionInfo, Is.Not.Null)
109-
Assert.That(deserializedSignedTrans.TransactionInfo.Proposal, Is.Not.Null)
110-
Assert.That(deserializedSignedTrans.TransactionInfo.Cache, Is.Not.Null)
111-
Assert.That(deserializedSignedTrans.TransactionInfo.Metadata, Is.Not.Null)
112-
113-
Assert.That(deserializedSignedTrans.TransactionInfo.Proposal.Amount.ValueToSend,
114-
Is.EqualTo(10.01m))
115-
Assert.That(deserializedSignedTrans.TransactionInfo.Proposal.Amount.BalanceAtTheMomentOfSending,
116-
Is.EqualTo 12.02m)
117-
Assert.That(deserializedSignedTrans.TransactionInfo.Proposal.Amount.Currency,
118-
Is.EqualTo(Currency.BTC))
119-
Assert.That(deserializedSignedTrans.TransactionInfo.Proposal.DestinationAddress,
120-
Is.EqualTo("13jxHQDxGto46QhjFiMb78dZdys9ZD8vW5"))
121-
Assert.That(deserializedSignedTrans.TransactionInfo.Proposal.OriginAddress,
122-
Is.EqualTo("16pKBjGGZkUXo1afyBNf5ttFvV9hauS1kR"))
123-
124-
let btcTxMetadata = deserializedSignedTrans.TransactionInfo.Metadata :?> UtxoCoin.TransactionMetadata
125-
Assert.That(btcTxMetadata.Fee.EstimatedFeeInSatoshis, Is.EqualTo 10)
126-
Assert.That(btcTxMetadata.Inputs.Length, Is.EqualTo 1)
127-
Assert.That(deserializedSignedTrans.TransactionInfo.Metadata.FeeEstimationTime,
128-
Is.EqualTo MarshallingData.SomeDate)
129-
130-
Assert.That(deserializedSignedTrans.TransactionInfo.Cache.Balances.Count,
131-
Is.EqualTo 5)
132-
Assert.That(deserializedSignedTrans.TransactionInfo.Cache.UsdPrice.Count,
133-
Is.EqualTo 5)
134-
109+
Is.EqualTo "01000000000102cd9e4c06746721fe5d0ecdeabe29a0f05cc22bd7013ff76132efe476d9346bdc0000000017160014618869483590d6c1afe51160f244982e055d213ffdffffffef2763e4690975dc9415d36c06361ddee8393e6d9d86edd748ca21f10788fbc30100000017160014618869483590d6c1afe51160f244982e055d213ffdffffff01ba89000000000000220020574712746ca1942b8f0e3d52e4c1fd9406c3e1b602b328a2a77a57c233fed4640247304402206e9359074007c597a8243d4e5bbfb18ccfd83c0206fcbd1fafc02eb4946852f90220566e0d719b48d11f193d5d6d80eccbaaf44ee1771bf9ea7fd3810d41c5cb429f012102b7326aff8f2e56a341c31fbf50d0ce1a641859d837daffd7bf03f1f80a8c5eaa0247304402202fdbb2ea123c1150b26835ecd54cd59a22bca6a47f32167b35f355fbfcc12d22022011b8314e51b229d6d5a5ee216c9e038b5e05d1b5123485b935a1f823f2bf2279012102b7326aff8f2e56a341c31fbf50d0ce1a641859d837daffd7bf03f1f80a8c5eaa00000000")
110+
111+
// Can't validate proposal because of "unknown origin account" error
112+
113+
let btcTxMetadata =
114+
Account.GetTransactionMetadata deserializedSignedTrans
115+
|> Async.RunSynchronously
116+
:?> UtxoCoin.TransactionMetadata
117+
118+
Assert.That(btcTxMetadata.Fee.EstimatedFeeInSatoshis, Is.EqualTo 980)
119+
Assert.That(btcTxMetadata.Inputs.Length, Is.EqualTo 2)
120+
135121
[<Test>]
136122
member __.``signed ether transaction import``() =
137123

138-
let deserializedSignedTrans: SignedTransaction<IBlockchainFeeInfo> =
124+
let deserializedSignedTrans: SignedTransaction =
139125
Account.ImportSignedTransactionFromJson
140126
MarshallingData.SignedEtherTransactionExampleInJson
141127

128+
// Validate deserialized SignedTransaction
142129
Assert.That(deserializedSignedTrans, Is.Not.Null)
143130

144131
Assert.That(deserializedSignedTrans.RawTransaction,
145-
Is.EqualTo("doijfsoifjdosisdjfomirmjosmi"))
146-
147-
Assert.That(deserializedSignedTrans.TransactionInfo, Is.Not.Null)
148-
Assert.That(deserializedSignedTrans.TransactionInfo.Proposal, Is.Not.Null)
149-
Assert.That(deserializedSignedTrans.TransactionInfo.Cache, Is.Not.Null)
150-
Assert.That(deserializedSignedTrans.TransactionInfo.Metadata, Is.Not.Null)
132+
Is.EqualTo("f86b0185019d334a3482520894d2fdfa29d5ccbb8168ba248d59ded7a25396f84e87022a8ad81f98768026a06bb7c1f8f2b40ed2bc3a3b572cdde7fddb42a8d43c561c60580183b0ed8c2d9fa035183359feab8789642135a253371f80781f4a870f0cae8a7368c5d7e102a688"))
151133

152-
Assert.That(deserializedSignedTrans.TransactionInfo.Proposal.Amount.ValueToSend,
153-
Is.EqualTo(10.01m))
154-
Assert.That(deserializedSignedTrans.TransactionInfo.Proposal.Amount.BalanceAtTheMomentOfSending,
155-
Is.EqualTo 12.02m)
156-
Assert.That(deserializedSignedTrans.TransactionInfo.Proposal.Amount.Currency,
157-
Is.EqualTo(Currency.ETC))
158-
Assert.That(deserializedSignedTrans.TransactionInfo.Proposal.DestinationAddress,
159-
Is.EqualTo("0xf3j4m0rjxdddud9403j"))
160-
Assert.That(deserializedSignedTrans.TransactionInfo.Proposal.OriginAddress,
161-
Is.EqualTo("0xf3j4m0rjx94sushh03j"))
134+
Assert.That(deserializedSignedTrans.Currency,
135+
Is.EqualTo(Currency.ETH))
136+
137+
Assert.That(deserializedSignedTrans.FeeCurrency,
138+
Is.EqualTo(Currency.ETH))
162139

163-
let etherTxMetadata = deserializedSignedTrans.TransactionInfo.Metadata :?> Ether.TransactionMetadata
164-
Assert.That(etherTxMetadata.TransactionCount, Is.EqualTo(69))
140+
141+
// Validate generated proposal
142+
let proposal = Account.GetTransactionProposal deserializedSignedTrans
143+
144+
Assert.That(proposal.Amount.ValueToSend,
145+
Is.EqualTo(0.000609725773224054m))
146+
Assert.That(proposal.Amount.Currency,
147+
Is.EqualTo(Currency.ETH))
148+
Assert.That(proposal.DestinationAddress,
149+
Is.EqualTo("0xd2FDFA29D5ccbb8168Ba248D59dED7a25396f84E"))
150+
Assert.That(proposal.OriginAddress,
151+
Is.EqualTo("0xc295DDB9B89AFb7B0b23cFb76cb34ce33bc854D5"))
152+
153+
// Validate generated metadata
154+
let etherTxMetadata =
155+
Account.GetTransactionMetadata deserializedSignedTrans
156+
|> Async.RunSynchronously
157+
:?> Ether.TransactionMetadata
158+
159+
Assert.That(etherTxMetadata.TransactionCount, Is.EqualTo(1))
165160
Assert.That(etherTxMetadata.Fee.Currency,
166-
Is.EqualTo(Currency.ETC))
161+
Is.EqualTo(Currency.ETH))
167162
Assert.That(etherTxMetadata.Fee.GasPriceInWei,
168-
Is.EqualTo(6969))
169-
Assert.That(deserializedSignedTrans.TransactionInfo.Metadata.FeeEstimationTime,
170-
Is.EqualTo MarshallingData.SomeDate)
171-
172-
Assert.That(deserializedSignedTrans.TransactionInfo.Cache.Balances.Count,
173-
Is.EqualTo(2))
174-
Assert.That(deserializedSignedTrans.TransactionInfo.Cache.UsdPrice.Count,
175-
Is.EqualTo(2))
163+
Is.EqualTo(6932351540UL))
176164

177165
[<Test>]
178166
member __.``unsigned SAI transaction import``() =
@@ -205,46 +193,48 @@ type Deserialization() =
205193
Assert.That(deserializedUnsignedTrans.Cache.UsdPrice.Count, Is.EqualTo(5))
206194

207195
[<Test>]
208-
member __.``signed SAI transaction import``() =
196+
member __.``signed DAI transaction import``() =
209197

210-
let deserializedSignedTrans: SignedTransaction<IBlockchainFeeInfo> =
198+
let deserializedSignedTrans: SignedTransaction =
211199
Account.ImportSignedTransactionFromJson
212-
MarshallingData.SignedSaiTransactionExampleInJson
200+
MarshallingData.SignedDaiTransactionExampleInJson
213201

202+
// Validate deserialized SignedTransaction
214203
Assert.That(deserializedSignedTrans, Is.Not.Null)
215204

216205
Assert.That(deserializedSignedTrans.RawTransaction,
217-
Is.EqualTo("f8a80784c74d93708291b29489d24a6b4ccb1b6faa2625fe562bdd9a2326035980b844a9059cbb000000000000000000000000db0381b1a380d8db2724a9ca2d33e0c6c044be3b0000000000000000000000000000000000000000000000000de0b6b3a764000026a072cdeb03affd5977c76366efbc1405fbb4fa997ce72c1e4554ba9ec5ef772ddca069d522ea304efebd2537330870bc1ca9e9a6fe3eb5f8d8f66c1b82d9fc27a4bf"))
206+
Is.EqualTo("f8a90185016c653675828792946b175474e89094c44da98b954eedeac495271d0f80b844a9059cbb000000000000000000000000d2fdfa29d5ccbb8168ba248d59ded7a25396f84e0000000000000000000000000000000000000000000000000de0b6b3a764000026a0d5c49133f38f3b60aa41747a4b7cc300a6dac87803b82ba23af9a97fd5994c3ea03122864fd6b294a3da2f3827e70fa861838a168f6533e03587358a6bdc594235"))
218207

219-
Assert.That(deserializedSignedTrans.TransactionInfo, Is.Not.Null)
220-
Assert.That(deserializedSignedTrans.TransactionInfo.Proposal, Is.Not.Null)
221-
Assert.That(deserializedSignedTrans.TransactionInfo.Cache, Is.Not.Null)
222-
Assert.That(deserializedSignedTrans.TransactionInfo.Metadata, Is.Not.Null)
223-
224-
Assert.That(deserializedSignedTrans.TransactionInfo.Proposal.Amount.ValueToSend,
225-
Is.EqualTo(1m))
226-
Assert.That(deserializedSignedTrans.TransactionInfo.Proposal.Amount.BalanceAtTheMomentOfSending,
227-
Is.EqualTo 7.08m)
228-
Assert.That(deserializedSignedTrans.TransactionInfo.Proposal.Amount.Currency,
229-
Is.EqualTo Currency.SAI)
230-
Assert.That(deserializedSignedTrans.TransactionInfo.Proposal.DestinationAddress,
231-
Is.EqualTo("0xDb0381B1a380d8db2724A9Ca2d33E0C6C044bE3b"))
232-
Assert.That(deserializedSignedTrans.TransactionInfo.Proposal.OriginAddress,
233-
Is.EqualTo("0xba766d6d13E2Cc921Bf6e896319D32502af9e37E"))
234-
235-
let etherTxMetadata = deserializedSignedTrans.TransactionInfo.Metadata :?> Ether.TransactionMetadata
236-
Assert.That(etherTxMetadata.TransactionCount, Is.EqualTo(7))
208+
Assert.That(deserializedSignedTrans.Currency,
209+
Is.EqualTo Currency.DAI)
210+
211+
Assert.That(deserializedSignedTrans.FeeCurrency,
212+
Is.EqualTo(Currency.ETH))
213+
214+
// Validate generated proposal
215+
let proposal = Account.GetTransactionProposal deserializedSignedTrans
216+
217+
Assert.That(proposal.Amount.ValueToSend,
218+
Is.EqualTo(1.0m))
219+
Assert.That(proposal.Amount.Currency,
220+
Is.EqualTo(Currency.DAI))
221+
Assert.That(proposal.DestinationAddress,
222+
Is.EqualTo("0xd2FDFA29D5ccbb8168Ba248D59dED7a25396f84E"))
223+
Assert.That(proposal.OriginAddress,
224+
Is.EqualTo("0xc295DDB9B89AFb7B0b23cFb76cb34ce33bc854D5"))
225+
226+
// Validate generated metadata
227+
let etherTxMetadata =
228+
Account.GetTransactionMetadata deserializedSignedTrans
229+
|> Async.RunSynchronously
230+
:?> Ether.TransactionMetadata
231+
232+
Assert.That(etherTxMetadata.TransactionCount, Is.EqualTo(1))
237233
Assert.That(etherTxMetadata.Fee.Currency,
238234
Is.EqualTo(Currency.ETH))
239235
Assert.That(etherTxMetadata.Fee.GasPriceInWei,
240-
Is.EqualTo(3343750000L))
241-
Assert.That(deserializedSignedTrans.TransactionInfo.Metadata.FeeEstimationTime,
242-
Is.EqualTo MarshallingData.SomeDate)
236+
Is.EqualTo(6113539701UL))
243237

244-
Assert.That(deserializedSignedTrans.TransactionInfo.Cache.Balances.Count,
245-
Is.EqualTo 5)
246-
Assert.That(deserializedSignedTrans.TransactionInfo.Cache.UsdPrice.Count,
247-
Is.EqualTo(5))
248238

249239
[<Test>]
250240
member __.``can roundtrip currency``() =

src/GWallet.Backend.Tests/GWallet.Backend.Tests-legacy.fsproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
<Compile Include="StratumParsing.fs" />
6969
<Content Include="packages.config" />
7070
<EmbeddedResource Include="data\signedAndFormattedBtcTransaction.json" />
71-
<EmbeddedResource Include="data\signedAndFormattedSaiTransaction.json" />
71+
<EmbeddedResource Include="data\signedAndFormattedDaiTransaction.json" />
7272
<EmbeddedResource Include="data\unsignedAndFormattedSaiTransaction.json" />
7373
<EmbeddedResource Include="data\unsignedAndFormattedBtcTransaction.json" />
7474
<EmbeddedResource Include="data\signedAndFormattedEtherTransaction.json" />

src/GWallet.Backend.Tests/GWallet.Backend.Tests.fsproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
<EmbeddedResource Include="data\fullException_unixLegacy.json" />
5252
<EmbeddedResource Include="data\fullException_windowsLegacy.json" />
5353
<EmbeddedResource Include="data\signedAndFormattedBtcTransaction.json" />
54-
<EmbeddedResource Include="data\signedAndFormattedSaiTransaction.json" />
54+
<EmbeddedResource Include="data\signedAndFormattedDaiTransaction.json" />
5555
<EmbeddedResource Include="data\innerException.json" />
5656
</ItemGroup>
5757
</Project>

src/GWallet.Backend.Tests/MarshallingData.fs

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ module MarshallingData =
4141
let UnsignedSaiTransactionExampleInJson =
4242
ReadEmbeddedResource "unsignedAndFormattedSaiTransaction.json"
4343

44-
let SignedSaiTransactionExampleInJson =
45-
ReadEmbeddedResource "signedAndFormattedSaiTransaction.json"
44+
let SignedDaiTransactionExampleInJson =
45+
ReadEmbeddedResource "signedAndFormattedDaiTransaction.json"
4646

4747
let BasicExceptionExampleInJson =
4848
ReadEmbeddedResource "basicException.json"
@@ -257,8 +257,9 @@ module MarshallingData =
257257

258258
let SignedBtcTransactionExample =
259259
{
260-
TransactionInfo = UnsignedBtcTransactionExample;
261-
RawTransaction = "0200000000010111b6e0460bb810b05744f8d38262f95fbab02b168b070598a6f31fad438fced4000000001716001427c106013c0042da165c082b3870c31fb3ab4683feffffff0200ca9a3b0000000017a914d8b6fcc85a383261df05423ddf068a8987bf0287873067a3fa0100000017a914d5df0b9ca6c0e1ba60a9ff29359d2600d9c6659d870247304402203b85cb05b43cc68df72e2e54c6cb508aa324a5de0c53f1bbfe997cbd7509774d022041e1b1823bdaddcd6581d7cde6e6a4c4dbef483e42e59e04dbacbaf537c3e3e8012103fbbdb3b3fc3abbbd983b20a557445fb041d6f21cc5977d2121971cb1ce5298978c000000";
260+
Currency = Currency.BTC
261+
FeeCurrency = Currency.BTC
262+
RawTransaction = "01000000000102cd9e4c06746721fe5d0ecdeabe29a0f05cc22bd7013ff76132efe476d9346bdc0000000017160014618869483590d6c1afe51160f244982e055d213ffdffffffef2763e4690975dc9415d36c06361ddee8393e6d9d86edd748ca21f10788fbc30100000017160014618869483590d6c1afe51160f244982e055d213ffdffffff01ba89000000000000220020574712746ca1942b8f0e3d52e4c1fd9406c3e1b602b328a2a77a57c233fed4640247304402206e9359074007c597a8243d4e5bbfb18ccfd83c0206fcbd1fafc02eb4946852f90220566e0d719b48d11f193d5d6d80eccbaaf44ee1771bf9ea7fd3810d41c5cb429f012102b7326aff8f2e56a341c31fbf50d0ce1a641859d837daffd7bf03f1f80a8c5eaa0247304402202fdbb2ea123c1150b26835ecd54cd59a22bca6a47f32167b35f355fbfcc12d22022011b8314e51b229d6d5a5ee216c9e038b5e05d1b5123485b935a1f823f2bf2279012102b7326aff8f2e56a341c31fbf50d0ce1a641859d837daffd7bf03f1f80a8c5eaa00000000";
262263
}
263264

264265
let SignedBtcTransactionExampleInJson =
@@ -303,10 +304,11 @@ module MarshallingData =
303304
Cache = realCachingDataExample;
304305
Metadata = someSaiTxMetadata
305306
}
306-
let SignedSaiTransactionExample =
307+
let SignedDaiTransactionExample =
307308
{
308-
TransactionInfo = someSaiTransactionInfo
309-
RawTransaction = "f8a80784c74d93708291b29489d24a6b4ccb1b6faa2625fe562bdd9a2326035980b844a9059cbb000000000000000000000000db0381b1a380d8db2724a9ca2d33e0c6c044be3b0000000000000000000000000000000000000000000000000de0b6b3a764000026a072cdeb03affd5977c76366efbc1405fbb4fa997ce72c1e4554ba9ec5ef772ddca069d522ea304efebd2537330870bc1ca9e9a6fe3eb5f8d8f66c1b82d9fc27a4bf";
309+
Currency = Currency.DAI
310+
FeeCurrency = Currency.ETH
311+
RawTransaction = "f8a90185016c653675828792946b175474e89094c44da98b954eedeac495271d0f80b844a9059cbb000000000000000000000000d2fdfa29d5ccbb8168ba248d59ded7a25396f84e0000000000000000000000000000000000000000000000000de0b6b3a764000026a0d5c49133f38f3b60aa41747a4b7cc300a6dac87803b82ba23af9a97fd5994c3ea03122864fd6b294a3da2f3827e70fa861838a168f6533e03587358a6bdc594235";
310312
}
311313

312314
let someEtherTransactionInfo =
@@ -317,8 +319,9 @@ module MarshallingData =
317319
}
318320
let SignedEtherTransactionExample =
319321
{
320-
TransactionInfo = someEtherTransactionInfo;
321-
RawTransaction = "doijfsoifjdosisdjfomirmjosmi";
322+
Currency = Currency.ETH
323+
FeeCurrency = Currency.ETH
324+
RawTransaction = "f86b0185019d334a3482520894d2fdfa29d5ccbb8168ba248d59ded7a25396f84e87022a8ad81f98768026a06bb7c1f8f2b40ed2bc3a3b572cdde7fddb42a8d43c561c60580183b0ed8c2d9fa035183359feab8789642135a253371f80781f4a870f0cae8a7368c5d7e102a688";
322325
}
323326
let SignedEtherTransactionExampleInJson =
324327
ReadEmbeddedResource "signedAndFormattedEtherTransaction.json"

src/GWallet.Backend.Tests/Serialization.fs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,16 +76,16 @@ type Serialization() =
7676

7777
[<Test>]
7878
member __.``signed SAI transaction export``() =
79-
let json = Account.ExportUnsignedTransactionToJson MarshallingData.SignedSaiTransactionExample
79+
let json = Account.ExportUnsignedTransactionToJson MarshallingData.SignedDaiTransactionExample
8080
Assert.That(json, Is.Not.Null)
8181
Assert.That(json, Is.Not.Empty)
8282
Assert.That(json|> MarshallingData.Sanitize,
83-
Is.EqualTo MarshallingData.SignedSaiTransactionExampleInJson)
83+
Is.EqualTo MarshallingData.SignedDaiTransactionExampleInJson)
8484

8585
[<Test>]
8686
member __.``can serialize exceptions``() =
87-
let json = Account.ExportUnsignedTransactionToJson MarshallingData.SignedSaiTransactionExample
87+
let json = Account.ExportUnsignedTransactionToJson MarshallingData.SignedDaiTransactionExample
8888
Assert.That(json, Is.Not.Null)
8989
Assert.That(json, Is.Not.Empty)
9090
Assert.That(json|> MarshallingData.Sanitize,
91-
Is.EqualTo MarshallingData.SignedSaiTransactionExampleInJson)
91+
Is.EqualTo MarshallingData.SignedDaiTransactionExampleInJson)

0 commit comments

Comments
 (0)