data_handler_test.go 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package extension
  2. import (
  3. "encoding/json"
  4. "io/ioutil"
  5. "os"
  6. "testing"
  7. "github.com/ethereum/go-ethereum/common"
  8. "github.com/ethereum/go-ethereum/core/types"
  9. "github.com/stretchr/testify/assert"
  10. )
  11. func TestWriteContentsToFileWritesOkay(t *testing.T) {
  12. extensionContracts := make(map[common.Address]*ExtensionContract)
  13. extensionContracts[common.HexToAddress("0x2222222222222222222222222222222222222222")] = &ExtensionContract{
  14. ContractExtended: common.HexToAddress("0x1111111111111111111111111111111111111111"),
  15. Initiator: common.HexToAddress("0x3333333333333333333333333333333333333333"),
  16. Recipient: common.HexToAddress("0x4444444444444444444444444444444444444444"),
  17. RecipientPtmKey: "1234567891234567891234567891234567891234567=",
  18. ManagementContractAddress: common.HexToAddress("0x2222222222222222222222222222222222222222"),
  19. CreationData: []byte("Sample Transaction Data"),
  20. }
  21. psiExtensions := map[types.PrivateStateIdentifier]map[common.Address]*ExtensionContract{
  22. types.DefaultPrivateStateIdentifier: extensionContracts,
  23. "somekey": extensionContracts,
  24. }
  25. datadir, err := ioutil.TempDir("", t.Name())
  26. defer os.RemoveAll(datadir)
  27. assert.Nil(t, err, "could not create temp directory for test")
  28. dataHandler := NewJsonFileDataHandler(datadir)
  29. err = dataHandler.Save(psiExtensions)
  30. assert.Nil(t, err, "error writing data from file")
  31. loadedData, err := dataHandler.Load()
  32. assert.Nil(t, err, "error reading data from file")
  33. if !assert.ObjectsAreEqual(psiExtensions, loadedData) {
  34. expected, _ := json.Marshal(extensionContracts)
  35. actual, _ := json.Marshal(loadedData)
  36. t.Errorf("expected data from file different to data written, expected %v, got %v", string(expected), string(actual))
  37. }
  38. }
  39. func TestLoadOldContents(t *testing.T) {
  40. extensionContracts := make(map[common.Address]*ExtensionContract)
  41. extensionContracts[common.HexToAddress("0x2222222222222222222222222222222222222222")] = &ExtensionContract{
  42. ContractExtended: common.HexToAddress("0x1111111111111111111111111111111111111111"),
  43. Initiator: common.HexToAddress("0x3333333333333333333333333333333333333333"),
  44. Recipient: common.HexToAddress("0x4444444444444444444444444444444444444444"),
  45. RecipientPtmKey: "1234567891234567891234567891234567891234567=",
  46. ManagementContractAddress: common.HexToAddress("0x2222222222222222222222222222222222222222"),
  47. CreationData: []byte("Sample Transaction Data"),
  48. }
  49. psiExtensions := map[types.PrivateStateIdentifier]map[common.Address]*ExtensionContract{
  50. types.DefaultPrivateStateIdentifier: extensionContracts,
  51. "somekey": extensionContracts,
  52. }
  53. datadir, err := ioutil.TempDir("", t.Name())
  54. defer os.RemoveAll(datadir)
  55. assert.Nil(t, err, "could not create temp directory for test")
  56. dataHandler := NewJsonFileDataHandler(datadir)
  57. err = dataHandler.Save(psiExtensions)
  58. assert.Nil(t, err, "error writing data from file")
  59. loadedData, err := dataHandler.Load()
  60. assert.Nil(t, err, "error reading data from file")
  61. if !assert.ObjectsAreEqual(psiExtensions, loadedData) {
  62. expected, _ := json.Marshal(extensionContracts)
  63. actual, _ := json.Marshal(loadedData)
  64. t.Errorf("expected data from file different to data written, expected %v, got %v", string(expected), string(actual))
  65. }
  66. }