alby_oauth_service_test.go raw
1 package alby
2
3 import (
4 "testing"
5
6 "github.com/stretchr/testify/assert"
7 "github.com/stretchr/testify/require"
8 "github.com/tyler-smith/go-bip32"
9 "github.com/tyler-smith/go-bip39"
10
11 "github.com/getAlby/hub/config"
12 "github.com/getAlby/hub/events"
13 "github.com/getAlby/hub/tests"
14 )
15
16 func TestExistingEncryptedBackup(t *testing.T) {
17 svc, err := tests.CreateTestService(t)
18 require.NoError(t, err)
19 defer svc.Remove()
20
21 mnemonic := "limit reward expect search tissue call visa fit thank cream brave jump"
22 unlockPassword := "123"
23 svc.Cfg.SetUpdate("Mnemonic", mnemonic, unlockPassword)
24 err = svc.Keys.Init(svc.Cfg, unlockPassword)
25 assert.NoError(t, err)
26
27 encryptedBackup := "3fd21f9a393d8345ddbdd449-ba05c3dbafdfb7eea574373b7763d0c81c599b2cd1735e59a1c5571379498f4da8fe834c3403824ab02b61005abc1f563c638f425c65420e82941efe94794555c8b145a0603733ee115277f860011e6a17fd8c22f1d73a096ff7275582aac19b430940b40a2559c7ff59a063305290ef7c9ba46f9de17b0ddbac9030b0"
28
29 masterKey, err := bip32.NewMasterKey(bip39.NewSeed(mnemonic, ""))
30 assert.NoError(t, err)
31
32 appKey, err := masterKey.NewChildKey(bip32.FirstHardenedChild + 128029 /* 🐝 */)
33 assert.NoError(t, err)
34 encryptedChannelsBackupKey, err := appKey.NewChildKey(bip32.FirstHardenedChild)
35 assert.NoError(t, err)
36
37 decrypted, err := config.AesGcmDecryptWithKey(encryptedBackup, encryptedChannelsBackupKey.Key)
38 assert.NoError(t, err)
39
40 assert.Equal(t, "{\"node_id\":\"037e702144c4fa485d42f0f69864e943605823763866cf4bf619d2d2cf2eda420b\",\"channels\":[],\"monitors\":[]}\n", decrypted)
41 }
42
43 func TestEncryptedBackup(t *testing.T) {
44 mnemonic := "limit reward expect search tissue call visa fit thank cream brave jump"
45 unlockPassword := "123"
46 svc, err := tests.CreateTestServiceWithMnemonic(t, mnemonic, unlockPassword)
47 require.NoError(t, err)
48 defer svc.Remove()
49
50 albyOAuthSvc := NewAlbyOAuthService(svc.DB, svc.Cfg, svc.Keys, svc.EventPublisher)
51 encryptedBackup, err := albyOAuthSvc.createEncryptedChannelBackup(&events.StaticChannelsBackupEvent{
52 NodeID: "037e702144c4fa485d42f0f69864e943605823763866cf4bf619d2d2cf2eda420b",
53 Channels: []events.ChannelBackup{},
54 Monitors: []events.EncodedChannelMonitorBackup{},
55 })
56
57 assert.NoError(t, err)
58 assert.Equal(t, "channels_v2", encryptedBackup.Description)
59
60 masterKey, err := bip32.NewMasterKey(bip39.NewSeed(mnemonic, ""))
61 assert.NoError(t, err)
62
63 appKey, err := masterKey.NewChildKey(bip32.FirstHardenedChild + 128029 /* 🐝 */)
64 assert.NoError(t, err)
65 encryptedChannelsBackupKey, err := appKey.NewChildKey(bip32.FirstHardenedChild)
66 assert.NoError(t, err)
67
68 decrypted, err := config.AesGcmDecryptWithKey(encryptedBackup.Data, encryptedChannelsBackupKey.Key)
69 assert.NoError(t, err)
70
71 assert.Equal(t, "{\"node_id\":\"037e702144c4fa485d42f0f69864e943605823763866cf4bf619d2d2cf2eda420b\",\"channels\":[],\"monitors\":[]}\n", decrypted)
72 }
73