Skip to content

Commit

Permalink
Merge pull request #27 from alfrunes/cherry-pick25
Browse files Browse the repository at this point in the history
Cherry-pick #25 into 1.1.x
  • Loading branch information
alfrunes committed Apr 8, 2021
2 parents fef96c5 + 6809954 commit df6fdd6
Show file tree
Hide file tree
Showing 280 changed files with 99,562 additions and 24,117 deletions.
1 change: 0 additions & 1 deletion LIC_FILES_CHKSUM.sha256
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#
# Apache-2.0
b4acfcfa2a0ba1a8c82ec3965fbcee886cff8394ca4214e0ddac0a36beb1e05a LICENSE
e31497e5f27700c6c7f25c7831641d0af1df47c3d4c6c3699d12d74d75fd0b33 vendor/github.com/magefile/mage/LICENSE
3eb823230e5d112e1bd032ccc82ae765cf676d0d6d46a1a1daa2d658b3005b67 vendor/github.com/mendersoftware/go-lib-micro/LICENSE
#
# BSD-2-Clause
Expand Down
7 changes: 2 additions & 5 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,11 @@ require (
github.com/creack/pty v1.1.11
github.com/go-ozzo/ozzo-validation/v4 v4.3.0
github.com/gorilla/websocket v1.4.2
github.com/mendersoftware/go-lib-micro v0.0.0-20210322083710-42186ab64a1e
github.com/mendersoftware/go-lib-micro v0.0.0-20210407130414-8df169b86c91
github.com/pkg/errors v0.9.1
github.com/satori/go.uuid v1.2.0
github.com/sirupsen/logrus v1.8.0
github.com/stretchr/objx v0.3.0 // indirect
github.com/sirupsen/logrus v1.8.1
github.com/stretchr/testify v1.7.0
github.com/urfave/cli/v2 v2.2.0
github.com/vmihailenco/msgpack/v5 v5.2.0
golang.org/x/sys v0.0.0-20210105210732-16f7687f5001 // indirect
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
)
35 changes: 14 additions & 21 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -158,8 +158,6 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
github.com/magefile/mage v1.10.0 h1:3HiXzCUY12kh9bIuyXShaVe529fJfyqoVM42o/uom2g=
github.com/magefile/mage v1.10.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A=
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE=
github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0=
Expand All @@ -169,12 +167,8 @@ github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Ky
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
github.com/mendersoftware/cli/v2 v2.1.1-minimal h1:NWX83kF8Eobfb3oBWeUmw9Ef2H9ZqFPZGWRXCimtXwg=
github.com/mendersoftware/cli/v2 v2.1.1-minimal/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ=
github.com/mendersoftware/go-lib-micro v0.0.0-20210317131202-d8b47cfebb37 h1:vT2UmT4zNBkqQYpD9FSCt9IDU20rd7jjwFTExCHisfg=
github.com/mendersoftware/go-lib-micro v0.0.0-20210317131202-d8b47cfebb37/go.mod h1:AYMV1BNNHDcAt25V7KY6cd5XhAZXIlOVlCV9yZt51zM=
github.com/mendersoftware/go-lib-micro v0.0.0-20210319123318-8cee8f55d7f5 h1:ggqfF3oHRWyahqgvzdLuHRlhGWv92e5Eos9fNnB+57k=
github.com/mendersoftware/go-lib-micro v0.0.0-20210319123318-8cee8f55d7f5/go.mod h1:AYMV1BNNHDcAt25V7KY6cd5XhAZXIlOVlCV9yZt51zM=
github.com/mendersoftware/go-lib-micro v0.0.0-20210322083710-42186ab64a1e h1:lLyrCxrUoSIPnqQjbjYC0473C/0wi3QoWNgKQ/fDI+Y=
github.com/mendersoftware/go-lib-micro v0.0.0-20210322083710-42186ab64a1e/go.mod h1:AYMV1BNNHDcAt25V7KY6cd5XhAZXIlOVlCV9yZt51zM=
github.com/mendersoftware/go-lib-micro v0.0.0-20210407130414-8df169b86c91 h1:0K75o+ZtfmNT/fXQXLWScZiQ8C+zQAFU8rrry54cnbc=
github.com/mendersoftware/go-lib-micro v0.0.0-20210407130414-8df169b86c91/go.mod h1:YIbWjQp18qmyTmlDk/ma6kLUCDYk21OfqM41LHxjC7Q=
github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
Expand Down Expand Up @@ -223,8 +217,8 @@ github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPx
github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
github.com/sirupsen/logrus v1.8.0 h1:nfhvjKcUMhBMVqbKHJlk5RPrrfYr/NMo3692g0dwfWU=
github.com/sirupsen/logrus v1.8.0/go.mod h1:4GuYW9TZmE769R5STWrRakJc4UqQ3+QQ95fyz7ENv1A=
github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
Expand All @@ -236,9 +230,8 @@ github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb6
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1 h1:2vfRuCMp5sSVIDSqO8oNnWJq7mPa6KVP3iPIwFBuy8A=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.3.0 h1:NGXK3lHquSN08v5vWalVI/L8XU9hdzE/G6xsrze47As=
github.com/stretchr/objx v0.3.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
Expand All @@ -254,11 +247,13 @@ github.com/vmihailenco/msgpack/v5 v5.2.0 h1:ZhIAtVUP1mme8GIlpiAnmTzjSWMexA/uNF2W
github.com/vmihailenco/msgpack/v5 v5.2.0/go.mod h1:fEM7KuHcnm0GvDCztRpw9hV0PuoO2ciTismP6vjggcM=
github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g=
github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds=
github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I=
github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y=
github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs=
github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM=
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
go.mongodb.org/mongo-driver v1.4.6/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc=
go.mongodb.org/mongo-driver v1.5.1/go.mod h1:gRXCHX4Jo7J0IJ1oDQyUxF7jfy19UfxniMS4xxMmUqw=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
Expand All @@ -269,8 +264,8 @@ golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnf
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
Expand Down Expand Up @@ -332,13 +327,12 @@ golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42 h1:vEOn+mP2zCOVzKckCZy6YsCtDblrpj/w7B9nxGNELpg=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210105210732-16f7687f5001 h1:/dSxr6gT0FNI1MO5WLJo8mTmItROeOKTkDn+7OwWBos=
golang.org/x/sys v0.0.0-20210105210732-16f7687f5001/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
Expand Down Expand Up @@ -398,9 +392,8 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
Expand Down
26 changes: 18 additions & 8 deletions session/filetransfer.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
"fmt"
"io"
"os"
"path"
"runtime"
"sync/atomic"
"syscall"
Expand All @@ -39,9 +40,9 @@ const (

var errFileTransferAbort = errors.New("handler aborted")

type FileInfo wsft.FileInfo
type UploadRequest wsft.UploadRequest

func (f FileInfo) Validate() error {
func (f UploadRequest) Validate() error {
return validation.ValidateStruct(&f,
validation.Field(&f.Path, validation.Required),
)
Expand Down Expand Up @@ -219,14 +220,14 @@ func (c *chunkWriter) Write(b []byte) (int, error) {
}

func (h *FileTransferHandler) InitFileDownload(msg *ws.ProtoMsg, w ResponseWriter) (err error) {
params := new(GetFile)
var params GetFile
defer func() {
if err != nil {
log.Error(err.Error())
h.Error(msg, w, err)
}
}()
if err = msgpack.Unmarshal(msg.Body, params); err != nil {
if err = msgpack.Unmarshal(msg.Body, &params); err != nil {
err = errors.Wrap(err, "malformed request parameters")
return err
} else if err = params.Validate(); err != nil {
Expand Down Expand Up @@ -361,7 +362,7 @@ func (h *FileTransferHandler) InitFileUpload(msg *ws.ProtoMsg, w ResponseWriter)
defaultUID uint32 = uint32(os.Getuid())
defaultGID uint32 = uint32(os.Getgid())
)
params := FileInfo{
params := UploadRequest{
UID: &defaultUID,
GID: &defaultGID,
Mode: &defaultMode,
Expand All @@ -378,11 +379,21 @@ func (h *FileTransferHandler) InitFileUpload(msg *ws.ProtoMsg, w ResponseWriter)
return errors.Wrap(err, "invalid request parameters")
}

StatAgain:
if info, errStat := os.Lstat(*params.Path); errStat != nil {
if !os.IsNotExist(errStat) {
err = errors.Wrap(errStat, "error checking file location")
return err
}
} else if info.IsDir() {
if params.SrcPath != nil {
*params.Path = path.Join(*params.Path, path.Base(*params.SrcPath))
params.SrcPath = nil
goto StatAgain
} else {
err = errors.New("conflicting file path: cannot overwrite directory")
return err
}
} else if !info.Mode().IsRegular() {
err = errors.New(
"conflicting file path: cannot overwrite irregular file",
Expand All @@ -402,7 +413,7 @@ func (h *FileTransferHandler) InitFileUpload(msg *ws.ProtoMsg, w ResponseWriter)

var atomicSuffix uint32

func createWrOnlyTempFile(params FileInfo) (fd *os.File, err error) {
func createWrOnlyTempFile(params UploadRequest) (fd *os.File, err error) {
for i := 0; i < 100; i++ {
suffix := atomic.AddUint32(&atomicSuffix, 1)
filename := *params.Path + fmt.Sprintf(".%08x%02x", suffix, i)
Expand All @@ -422,8 +433,7 @@ func createWrOnlyTempFile(params FileInfo) (fd *os.File, err error) {

func (h *FileTransferHandler) FileUploadHandler(
msg *ws.ProtoMsg,
params FileInfo,

params UploadRequest,
w ResponseWriter,
) (err error) {
var (
Expand Down
34 changes: 24 additions & 10 deletions session/filetransfer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ func TestFileTransferUpload(t *testing.T) {
testCases := []struct {
Name string

Params FileInfo
Params UploadRequest

// TransferMessages, if set, are sent before file contents
TransferMessages []*ws.ProtoMsg
Expand All @@ -53,7 +53,7 @@ func TestFileTransferUpload(t *testing.T) {
}{{
Name: "ok",

Params: FileInfo{
Params: UploadRequest{
Path: func() *string {
p := path.Join(testdir, "mkay")
return &p
Expand All @@ -65,10 +65,24 @@ func TestFileTransferUpload(t *testing.T) {
"make things super inefficient",
),
ChunkSize: 1,
}, {
Name: "ok, relative path",

Params: UploadRequest{
Path: &testdir,
SrcPath: func() *string {
s := "/home/acme/.local/important/file"
return &s
}(),
},
FileContents: []byte(
"short message",
),
ChunkSize: 123,
}, {
Name: "error, fake error from client",

Params: FileInfo{
Params: UploadRequest{
Path: func() *string {
p := path.Join(testdir, "clienterr")
return &p
Expand All @@ -94,7 +108,7 @@ func TestFileTransferUpload(t *testing.T) {
}, {
Name: "error, unexpected ACK message from client",

Params: FileInfo{
Params: UploadRequest{
Path: func() *string {
p := path.Join(testdir, "ackerr")
return &p
Expand All @@ -112,14 +126,14 @@ func TestFileTransferUpload(t *testing.T) {
}, {
Name: "error, path is a directory",

Params: FileInfo{
Params: UploadRequest{
Path: &testdir,
},
Error: errors.New("conflicting file path: cannot overwrite irregular file"),
Error: errors.New("conflicting file path: cannot overwrite directory"),
}, {
Name: "error, chunk missing offset",

Params: FileInfo{
Params: UploadRequest{
Path: func() *string {
p := path.Join(testdir, "offseterr")
return &p
Expand All @@ -139,7 +153,7 @@ func TestFileTransferUpload(t *testing.T) {
}, {
Name: "error, offset jumps beyond EOF",

Params: FileInfo{
Params: UploadRequest{
Path: func() *string {
p := path.Join(testdir, "badOffset")
return &p
Expand All @@ -162,7 +176,7 @@ func TestFileTransferUpload(t *testing.T) {
}, {
Name: "error, broken response writer",

Params: FileInfo{
Params: UploadRequest{
Path: func() *string {
p := path.Join(testdir, "errfile")
return &p
Expand All @@ -173,7 +187,7 @@ func TestFileTransferUpload(t *testing.T) {
}, {
Name: "error, parent directory does not exist",

Params: FileInfo{
Params: UploadRequest{
Path: func() *string {
p := path.Join(
testdir, "parent", "dir",
Expand Down

0 comments on commit df6fdd6

Please sign in to comment.