diff --git a/backup/backup.go b/backup/backup.go index 68515d18eae12c1fdcd86d0ed777fe35b38e42e5..b8b72f2563844980c21d8d0ebb9309b85c996221 100644 --- a/backup/backup.go +++ b/backup/backup.go @@ -215,8 +215,7 @@ func (b *Backup) AddJson(newJson string) { b.mux.Lock() defer b.mux.Unlock() - currentJson := loadJson(b.store.GetKV()) - if newJson != currentJson { + if newJson != b.jsonParams { b.jsonParams = newJson if err := storeJson(newJson, b.store.GetKV()); err != nil { jww.FATAL.Panicf("Failed to store json: %+v", err) diff --git a/backup/backup_test.go b/backup/backup_test.go index a9dade34321234b12f2198196b020ce2c48c02ad..4b6d964b1ea1a681b8ed0d75149a11817355a638 100644 --- a/backup/backup_test.go +++ b/backup/backup_test.go @@ -320,6 +320,44 @@ func TestBackup_AddJson(t *testing.T) { } } +func TestBackup_AddJson_badJson(t *testing.T) { + b := newTestBackup("MySuperSecurePassword", nil, t) + s := b.store + json := "abc{'i'm a bad json: 'one': 1'''}}" + + expectedCollatedBackup := backup.Backup{ + RegistrationTimestamp: s.GetUser().RegistrationTimestamp, + TransmissionIdentity: backup.TransmissionIdentity{ + RSASigningPrivateKey: s.GetUser().TransmissionRSA, + RegistrarSignature: s.User().GetTransmissionRegistrationValidationSignature(), + Salt: s.GetUser().TransmissionSalt, + ComputedID: s.GetUser().TransmissionID, + }, + ReceptionIdentity: backup.ReceptionIdentity{ + RSASigningPrivateKey: s.GetUser().ReceptionRSA, + RegistrarSignature: s.User().GetReceptionRegistrationValidationSignature(), + Salt: s.GetUser().ReceptionSalt, + ComputedID: s.GetUser().ReceptionID, + DHPrivateKey: s.GetUser().E2eDhPrivateKey, + DHPublicKey: s.GetUser().E2eDhPublicKey, + }, + UserDiscoveryRegistration: backup.UserDiscoveryRegistration{ + FactList: s.GetUd().GetFacts(), + }, + Contacts: backup.Contacts{Identities: s.E2e().GetPartners()}, + JSONParams: json, + } + + b.AddJson(json) + + collatedBackup := b.assembleBackup() + if !reflect.DeepEqual(expectedCollatedBackup, collatedBackup) { + t.Errorf("Collated backup does not match expected."+ + "\nexpected: %+v\nreceived: %+v", + expectedCollatedBackup, collatedBackup) + } +} + // Tests that Backup.assembleBackup returns the backup.Backup with the expected // results. func TestBackup_assembleBackup(t *testing.T) {