Skip to content

Commit c35d266

Browse files
authored
Merge pull request #1012 from openmina/feat/hearbeat-rpc
feat(rpc): Add hearbeat handler
2 parents 7db7078 + c4af8fe commit c35d266

32 files changed

+1036
-448
lines changed

Cargo.lock

Lines changed: 21 additions & 18 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

frontend/functions/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
node_modules/
22
*.local
3+
coverage/
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
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+
});

frontend/functions/index.js

Lines changed: 0 additions & 81 deletions
This file was deleted.

0 commit comments

Comments
 (0)