mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-11-20 20:25:48 +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 (
|
if (
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- we are validating the type
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- we are validating the type
|
||||||
'AssetPrice' in priceData.PriceData &&
|
'AssetPrice' in priceData.PriceData &&
|
||||||
|
|||||||
@@ -150,6 +150,22 @@ describe('OracleSet', function () {
|
|||||||
assert.throws(() => validate(tx), ValidationError, errorMessage)
|
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 () {
|
it(`throws w/ invalid AssetPrice of PriceDataSeries`, function () {
|
||||||
tx.PriceDataSeries[0].PriceData.AssetPrice = '1234'
|
tx.PriceDataSeries[0].PriceData.AssetPrice = '1234'
|
||||||
const errorMessage = 'OracleSet: invalid field AssetPrice'
|
const errorMessage = 'OracleSet: invalid field AssetPrice'
|
||||||
|
|||||||
Reference in New Issue
Block a user