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 }