mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-11-21 04:35:49 +00:00
feat: add input check for OracleSet params AssetPrice and Scale (#2699)
* add input check for AssetPrice and Scale being either both present or excluded
This commit is contained in:
@@ -130,6 +130,18 @@ export function validateOracleSet(tx: Record<string, unknown>): void {
|
||||
)
|
||||
}
|
||||
|
||||
// Either AssetPrice and Scale are both present or both excluded
|
||||
if (
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- we are validating the type
|
||||
(priceData.PriceData.AssetPrice == null) !==
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- we are validating the type
|
||||
(priceData.PriceData.Scale == null)
|
||||
) {
|
||||
throw new ValidationError(
|
||||
'OracleSet: PriceDataSeries must have both `AssetPrice` and `Scale` if any are present',
|
||||
)
|
||||
}
|
||||
|
||||
if (
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- we are validating the type
|
||||
'AssetPrice' in priceData.PriceData &&
|
||||
|
||||
@@ -150,6 +150,22 @@ describe('OracleSet', function () {
|
||||
assert.throws(() => validate(tx), ValidationError, errorMessage)
|
||||
})
|
||||
|
||||
it(`throws w/ missing AssetPrice with Scale present of PriceDataSeries`, function () {
|
||||
delete tx.PriceDataSeries[0].PriceData.AssetPrice
|
||||
const errorMessage =
|
||||
'OracleSet: PriceDataSeries must have both `AssetPrice` and `Scale` if any are present'
|
||||
assert.throws(() => validateOracleSet(tx), ValidationError, errorMessage)
|
||||
assert.throws(() => validate(tx), ValidationError, errorMessage)
|
||||
})
|
||||
|
||||
it(`throws w/ missing Scale with AssetPrice present of PriceDataSeries`, function () {
|
||||
delete tx.PriceDataSeries[0].PriceData.Scale
|
||||
const errorMessage =
|
||||
'OracleSet: PriceDataSeries must have both `AssetPrice` and `Scale` if any are present'
|
||||
assert.throws(() => validateOracleSet(tx), ValidationError, errorMessage)
|
||||
assert.throws(() => validate(tx), ValidationError, errorMessage)
|
||||
})
|
||||
|
||||
it(`throws w/ invalid AssetPrice of PriceDataSeries`, function () {
|
||||
tx.PriceDataSeries[0].PriceData.AssetPrice = '1234'
|
||||
const errorMessage = 'OracleSet: invalid field AssetPrice'
|
||||
|
||||
Reference in New Issue
Block a user