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