Skip to content

Commit df0c531

Browse files
committed
feat(): test
1 parent 9895c71 commit df0c531

File tree

4 files changed

+112
-0
lines changed

4 files changed

+112
-0
lines changed

client_test.go

+75
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package goar
22

33
import (
4+
"github.com/everFinance/goar/types"
45
"github.com/everFinance/goar/utils"
56
"github.com/stretchr/testify/assert"
67
"io/ioutil"
78
"os"
9+
"strconv"
810
"testing"
911
)
1012

@@ -348,3 +350,76 @@ func TestNewTempConn2(t *testing.T) {
348350
err = utils.VerifyBundleItem(*item)
349351
assert.NoError(t, err)
350352
}
353+
354+
func TestNewClient2(t *testing.T) {
355+
arTx := "b92IF6ZX0owPFcssPcs-qOBN2nuR0d3xLYOSovh1eck"
356+
c := NewClient("https://arweave.net")
357+
data, err := c.GetTransactionDataByGateway(arTx)
358+
359+
assert.NoError(t, err)
360+
// data bundle binary
361+
bundle, err := utils.DecodeBundle(data)
362+
assert.NoError(t, err)
363+
364+
bundleItems := bundle.Items
365+
for _, item := range bundleItems {
366+
t.Log(item.Id)
367+
}
368+
}
369+
370+
func TestNewWallet2(t *testing.T) {
371+
c := NewClient("https://arweave.net")
372+
offsetResponse, err := c.getTransactionOffset("47KozLIAfVMKdxq1q3D1xFZmRpkahOOBQ8boOjSydnQ")
373+
assert.NoError(t, err)
374+
t.Log(offsetResponse.Offset)
375+
t.Log(offsetResponse.Size)
376+
size, err := strconv.ParseInt(offsetResponse.Size, 10, 64)
377+
assert.NoError(t, err)
378+
endOffset, err := strconv.ParseInt(offsetResponse.Offset, 10, 64)
379+
assert.NoError(t, err)
380+
startOffset := endOffset - size + 1
381+
firstChunk, err := c.getChunkData(startOffset)
382+
assert.NoError(t, err)
383+
384+
// 从 firstChunk 中获取 itemNum
385+
itemsNum := utils.ByteArrayToLong(firstChunk[:32])
386+
t.Log(itemsNum) // 739
387+
388+
// 解析出 item headers 并找到headers 的 offset
389+
bundleItemStart := 32 + itemsNum*64
390+
if len(firstChunk) < bundleItemStart {
391+
// todo 需要拉取后面的多个 chunks
392+
}
393+
containHeadersChunks := firstChunk // todo
394+
for i := 0; i < itemsNum; i++ {
395+
headerBegin := 32 + i*64
396+
end := headerBegin + 64
397+
headerByte := containHeadersChunks[headerBegin:end]
398+
itemBinaryLength := utils.ByteArrayToLong(headerByte[:32])
399+
id := utils.Base64Encode(headerByte[32:64])
400+
401+
// --------- 1 ----2 ------
402+
if id == "UCTEOaljmuutGJId-ktPY_q_Gbal8tyJuLfyR6BeaGw" {
403+
t.Log("found item")
404+
t.Log("item start offset", "offset", bundleItemStart, "length", itemBinaryLength)
405+
startChunkNum := bundleItemStart / types.MAX_CHUNK_SIZE
406+
startChunkOffset := bundleItemStart % types.MAX_CHUNK_SIZE
407+
data := make([]byte, 0, itemBinaryLength)
408+
for offset := startOffset + int64(startChunkNum*types.MAX_CHUNK_SIZE); offset <= startOffset+int64(bundleItemStart+itemBinaryLength); {
409+
chunk, err := c.getChunkData(offset)
410+
assert.NoError(t, err)
411+
data = append(data, chunk...)
412+
offset += int64(len(chunk))
413+
}
414+
itemData := data[startChunkOffset : startChunkOffset+itemBinaryLength]
415+
item, err := utils.DecodeBundleItem(itemData)
416+
assert.NoError(t, err)
417+
dd, _ := utils.Base64Decode(item.Data)
418+
t.Log(string(dd))
419+
t.Log(item.Id)
420+
t.Log(item.SignatureType)
421+
}
422+
423+
bundleItemStart += itemBinaryLength // next itemBy start offset
424+
}
425+
}

example/api_example_test.go

+8
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,14 @@ func Test_Client(t *testing.T) {
5252

5353
}
5454

