|
| 1 | +const { validateSignature } = require('../index'); |
| 2 | + |
| 3 | +describe('validateSignature', () => { |
| 4 | + let signedHeartbeat; |
| 5 | + |
| 6 | + beforeAll(() => { |
| 7 | + signedHeartbeat = JSON.parse(`{ |
| 8 | + "version": 1, |
| 9 | + "payload": "eyJzdGF0dXMiOnsiY2hhaW5faWQiOm51bGwsInRyYW5zaXRpb25fZnJvbnRpZXIiOnsiYmVzdF90aXAiOm51bGwsInN5bmMiOnsidGltZSI6bnVsbCwic3RhdHVzIjoiU3luY2VkIiwicGhhc2UiOiJSdW5uaW5nIiwidGFyZ2V0IjpudWxsfX0sInBlZXJzIjpbXSwic25hcmtfcG9vbCI6eyJ0b3RhbF9qb2JzIjowLCJzbmFya3MiOjB9LCJ0cmFuc2FjdGlvbl9wb29sIjp7InRyYW5zYWN0aW9ucyI6MCwidHJhbnNhY3Rpb25zX2Zvcl9wcm9wYWdhdGlvbiI6MCwidHJhbnNhY3Rpb25fY2FuZGlkYXRlcyI6MH0sImN1cnJlbnRfYmxvY2tfcHJvZHVjdGlvbl9hdHRlbXB0IjpudWxsfSwibm9kZV90aW1lc3RhbXAiOjAsInBlZXJfaWQiOiIyYkVnQnJQVHpMOHdvdjJENEt6MzRXVkxDeFI0dUNhcnNCbUhZWFdLUUE1d3ZCUXpkOUgiLCJsYXN0X3Byb2R1Y2VkX2Jsb2NrIjpudWxsfQ==", |
| 10 | + "submitter": "B62qnLjgW4LAnrxkcdLc7Snb49qx6aP5qsmPsp6ueZN4XPMC621cqGc", |
| 11 | + "signature": { |
| 12 | + "field": "25500978175045040705256298774101531557080530394536110798266178142513301557846", |
| 13 | + "scalar": "27991123709623419396663280967637181749724990269901703962618583375785482061803" |
| 14 | + } |
| 15 | + }`); |
| 16 | + }); |
| 17 | + |
| 18 | + test('should validate correct signature', () => { |
| 19 | + const result = validateSignature( |
| 20 | + signedHeartbeat.payload, |
| 21 | + signedHeartbeat.signature, |
| 22 | + signedHeartbeat.submitter |
| 23 | + ); |
| 24 | + expect(result).toBe(true); |
| 25 | + }); |
| 26 | + |
| 27 | + test('should reject invalid signature length', () => { |
| 28 | + const result = validateSignature( |
| 29 | + signedHeartbeat.payload, |
| 30 | + 'invalid-signature', |
| 31 | + signedHeartbeat.submitter |
| 32 | + ); |
| 33 | + expect(result).toBe(false); |
| 34 | + }); |
| 35 | + |
| 36 | + test('should reject tampered data', () => { |
| 37 | + const tamperedPayload = signedHeartbeat.payload + 'tampered'; |
| 38 | + const result = validateSignature( |
| 39 | + tamperedPayload, |
| 40 | + signedHeartbeat.signature, |
| 41 | + signedHeartbeat.submitter |
| 42 | + ); |
| 43 | + expect(result).toBe(false); |
| 44 | + }); |
| 45 | + |
| 46 | + test('should handle null values', () => { |
| 47 | + expect(validateSignature(null, null, null)).toBe(false); |
| 48 | + expect(validateSignature(signedHeartbeat.payload, null, signedHeartbeat.submitter)).toBe(false); |
| 49 | + expect(validateSignature(signedHeartbeat.payload, signedHeartbeat.signature, null)).toBe(false); |
| 50 | + }); |
| 51 | +}); |
0 commit comments