started to implements the integration tests
This commit is contained in:
1 parent
0186c30750
commit
b52129817e
5 files changed
+110
-37
No files matched your search
+23
-11
@@ -13,10 +13,10 @@ type Payload interface {
|
||||
GetAlgorithm() string
|
||||
GetMode() string
|
||||
GetHashMethod() string
|
||||
GetPayloadData() io.Reader
|
||||
GetPayloadData() (io.Reader, error)
|
||||
}
|
||||
|
||||
type Encryptor interface {
|
||||
type PublicKeyEncryptor interface {
|
||||
Encrypt(data []byte) ([]byte, error)
|
||||
}
|
||||
|
||||
@@ -24,17 +24,25 @@ type Signer interface {
|
||||
Sign(data []byte) ([]byte, error)
|
||||
}
|
||||
|
||||
func NewEnveloper(publicKeyEncryptor PublicKeyEncryptor, payload Payload, signer Signer) *Enveloper {
|
||||
return &Enveloper{
|
||||
publicKeyEncryptor: publicKeyEncryptor,
|
||||
payload: payload,
|
||||
signer: signer,
|
||||
}
|
||||
}
|
||||
|
||||
type Enveloper struct {
|
||||
encryptor Encryptor
|
||||
payload Payload
|
||||
signer Signer
|
||||
EncryptedKey []byte
|
||||
Signature []byte
|
||||
Metadata *Metadata
|
||||
publicKeyEncryptor PublicKeyEncryptor
|
||||
payload Payload
|
||||
signer Signer
|
||||
EncryptedKey []byte
|
||||
Signature []byte
|
||||
Metadata *Metadata
|
||||
}
|
||||
|
||||
func (this *Enveloper) EncryptKey() ([]byte, error) {
|
||||
return this.encryptor.Encrypt(this.payload.GetKey())
|
||||
return this.publicKeyEncryptor.Encrypt(this.payload.GetKey())
|
||||
}
|
||||
|
||||
func (this *Enveloper) SignPayload() ([]byte, error) {
|
||||
@@ -66,8 +74,12 @@ func (this *Enveloper) WritePayload(z *zip.Writer) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = io.Copy(dataWriter, this.payload.GetPayloadData())
|
||||
return err
|
||||
if r, err := this.payload.GetPayloadData(); err != nil {
|
||||
return err
|
||||
} else if _, err = io.Copy(dataWriter, r); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (this *Enveloper) WriteMetadata(z *zip.Writer) error {
|
||||
|
||||
+15
-26
@@ -4,15 +4,12 @@ import (
|
||||
"archive/zip"
|
||||
"bytes"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/didiercrunch/filou/helper"
|
||||
"io"
|
||||
"reflect"
|
||||
"testing"
|
||||
)
|
||||
|
||||
var _ = fmt.Print
|
||||
|
||||
type mockPayload struct {
|
||||
MethodsCall []string
|
||||
}
|
||||
@@ -77,13 +74,13 @@ func (this *mockPayload) GetHashMethod() string {
|
||||
return theHashMethodUsedInThePayLoad
|
||||
}
|
||||
|
||||
func (this *mockPayload) GetPayloadData() io.Reader {
|
||||
func (this *mockPayload) GetPayloadData() (io.Reader, error) {
|
||||
this.addMethodCall("GetPayloadData")
|
||||
someData := `some data must be here. In reality, the data
|
||||
would be the encrypted payload. This will be
|
||||
the big chunk of the data.
|
||||
`
|
||||
return bytes.NewReader([]byte(someData))
|
||||
return bytes.NewReader([]byte(someData)), nil
|
||||
}
|
||||
|
||||
type mockEncryptor struct{}
|
||||
@@ -110,8 +107,8 @@ func (this *mockSigner) Sign(data []byte) ([]byte, error) {
|
||||
|
||||
func TestEncryptKey(t *testing.T) {
|
||||
env := &Enveloper{
|
||||
encryptor: &mockEncryptor{},
|
||||
payload: newMockPayload(),
|
||||
publicKeyEncryptor: &mockEncryptor{},
|
||||
payload: newMockPayload(),
|
||||
}
|
||||
if enc, err := env.EncryptKey(); err != nil {
|
||||
t.Error(err)
|
||||
@@ -121,11 +118,7 @@ func TestEncryptKey(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestCreateEnvelopCompletelyEncryptKey(t *testing.T) {
|
||||
env := &Enveloper{
|
||||
encryptor: &mockEncryptor{},
|
||||
payload: newMockPayload(),
|
||||
signer: &mockSigner{},
|
||||
}
|
||||
env := NewEnveloper(&mockEncryptor{}, newMockPayload(), &mockSigner{})
|
||||
if err := env.CreateEnvelopCompletely(); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
@@ -147,11 +140,7 @@ func TestSignPayload(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestCreateEnvelopCompletelySignHash(t *testing.T) {
|
||||
env := &Enveloper{
|
||||
payload: newMockPayload(),
|
||||
encryptor: &mockEncryptor{},
|
||||
signer: &mockSigner{},
|
||||
}
|
||||
env := NewEnveloper(&mockEncryptor{}, newMockPayload(), &mockSigner{})
|
||||
if err := env.CreateEnvelopCompletely(); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
@@ -176,9 +165,9 @@ func TestCreateMetadata(t *testing.T) {
|
||||
|
||||
func TestCreateEnvelopCompletelyMetadata(t *testing.T) {
|
||||
env := &Enveloper{
|
||||
encryptor: &mockEncryptor{},
|
||||
payload: newMockPayload(),
|
||||
signer: &mockSigner{},
|
||||
publicKeyEncryptor: &mockEncryptor{},
|
||||
payload: newMockPayload(),
|
||||
signer: &mockSigner{},
|
||||
}
|
||||
if err := env.CreateEnvelopCompletely(); err != nil {
|
||||
t.Error(err)
|
||||
@@ -190,9 +179,9 @@ func TestCreateEnvelopCompletelyMetadata(t *testing.T) {
|
||||
|
||||
func TestWriteToWriter(t *testing.T) {
|
||||
env := &Enveloper{
|
||||
payload: newMockPayload(),
|
||||
signer: &mockSigner{},
|
||||
encryptor: &mockEncryptor{},
|
||||
payload: newMockPayload(),
|
||||
signer: &mockSigner{},
|
||||
publicKeyEncryptor: &mockEncryptor{},
|
||||
}
|
||||
w := helper.NewMockIoWriter()
|
||||
if err := env.WriteToWriter(w); err != nil {
|
||||
@@ -211,9 +200,9 @@ func TestWriteToWriter(t *testing.T) {
|
||||
func TestMethodOrder(t *testing.T) {
|
||||
mockPayload := newMockPayload()
|
||||
env := &Enveloper{
|
||||
payload: mockPayload,
|
||||
signer: &mockSigner{},
|
||||
encryptor: &mockEncryptor{},
|
||||
payload: mockPayload,
|
||||
signer: &mockSigner{},
|
||||
publicKeyEncryptor: &mockEncryptor{},
|
||||
}
|
||||
w := helper.NewMockIoWriter()
|
||||
if err := env.WriteToWriter(w); err != nil {
|
||||
|
||||
Reference in new issue
Block a user