code.vegaprotocol.io/vega@v0.79.0/core/datasource/external/openoracle/openoracle_test.go (about)

     1  // Copyright (C) 2023 Gobalsky Labs Limited
     2  //
     3  // This program is free software: you can redistribute it and/or modify
     4  // it under the terms of the GNU Affero General Public License as
     5  // published by the Free Software Foundation, either version 3 of the
     6  // License, or (at your option) any later version.
     7  //
     8  // This program is distributed in the hope that it will be useful,
     9  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    10  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    11  // GNU Affero General Public License for more details.
    12  //
    13  // You should have received a copy of the GNU Affero General Public License
    14  // along with this program.  If not, see <http://www.gnu.org/licenses/>.
    15  
    16  package openoracle_test
    17  
    18  import (
    19  	"encoding/json"
    20  	"testing"
    21  
    22  	"code.vegaprotocol.io/vega/core/datasource/external/openoracle"
    23  
    24  	"github.com/stretchr/testify/assert"
    25  	"github.com/stretchr/testify/require"
    26  )
    27  
    28  const (
    29  	address = "0xfCEAdAFab14d46e20144F48824d0C09B1a03F2BC"
    30  	message = `{"timestamp": "1660832460",
    31                 "messages": [
    32                     "0x00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000062fe4acc00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000005788505200000000000000000000000000000000000000000000000000000000000000006707269636573000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034254430000000000000000000000000000000000000000000000000000000000",
    33                     "0x00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000062fe4acc00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000006f3c41e00000000000000000000000000000000000000000000000000000000000000006707269636573000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034554480000000000000000000000000000000000000000000000000000000000",
    34                     "0x00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000062fe4acc00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000001c697000000000000000000000000000000000000000000000000000000000000000067072696365730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000358545a0000000000000000000000000000000000000000000000000000000000",
    35                     "0x00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000062cedf1c00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000f41780000000000000000000000000000000000000000000000000000000000000006707269636573000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034441490000000000000000000000000000000000000000000000000000000000",
    36                     "0x00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000062fe4acc00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000877f800000000000000000000000000000000000000000000000000000000000000006707269636573000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035245500000000000000000000000000000000000000000000000000000000000",
    37                     "0x00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000062fe4acc00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000005572c0000000000000000000000000000000000000000000000000000000000000006707269636573000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035a52580000000000000000000000000000000000000000000000000000000000",
    38                     "0x00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000062cf049c00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000005a7b20000000000000000000000000000000000000000000000000000000000000006707269636573000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034241540000000000000000000000000000000000000000000000000000000000",
    39                     "0x00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000062fe4acc00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000001a3ad70000000000000000000000000000000000000000000000000000000000000006707269636573000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034b4e430000000000000000000000000000000000000000000000000000000000",
    40                     "0x00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000062fe4acc00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000007c0bdc0000000000000000000000000000000000000000000000000000000000000006707269636573000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044c494e4b00000000000000000000000000000000000000000000000000000000",
    41                     "0x00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000062fe4acc00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000388c518000000000000000000000000000000000000000000000000000000000000000670726963657300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004434f4d5000000000000000000000000000000000000000000000000000000000",
    42                     "0x00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000062fe4acc00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000007bac28000000000000000000000000000000000000000000000000000000000000000670726963657300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003554e490000000000000000000000000000000000000000000000000000000000",
    43                     "0x00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000062fe4acc00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000001e23a0000000000000000000000000000000000000000000000000000000000000006707269636573000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034752540000000000000000000000000000000000000000000000000000000000",
    44                     "0x00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000062fe4acc00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000035cd70000000000000000000000000000000000000000000000000000000000000000670726963657300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003534e580000000000000000000000000000000000000000000000000000000000"],
    45                 "signatures": [
    46                     "0x77a4cf03c91662f718714c5baeea91aa1e1f53c767ad057a34844bc93e8d56a33d1060d743182927afdbcad83fb1179fdbf5efbfbacf901e2c06fc1decc02fb8000000000000000000000000000000000000000000000000000000000000001c",
    47                     "0x286fdef55afae6a3bf74e380be7dc6d9e18dced4679d0ff22b38e7ca71a799cabe301a0ae7df6ccbe56a7657e84c037e2e8c3ec05a08c0a07cc8e1873fe88fc1000000000000000000000000000000000000000000000000000000000000001b",
    48                     "0x911a7ac54e1decd7907aad4a2f030840760a34bd4634466c6b17bac7b5867d6ece0946f194b08be9f479d6aa6a2a0c17120ad5f605b88e45a2766ca8f30a7597000000000000000000000000000000000000000000000000000000000000001b",
    49                     "0xad99f6564beb896c16f31145b5b3f176c7ac9ac1bba315d42ef252c460b7a0a9cd75d5e25e7d05d0616d4341a1f93c46168c487addf04414d7ab1d7b44ea4887000000000000000000000000000000000000000000000000000000000000001c",
    50                     "0x4b9858bc1430ad00bbafef428854c18b66d1eeee66b331612e9516e019017dffe635774395a2ec600d02a216539a90cc63e0ace63a3f17ba0300461acd56f4aa000000000000000000000000000000000000000000000000000000000000001c",
    51                     "0x721a7c5a1a6a2c98a43353f4914518aab1ea87037b36fb2f690c02cea93af88aa04032743b1542cf6989661139e87c82100369b32ef265cee92a0b23a493e8da000000000000000000000000000000000000000000000000000000000000001b",
    52                     "0x882bc7b0c91e58ca72e5689789463fad2772de1cd4b58c3e3cde43c4a3519fb3dd4e15256dffa71504048afa784bd288570aa98a7a660c54ef147256b302281e000000000000000000000000000000000000000000000000000000000000001c",
    53                     "0xf83fa6321f6535e4c37036f791d7154acdba98a6b57d911339af90e03bfef3104ea49fb5cb20050b6ee4d1c60a2c362a11c8538728b1b311d2316ceef822ea8b000000000000000000000000000000000000000000000000000000000000001b",
    54                     "0x894fc98bf0623bd6520df18b15cfa3e1e10569138f3b4cd516a2a53fc1185f3bdbfcff1ce1b746042e575195eb7556fb155b7b03a2ea72745fd2463d9c3e1b97000000000000000000000000000000000000000000000000000000000000001b",
    55                     "0x22208b890dc371a4d54ba9a3a4dbff0c56f86f025bfeddf6e8ca06ce8926bc3959c751a4e54f2a325960eda48cd0149038e13d104dc294b04e605a2ad48d1bd1000000000000000000000000000000000000000000000000000000000000001c",
    56                     "0xb716ebaf5733a272c7c7a48ab4d99caac0d691631c4b2b7c7017667e881ec7fbc467a4f5c0ca9cf85efd04a2203849c79d63555f217e7dc336db109971fd4f4d000000000000000000000000000000000000000000000000000000000000001c",
    57                     "0xed228d05e0bed656f481143a39f469d1a3f9f1673c51065f69b99201c22f8905ec4e90b5a344589d8037c7f1ae822eee741f5dbeabfdb7aa135d36c0f32bc4e8000000000000000000000000000000000000000000000000000000000000001c",
    58                     "0x854a3b0277e9f2f1fbc2ed57caff803bc91014d28e261d97262a723e8e608ae96ff868a38f1250185f6101c97c205b0dfabc32c8882fc71e99f4b1495eaf1866000000000000000000000000000000000000000000000000000000000000001c"],
    59                 "prices": {"BTC": "23496.82", "ETH": "1866.22", "XTZ": "1.862", "DAI": "0.9998", "REP": "8.88",
    60                            "ZRX": "0.349996", "BAT": "0.37061", "KNC": "1.7189999999999999", "LINK": "8.1295",
    61                            "COMP": "59.295", "UNI": "8.105", "GRT": "0.12345", "SNX": "3.526"}}`
    62  )
    63  
    64  func TestValidOpenOracle(t *testing.T) {
    65  	// unwrap the payload
    66  	payload := openoracle.OracleResponse{}
    67  	err := json.Unmarshal([]byte(message), &payload)
    68  	assert.NoError(t, err)
    69  
    70  	addresses, values, err := openoracle.Verify(payload)
    71  	require.NoError(t, err)
    72  	assert.Len(t, addresses, 1)
    73  	assert.Equal(t, addresses[0], address)
    74  	assert.NotNil(t, values)
    75  }