diff options
Diffstat (limited to 'monitor/monitor_test.go')
-rw-r--r-- | monitor/monitor_test.go | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/monitor/monitor_test.go b/monitor/monitor_test.go new file mode 100644 index 0000000..fb5c9c5 --- /dev/null +++ b/monitor/monitor_test.go @@ -0,0 +1,88 @@ +package monitor + +import ( + "io/ioutil" + "math/big" + "os" + "testing" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/ethclient" + "github.com/stretchr/testify/suite" +) + +type monitorTestSuite struct { + suite.Suite +} + +type mockBackend struct{} + +func (m *mockBackend) FetchFinedNodes(nodeChan chan node) { + nodeChan <- node{ + owner: common.Address{}, + email: "jm@byzantine-lab.io", + fined: big.NewInt(1), + name: "unit test", + } + close(nodeChan) +} + +func (m *mockBackend) NodeSet() []node { + n := []node{ + { + owner: common.Address{}, + email: "jm@byzantine-lab.io", + fined: big.NewInt(1), + name: "unit test 100, should not be fined", + nodeKeyAddress: common.BytesToAddress([]byte{1}), + }, + { + owner: common.Address{}, + email: "jm@byzantine-lab.io", + fined: Fifty, + name: "unit test 50", + publicKey: []byte{2}, + nodeKeyAddress: common.BytesToAddress([]byte{2}), + }, + } + return n +} + +func (m *mockBackend) BalanceFromAddress(conn *ethclient.Client, + address common.Address) *big.Int { + if address == common.BytesToAddress([]byte{1}) { + return OneHundred + } + lessThanThreshold, _ := big.NewInt(0).SetString("99999999999999999", 10) + return lessThanThreshold +} + +func (s *monitorTestSuite) TestSendNotification() { + backend := mockBackend{} + m := NewMonitor(374, &backend, "0.1") + nodeChan := make(chan node) + go m.fetchFinedNodes(nodeChan) + password := os.Getenv("TEST_EMAIL_PASSWORD") + ccList, _ := ioutil.ReadFile("./cc-list.txt") + email := NewEmail( + "no-reply@byzantine-lab.io", + password, + "smtp-relay.gmail.com", + string(ccList), + ) + m.Register(email) + m.sendNotifications(nodeChan, FINED) + m.tanBalancesCache[common.BytesToAddress([]byte{1})] = OneHundred + m.tanBalancesCache[common.BytesToAddress([]byte{2})] = Fifty + m.ethBalancesCache[common.BytesToAddress([]byte{1})], _ = big.NewInt(0).SetString("99999999999999999", 10) + m.ethBalancesCache[common.BytesToAddress([]byte{2})], _ = big.NewInt(0).SetString("100000000000000000", 10) + + go m.checkTanBalance() + go m.checkEthBalance() + time.Sleep(5000 * time.Millisecond) +} + +func TestMonitor(t *testing.T) { + suite.Run(t, new(monitorTestSuite)) +} |