started to implements the integration tests

This commit is contained in:
didier.amyot committed 2014-10-18 11:06:37 -04:00
1 parent 0186c30750
commit b52129817e
5 files changed
+110 -37

No files matched your search

+23 -11
View File
@@ -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
View File
@@ -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 {