55+
func Test_Arq1(t *testing.T) {
56+
arNode := "https://arweave.net"
57+
c := goar.NewClient(arNode)
58+
dd, err := c.GetTransactionPrice(712, nil)
59+
assert.NoError(t, err)
60+
t.Log(dd)
61+
}
62+
5563
func Test_Arq(t *testing.T) {
5664
arqStr := `{
5765
"op": "and",

example/bundle_test.go

+13
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package example
22

33
import (
4+
"bytes"
45
"context"
56
"errors"
67
"io"
@@ -52,6 +53,18 @@ func init() {
5253
}
5354
}
5455

56+
func TestBundleToArweave4(t *testing.T) {
57+
itemSigner01, err := goar.NewItemSigner(signer01)
58+
assert.NoError(t, err)
59+
data := []byte("aabbcc")
60+
item01, err := itemSigner01.CreateAndSignItemStream(bytes.NewReader(data), "", "", []types.Tag{
61+
{Name: "Content-Type", Value: "application/txt"},
62+
{Name: "App-Version", Value: "2.0.0"},
63+
})
64+
assert.NoError(t, err)
65+
t.Log(item01)
66+
}
67+
5568
func TestBundleToArweave(t *testing.T) {
5669
// sig item01 by ecc signer
5770
itemSigner01, err := goar.NewItemSigner(signer01)

utils/crypto_test.go

+16
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package utils
22

33
import (
4+
"crypto/sha256"
5+
"github.com/ethereum/go-ethereum/common/hexutil"
46
"github.com/stretchr/testify/assert"
57
"testing"
68
)
@@ -17,3 +19,17 @@ func TestSignAndVerify(t *testing.T) {
1719
assert.NoError(t, Verify(msg, &rightKey.PublicKey, sig))
1820
assert.Error(t, Verify(msg, &wrongKey.PublicKey, sig))
1921
}
22+
23+
func TestVerify(t *testing.T) {
24+
pub, err := OwnerToPubKey("5oZAXKfBfZ32JIKSIUksXO6K27T9gnbJCnndpGTvKf1HFUh5uh1y38Zcxwn8D5hhOfgWoonVmWcuxvNBw3LaW4q7NUEu72ukg0KpaipGOqVvzChsP4MuD79mXgQd_N-J18MT51mO3uGwiMLJUohkWT_XkhSDSsPyJoS9xhoRZN9OseDB-4cIkevfIyewrBpmX6wSZ7yBf6lml5btAi57Aha-DvhUSEKV0mtsx7C81jf1Aw8B639zPomT7eYYRWepkGwfQ7_JZMJ7ddAC0hEUpTDcmBe20k5i9XzlmqB1bFIu236BrswD-xVTGvWidrEVTUafL8jOpSML875iOKGgC_y6aCgwMgTxemneWNgsUjkSOvi24fPxpGoFFzcRPWnQ1Ru5Wuw6RqO5RlVpvEvztXEE5IprXWdP286lgLTzcduagT4dHouhDrMaIP68lq17u2p3RaU2Awgn4kOQA-p8_iVESj9hPlLwhbQ48I46Vh2Eq6SgJffvr-mYqOY6jJB3AttsftMk8zxhmMl20nDT0RbKNGkKicezjbxXi9Pp2j4s_H_ynvrNvFWj_JS3wHITuX_vKcYFxgmExcpTa4FQsuwBeZxI2Ls9g4kkIM-CcXDwfp-aQ4JIpfWLWt5MKKx5ouhOXBQa5GvNs3YR3imhUTv1FOpm9n_jscWxwZJMTls")
25+
assert.NoError(t, err)
26+
data := "0xeaa110e6abf9423481fa6d5a72a3d66118e05ea4759fd4a6d6344de83e18dd52"
27+
dataBy, err := hexutil.Decode(data)
28+
assert.NoError(t, err)
29+
30+
sig, err := Base64Decode("5fS8LHBda15AMKBH8QQUuDCk23RJdYhWFq_rNoyPusqEdFGeiawSGwypcIhTeP9cOXKVZjf9LT9rPcEpJm49EdDb5FcqV7xCBSVV0CpLwJKCoYUMk1tDWFBN2wUbRDUe2PI7ycUKrurXrQeT1WfjEc-Nh7nGCR9kKv9MJfBoo76GhbC_CKtrmGFUeok3t9uoVjEOGC-iXtvMjh6G3hIV2JFIiSUdBS3qMIRa7FZiJ2ZkJaS-4vTwh70esP6KGkLYW5nhJWZ9Y0jIndLAxnFz-vcJJDmaq4fPUcWDO49sH0u8ZZe6mAs3Kdj2B7rGmzozYi4-j_nivnbWUGM7yCw6w1bops8Cxwr0g9l16lBPkAHBgxE1CGS0_KbsJ_GkbNlEU-6znEuFJpDubhC12QNmEeH8TIIwJqz8aw8G6zOyTP2wXyP6TIoFAemMIbyzAoV99QQ-2RWjnoLG0srgfacfJlhHcSSAaXFWB1Mr-bCCMjetLLcRrK5wwa-h7NAT6feZIUni0bq-SGc9oIVNDFvOsNJnHVKx644wpmdmNkZSINUccuJDwzNYKrbqqDIIpe_vzaAgLbS940LS5UmYtbkZkMvLQBFzbEW9C1A4rpJoDy-nibD0cqP1gg0AIdueElKrA1Szuj5Kh3_uOz-Fh81SYNLye4pX1bYWuV_wPt7qd3E")
31+
assert.NoError(t, err)
32+
hashed := sha256.Sum256(dataBy)
33+
err = Verify(hashed[:], pub, sig)
34+
assert.NoError(t, err)
35+
}

0 commit comments

Comments
 (0)