You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

271 lines
9.0 KiB

  1. package eth
  2. import (
  3. "os"
  4. "testing"
  5. "github.com/ethereum/go-ethereum/accounts/keystore"
  6. "github.com/ethereum/go-ethereum/common"
  7. "github.com/ethereum/go-ethereum/crypto"
  8. "github.com/ethereum/go-ethereum/ethclient"
  9. "github.com/stretchr/testify/assert"
  10. "github.com/stretchr/testify/require"
  11. )
  12. const slotDeadlineConst = uint8(20)
  13. const openAuctionSlotsConst = uint16(4320)
  14. const closedAuctionSlotsConst = uint16(2)
  15. const outbiddingConst = uint8(10)
  16. const currentSlotConst = 0
  17. var allocationRatioConst [3]uint8 = [3]uint8{40, 40, 20}
  18. var auctionClient *AuctionClient
  19. /*var donationAddressStr = os.Getenv("DONATION_ADDRESS")
  20. var bootCoordinatorStr = os.Getenv("BOOT_COORDINATOR_ADDRESS")
  21. var integration = os.Getenv("INTEGRATION")
  22. var ehtClientDialURL = os.Getenv("ETHCLIENT_DIAL_URL")
  23. var auctionAddressStr = os.Getenv("AUCTION_ADDRESS")*/
  24. var donationAddressStr = "0x6c365935CA8710200C7595F0a72EB6023A7706Cd"
  25. var bootCoordinatorStr = "0xc783df8a850f42e7f7e57013759c285caa701eb6"
  26. var integration = os.Getenv("INTEGRATION")
  27. var ehtClientDialURL = "http://localhost:8545"
  28. var auctionAddressStr = "0x3619DbE27d7c1e7E91aA738697Ae7Bc5FC3eACA5"
  29. var ownerAddressStr = "0xc783df8a850f42e7F7e57013759C285caa701eB6"
  30. var governanceAddressStr = "0xead9c93b79ae7c1591b1fb5323bd777e86e150d4"
  31. var governancePrivateKey = "d49743deccbccc5dc7baa8e69e5be03298da8688a15dd202e20f15d5e0e9a9fb"
  32. var minBidStr = "10000000000000000000"
  33. var URL = "http://localhost:3000"
  34. var newURL = "http://localhost:3002"
  35. var pathKs = "test/ks"
  36. var password = "pass"
  37. func TestNewAction(t *testing.T) {
  38. key, err := crypto.HexToECDSA(governancePrivateKey)
  39. require.Nil(t, err)
  40. ks := keystore.NewKeyStore(pathKs, keystore.StandardScryptN, keystore.StandardScryptP)
  41. account, err := ks.ImportECDSA(key, password)
  42. ks.Unlock(account, password)
  43. // Init eth client
  44. ethClient, err := ethclient.Dial(ehtClientDialURL)
  45. require.Nil(t, err)
  46. ethereumClient := NewEthereumClient(ethClient, &account, ks, nil)
  47. auctionAddress := common.HexToAddress(auctionAddressStr)
  48. auctionClient = NewAuctionClient(ethereumClient, auctionAddress)
  49. }
  50. func TestAuctionGetCurrentSlotNumber(t *testing.T) {
  51. if auctionClient != nil {
  52. currentSlot, err := auctionClient.AuctionGetCurrentSlotNumber()
  53. require.Nil(t, err)
  54. currentSlotInt := int(currentSlot)
  55. assert.Equal(t, currentSlotConst, currentSlotInt)
  56. }
  57. }
  58. func TestAuctionGetSlotDeadline(t *testing.T) {
  59. if auctionClient != nil {
  60. slotDeadline, err := auctionClient.AuctionGetSlotDeadline()
  61. require.Nil(t, err)
  62. assert.Equal(t, slotDeadlineConst, slotDeadline)
  63. }
  64. }
  65. func TestAuctionSetSlotDeadline(t *testing.T) {
  66. newSlotDeadline := uint8(25)
  67. if auctionClient != nil {
  68. _, err := auctionClient.AuctionSetSlotDeadline(newSlotDeadline)
  69. require.Nil(t, err)
  70. slotDeadline, err := auctionClient.AuctionGetSlotDeadline()
  71. assert.Equal(t, newSlotDeadline, slotDeadline)
  72. _, err = auctionClient.AuctionSetSlotDeadline(slotDeadlineConst)
  73. require.Nil(t, err)
  74. }
  75. }
  76. func TestAuctionGetOpenAuctionSlots(t *testing.T) {
  77. if auctionClient != nil {
  78. openAuctionSlots, err := auctionClient.AuctionGetOpenAuctionSlots()
  79. require.Nil(t, err)
  80. assert.Equal(t, openAuctionSlotsConst, openAuctionSlots)
  81. }
  82. }
  83. func TestAuctionSetOpenAuctionSlots(t *testing.T) {
  84. newOpenAuctionSlots := uint16(4500)
  85. if auctionClient != nil {
  86. _, err := auctionClient.AuctionSetOpenAuctionSlots(newOpenAuctionSlots)
  87. require.Nil(t, err)
  88. openAuctionSlots, err := auctionClient.AuctionGetOpenAuctionSlots()
  89. assert.Equal(t, newOpenAuctionSlots, openAuctionSlots)
  90. _, err = auctionClient.AuctionSetOpenAuctionSlots(openAuctionSlotsConst)
  91. require.Nil(t, err)
  92. }
  93. }
  94. func TestAuctionGetClosedAuctionSlots(t *testing.T) {
  95. if auctionClient != nil {
  96. closedAuctionSlots, err := auctionClient.AuctionGetClosedAuctionSlots()
  97. require.Nil(t, err)
  98. assert.Equal(t, closedAuctionSlotsConst, closedAuctionSlots)
  99. }
  100. }
  101. func TestAuctionSetClosedAuctionSlots(t *testing.T) {
  102. newClosedAuctionSlots := uint16(5)
  103. if auctionClient != nil {
  104. _, err := auctionClient.AuctionSetClosedAuctionSlots(newClosedAuctionSlots)
  105. require.Nil(t, err)
  106. closedAuctionSlots, err := auctionClient.AuctionGetClosedAuctionSlots()
  107. assert.Equal(t, newClosedAuctionSlots, closedAuctionSlots)
  108. _, err = auctionClient.AuctionSetClosedAuctionSlots(closedAuctionSlotsConst)
  109. require.Nil(t, err)
  110. }
  111. }
  112. func TestAuctionGetOutbidding(t *testing.T) {
  113. if auctionClient != nil {
  114. outbidding, err := auctionClient.AuctionGetOutbidding()
  115. require.Nil(t, err)
  116. assert.Equal(t, outbiddingConst, outbidding)
  117. }
  118. }
  119. func TestAuctionSetOutbidding(t *testing.T) {
  120. newOutbidding := uint8(15)
  121. if auctionClient != nil {
  122. _, err := auctionClient.AuctionSetOutbidding(newOutbidding)
  123. require.Nil(t, err)
  124. outbidding, err := auctionClient.AuctionGetOutbidding()
  125. assert.Equal(t, newOutbidding, outbidding)
  126. _, err = auctionClient.AuctionSetOutbidding(outbiddingConst)
  127. require.Nil(t, err)
  128. }
  129. }
  130. func TestAuctionGetAllocationRatio(t *testing.T) {
  131. if auctionClient != nil {
  132. allocationRatio, err := auctionClient.AuctionGetAllocationRatio()
  133. require.Nil(t, err)
  134. assert.Equal(t, allocationRatioConst, allocationRatio)
  135. }
  136. }
  137. func TestAuctionSetAllocationRatio(t *testing.T) {
  138. newAllocationRatio := [3]uint8{30, 30, 40}
  139. if auctionClient != nil {
  140. _, err := auctionClient.AuctionSetAllocationRatio(newAllocationRatio)
  141. require.Nil(t, err)
  142. allocationRatio, err := auctionClient.AuctionGetAllocationRatio()
  143. assert.Equal(t, newAllocationRatio, allocationRatio)
  144. _, err = auctionClient.AuctionSetAllocationRatio(allocationRatioConst)
  145. require.Nil(t, err)
  146. }
  147. }
  148. func TestAuctionGetDonationAddress(t *testing.T) {
  149. if auctionClient != nil {
  150. donationAddress, err := auctionClient.AuctionGetDonationAddress()
  151. require.Nil(t, err)
  152. donationAddressConst := common.HexToAddress(donationAddressStr)
  153. assert.Equal(t, &donationAddressConst, donationAddress)
  154. }
  155. }
  156. func TestAuctionGetBootCoordinator(t *testing.T) {
  157. if auctionClient != nil {
  158. bootCoordinator, err := auctionClient.AuctionGetBootCoordinator()
  159. require.Nil(t, err)
  160. bootCoordinatorConst := common.HexToAddress(bootCoordinatorStr)
  161. assert.Equal(t, &bootCoordinatorConst, bootCoordinator)
  162. }
  163. }
  164. func TestAuctionSetDonationAddress(t *testing.T) {
  165. newDonationAddress := common.HexToAddress(governanceAddressStr)
  166. if auctionClient != nil {
  167. _, err := auctionClient.AuctionSetDonationAddress(newDonationAddress)
  168. require.Nil(t, err)
  169. donationAddress, err := auctionClient.AuctionGetDonationAddress()
  170. assert.Equal(t, &newDonationAddress, donationAddress)
  171. donationAddressConst := common.HexToAddress(donationAddressStr)
  172. _, err = auctionClient.AuctionSetDonationAddress(donationAddressConst)
  173. require.Nil(t, err)
  174. }
  175. }
  176. func TestAuctionSetBootCoordinator(t *testing.T) {
  177. newBootCoordinator := common.HexToAddress(governanceAddressStr)
  178. if auctionClient != nil {
  179. _, err := auctionClient.AuctionSetBootCoordinator(newBootCoordinator)
  180. require.Nil(t, err)
  181. bootCoordinator, err := auctionClient.AuctionGetBootCoordinator()
  182. assert.Equal(t, &newBootCoordinator, bootCoordinator)
  183. bootCoordinatorConst := common.HexToAddress(bootCoordinatorStr)
  184. _, err = auctionClient.AuctionSetBootCoordinator(bootCoordinatorConst)
  185. require.Nil(t, err)
  186. }
  187. }
  188. func TestAuctionGetMinBidEpoch(t *testing.T) {
  189. epoch := uint8(3)
  190. if auctionClient != nil {
  191. minBid, err := auctionClient.AuctionGetMinBidEpoch(epoch)
  192. require.Nil(t, err)
  193. assert.Equal(t, minBid.String(), minBidStr)
  194. }
  195. }
  196. /* func TestAuctionChangeEpochMinBid(t *testing.T) {
  197. slotEpoch := int64(3)
  198. epoch := uint8(3)
  199. newInitialMinBid := new(big.Int)
  200. newInitialMinBid.SetString("20000000000000000000", 10)
  201. if auctionClient != nil {
  202. _, err := auctionClient.AuctionChangeEpochMinBid(slotEpoch, newInitialMinBid)
  203. require.Nil(t, err)
  204. minBid, err := auctionClient.AuctionGetMinBidEpoch(epoch)
  205. require.Nil(t, err)
  206. assert.Equal(t, minBid, newInitialMinBid)
  207. newMinBid := new(big.Int)
  208. newMinBid.SetString("10000000000000000000", 10)
  209. _, err = auctionClient.AuctionChangeEpochMinBid(slotEpoch, newMinBid)
  210. require.Nil(t, err)
  211. }
  212. } */
  213. func TestAuctionIsRegisteredCoordinator(t *testing.T) {
  214. forgerAddress := common.HexToAddress(governanceAddressStr)
  215. if auctionClient != nil {
  216. registered, err := auctionClient.AuctionIsRegisteredCoordinator(forgerAddress)
  217. require.Nil(t, err)
  218. assert.Equal(t, registered, false)
  219. }
  220. }
  221. func TestAuctionRegisterCoordinator(t *testing.T) {
  222. forgerAddress := common.HexToAddress(governanceAddressStr)
  223. if auctionClient != nil {
  224. _, err := auctionClient.AuctionRegisterCoordinator(forgerAddress, URL)
  225. require.Nil(t, err)
  226. }
  227. }
  228. func TestAuctionIsRegisteredCoordinatorTrue(t *testing.T) {
  229. forgerAddress := common.HexToAddress(governanceAddressStr)
  230. if auctionClient != nil {
  231. registered, err := auctionClient.AuctionIsRegisteredCoordinator(forgerAddress)
  232. require.Nil(t, err)
  233. assert.Equal(t, registered, true)
  234. }
  235. }
  236. func AuctionUpdateCoordinatorInfo(t *testing.T) {
  237. forgerAddress := common.HexToAddress(governanceAddressStr)
  238. if auctionClient != nil {
  239. _, err := auctionClient.AuctionUpdateCoordinatorInfo(forgerAddress, forgerAddress, newURL)
  240. require.Nil(t, err)
  241. }
  242. }