51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
package integration
|
|
|
|
import (
|
|
"archive/zip"
|
|
"bytes"
|
|
"testing"
|
|
|
|
"github.com/didiercrunch/filou/envelop"
|
|
"github.com/didiercrunch/filou/helper"
|
|
"github.com/didiercrunch/filou/payload"
|
|
)
|
|
|
|
type mockEncryptor struct{}
|
|
|
|
func (this *mockEncryptor) Encrypt(data []byte) ([]byte, error) {
|
|
// cesar encryption!
|
|
ret := make([]byte, len(data))
|
|
for i, d := range data {
|
|
ret[i] = d + 3 // modulo is implicit
|
|
}
|
|
return ret, nil
|
|
}
|
|
|
|
type mockSigner struct{}
|
|
|
|
func (this *mockSigner) Sign(data []byte) ([]byte, error) {
|
|
// a slice with the sum of the data plus a "secret" value
|
|
var sum byte = 36
|
|
for _, d := range data {
|
|
sum += d
|
|
}
|
|
return []byte{sum}, nil
|
|
}
|
|
|
|
func TestPayloadCanBeUseInEnvelop(t *testing.T) {
|
|
payload_ := payload.GetDefaultPayload(bytes.NewBufferString("some data to encrypt"))
|
|
envelop := envelop.NewEnveloper(&mockEncryptor{}, payload_, &mockSigner{})
|
|
w := helper.NewMockIoWriter()
|
|
if err := envelop.WriteToWriter(w); err != nil {
|
|
t.Error(err)
|
|
}
|
|
r, err := zip.NewReader(w.ReaderAt(), int64(w.Length()))
|
|
if err != nil {
|
|
t.Error(err)
|
|
return
|
|
}
|
|
if len(r.File) != 3 {
|
|
t.Error("wrong file number")
|
|
}
|
|
}
|