diff --git a/test/msg-v2/validate.test.js b/test/msg-v2/validate.test.js index c1f3857..f24e10c 100644 --- a/test/msg-v2/validate.test.js +++ b/test/msg-v2/validate.test.js @@ -1,5 +1,4 @@ const tape = require('tape') -const base58 = require('bs58') const MsgV2 = require('../../lib/msg-v2') const { generateKeypair } = require('../util') @@ -18,6 +17,43 @@ tape('validate root msg', (t) => { t.end() }) +tape('validate group tangle', (t) => { + const pubkeys = new Set() + const keys1 = generateKeypair('alice') + pubkeys.add(keys1.id) + + const groupMsg0 = MsgV2.createGroup(keys1, 'alice') + const group = MsgV2.getMsgHash(groupMsg0) + const groupMsg0Hash = group + + const tangle = new MsgV2.Tangle(group) + + let err = MsgV2.validate(groupMsg0, tangle, pubkeys, groupMsg0Hash, group) + if (err) console.log(err) + t.error(err, 'valid group root msg') + + tangle.add(group, groupMsg0) + + const keys2 = generateKeypair('bob') + + const groupMsg1 = MsgV2.create({ + group: null, + groupTips: null, + type: 'group', + data: { add: keys2.id }, + tangles: { + [group]: tangle, + }, + keys: keys1, // announcing keys2 but signing with keys1 + }) + const groupMsg1Hash = MsgV2.getMsgHash(groupMsg1) + + err = MsgV2.validate(groupMsg1, tangle, pubkeys, groupMsg1Hash, group) + if (err) console.log(err) + t.error(err, 'valid group msg') + t.end() +}) + tape('validate 2nd msg with existing root', (t) => { const keys = generateKeypair('alice') const group = MsgV2.getMsgHash(MsgV2.createGroup(keys, 'alice'))