mirror of https://codeberg.org/pzp/pzp-db.git
allow adding erased msgs
This commit is contained in:
parent
b92d25c6a2
commit
25eb244608
|
@ -298,18 +298,21 @@ function validateData(msg) {
|
||||||
* @param {Msg} msg
|
* @param {Msg} msg
|
||||||
*/
|
*/
|
||||||
function validateDataSizeHash(msg) {
|
function validateDataSizeHash(msg) {
|
||||||
const [dataHash, dataSize] = representData(msg.data)
|
const { dataHash: actualHash, dataSize: actualSize } = msg.metadata
|
||||||
if (!Number.isSafeInteger(dataSize) || dataSize < 0) {
|
if (!Number.isSafeInteger(actualSize) || actualSize < 0) {
|
||||||
// prettier-ignore
|
// prettier-ignore
|
||||||
return `invalid msg: dataSize ${dataSize} should have been an unsigned integer\n` + JSON.stringify(msg)
|
return `invalid msg: dataSize ${actualSize} should have been an unsigned integer\n` + JSON.stringify(msg)
|
||||||
}
|
}
|
||||||
if (dataHash !== msg.metadata.dataHash) {
|
|
||||||
|
if (msg.data === null) return
|
||||||
|
const [expectedHash, expectedSize] = representData(msg.data)
|
||||||
|
if (actualHash !== expectedHash) {
|
||||||
// prettier-ignore
|
// prettier-ignore
|
||||||
return `invalid msg: data hash "${dataHash}" does not match metadata.dataHash "${msg.metadata.dataHash}"\n` + JSON.stringify(msg)
|
return `invalid msg: metadata.dataHash "${actualHash}" should have been "${expectedHash}"\n` + JSON.stringify(msg)
|
||||||
}
|
}
|
||||||
if (dataSize !== msg.metadata.dataSize) {
|
if (expectedSize !== msg.metadata.dataSize) {
|
||||||
// prettier-ignore
|
// prettier-ignore
|
||||||
return `invalid msg: data size "${dataSize}" does not match metadata.dataSize "${msg.metadata.dataSize}"\n` + JSON.stringify(msg)
|
return `invalid msg: metadata.dataSize ${actualSize} should have been "${expectedSize}"\n` + JSON.stringify(msg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -136,3 +136,32 @@ test('validate 2nd forked msg', (t) => {
|
||||||
const err = MsgV3.validate(msg1B, tangle, pubkeys, msgID1B, mootID)
|
const err = MsgV3.validate(msg1B, tangle, pubkeys, msgID1B, mootID)
|
||||||
assert.ifError(err, 'valid 2nd forked msg')
|
assert.ifError(err, 'valid 2nd forked msg')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('validate erased msg', (t) => {
|
||||||
|
const keypair = Keypair.generate('ed25519', 'alice')
|
||||||
|
const account = MsgV3.getMsgID(
|
||||||
|
MsgV3.createAccount(keypair, 'person', 'alice')
|
||||||
|
)
|
||||||
|
const pubkeys = new Set([keypair.public])
|
||||||
|
|
||||||
|
const moot = MsgV3.createMoot(account, 'post', keypair)
|
||||||
|
const mootID = MsgV3.getMsgID(moot)
|
||||||
|
const tangle = new MsgV3.Tangle(mootID)
|
||||||
|
tangle.add(mootID, moot)
|
||||||
|
|
||||||
|
const msg1 = MsgV3.create({
|
||||||
|
account,
|
||||||
|
accountTips: [account],
|
||||||
|
domain: 'post',
|
||||||
|
data: { text: 'Hello world!' },
|
||||||
|
tangles: {
|
||||||
|
[mootID]: tangle,
|
||||||
|
},
|
||||||
|
keypair,
|
||||||
|
})
|
||||||
|
msg1.data = null
|
||||||
|
const msgID1 = MsgV3.getMsgID(msg1)
|
||||||
|
|
||||||
|
const err = MsgV3.validate(msg1, tangle, pubkeys, msgID1, mootID)
|
||||||
|
assert.ifError(err, 'valid erased msg')
|
||||||
|
})
|
||||||
|
|
Loading…
Reference in New Issue