Skip to content

Commit

Permalink
Make GetTransactionReference private
Browse files Browse the repository at this point in the history
  • Loading branch information
quantumagi committed Nov 22, 2022
1 parent 6844d8f commit 6d5fd32
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -98,8 +98,16 @@ public void CanCreateInvoice()
var transactionReference = mintableTokenInvoice.CreateInvoice("GBPT", 100, uniqueNumber);
var invoiceReference = mintableTokenInvoice.GetInvoiceReference(transactionReference);

Assert.Equal("INV-1760-4750-2039", invoiceReference.ToString());

// 42 is checksum for INV numbers.
Assert.Equal(42UL, ulong.Parse(invoiceReference.Replace("-", string.Empty)[3..]) % 97);

Assert.Equal("REF-5377-4902-2339", transactionReference.ToString());

// 1 is checksum for REF numbers.
Assert.Equal(1UL, ulong.Parse(transactionReference.Replace("-", string.Empty)[3..]) % 97);

var invoiceBytes = mintableTokenInvoice.RetrieveInvoice(invoiceReference, true);
var invoice = this.Serializer.ToStruct<Invoice>(invoiceBytes);

Expand Down Expand Up @@ -182,4 +190,34 @@ public void CantCreateInvoiceIfDidNotExist()
var ex = Assert.Throws<SmartContractAssertException>(() => mintableTokenInvoice.CreateInvoice("GBPT", 200, uniqueNumber));
Assert.Contains("processed", ex.Message);
}

[Fact]
public void CanSetIdentityContract()
{
var mintableTokenInvoice = this.CreateNewMintableTokenContract();

mintableTokenInvoice.SetIdentityContract(this.Contract);

Assert.Equal(this.Contract, mintableTokenInvoice.IdentityContract);
}

[Fact]
public void CanSetKYCProvider()
{
var mintableTokenInvoice = this.CreateNewMintableTokenContract();

mintableTokenInvoice.SetKYCProvider(2);

Assert.Equal((uint)2, mintableTokenInvoice.KYCProvider);
}

[Fact]
public void CanSetAuthorizationLimit()
{
var mintableTokenInvoice = this.CreateNewMintableTokenContract();

mintableTokenInvoice.SetAuthorizationLimit(300);

Assert.Equal((UInt256)300, mintableTokenInvoice.AuthorizationLimit);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ private struct TransactionReferenceTemplate
public Address address;
}

public string GetTransactionReference(UInt128 uniqueNumber)
private string GetTransactionReference(UInt128 uniqueNumber)
{
var template = new TransactionReferenceTemplate() { uniqueNumber = uniqueNumber, address = Message.Sender };

Expand All @@ -86,7 +86,7 @@ public string GetInvoiceReference(string transactionReference)
// Hash the transaction reference to get the invoice reference.
// This avoids the transaction reference being exposed in the SC state.
var temp = Keccak256(Serializer.Serialize(transactionReference));
var invoiceReference = $"{((Serializer.ToUInt256(temp) % 10000000000) * 97 + 1)}".PadLeft(12, '0');
var invoiceReference = $"{((Serializer.ToUInt256(temp) % 10000000000) * 97 + 42)}".PadLeft(12, '0');

return $"INV-{invoiceReference.Substring(0, 4)}-{invoiceReference.Substring(4, 4)}-{invoiceReference.Substring(8, 4)}";
}
Expand Down
Loading

0 comments on commit 6d5fd32

Please sign in to comment.