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
|
||||
*/
|
||||
function validateDataSizeHash(msg) {
|
||||
const [dataHash, dataSize] = representData(msg.data)
|
||||
if (!Number.isSafeInteger(dataSize) || dataSize < 0) {
|
||||
const { dataHash: actualHash, dataSize: actualSize } = msg.metadata
|
||||
if (!Number.isSafeInteger(actualSize) || actualSize < 0) {
|
||||
// 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
|
||||
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
|
||||
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)
|
||||
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