]> Cypherpunks.ru repositories - nncp.git/blobdiff - src/cypherpunks.ru/nncp/pkt_test.go
Remote command execution
[nncp.git] / src / cypherpunks.ru / nncp / pkt_test.go
index ec58785d298018edf2c3681a72a1e9c9ca08d039..e0765b3a7179c53be091cc421f4d4ff63c58d50a 100644 (file)
@@ -1,6 +1,6 @@
 /*
 NNCP -- Node to Node copy, utilities for store-and-forward data exchange
-Copyright (C) 2016-2017 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2016-2018 Sergey Matveev <stargrave@stargrave.org>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
@@ -35,17 +35,26 @@ func TestPktEncWrite(t *testing.T) {
        if err != nil {
                panic(err)
        }
-       f := func(path string, pathSize uint8, data [1 << 16]byte, size uint16) bool {
+       f := func(path string, pathSize uint8, data [1 << 16]byte, size, padSize uint16) bool {
                dataR := bytes.NewReader(data[:])
                var ct bytes.Buffer
                if len(path) > int(pathSize) {
                        path = path[:int(pathSize)]
                }
-               pkt, err := NewPkt(PktTypeFile, path)
+               pkt, err := NewPkt(PktTypeFile, 123, []byte(path))
                if err != nil {
                        panic(err)
                }
-               err = PktEncWrite(nodeOur, nodeTheir.Their(), pkt, 123, int64(size), dataR, &ct)
+               err = PktEncWrite(
+                       nodeOur,
+                       nodeTheir.Their(),
+                       pkt,
+                       123,
+                       int64(size),
+                       int64(padSize),
+                       dataR,
+                       &ct,
+               )
                if err != nil {
                        return false
                }
@@ -72,17 +81,26 @@ func TestPktEncRead(t *testing.T) {
        if err != nil {
                panic(err)
        }
-       f := func(path string, pathSize uint8, data [1 << 16]byte, size uint16, junk []byte) bool {
+       f := func(path string, pathSize uint8, data [1 << 16]byte, size, padSize uint16, junk []byte) bool {
                dataR := bytes.NewReader(data[:])
                var ct bytes.Buffer
                if len(path) > int(pathSize) {
                        path = path[:int(pathSize)]
                }
-               pkt, err := NewPkt(PktTypeFile, path)
+               pkt, err := NewPkt(PktTypeFile, 123, []byte(path))
                if err != nil {
                        panic(err)
                }
-               err = PktEncWrite(node1, node2.Their(), pkt, 123, int64(size), dataR, &ct)
+               err = PktEncWrite(
+                       node1,
+                       node2.Their(),
+                       pkt,
+                       123,
+                       int64(size),
+                       int64(padSize),
+                       dataR,
+                       &ct,
+               )
                if err != nil {
                        return false
                }
@@ -90,13 +108,16 @@ func TestPktEncRead(t *testing.T) {
                var pt bytes.Buffer
                nodes := make(map[NodeId]*Node)
                nodes[*node1.Id] = node1.Their()
-               node, err := PktEncRead(node2, nodes, &ct, &pt)
+               node, sizeGot, err := PktEncRead(node2, nodes, &ct, &pt)
                if err != nil {
                        return false
                }
                if *node.Id != *node1.Id {
                        return false
                }
+               if sizeGot != int64(size) {
+                       return false
+               }
                var pktBuf bytes.Buffer
                xdr.Marshal(&pktBuf, &pkt)
                return bytes.Compare(pt.Bytes(), append(pktBuf.Bytes(), data[:int(size)]...)) == 0