Skip to content

Instantly share code, notes, and snippets.

View csmith0651's full-sized avatar

Craig Smith csmith0651

  • Arlington, MA
View GitHub Profile
package main
import (
"bytes"
"encoding/json"
"io"
"io/ioutil"
"log"
"github.com/aws/aws-sdk-go/aws"
results, err := s3Client.GetObject(&s3.GetObjectInput{
Bucket: aws.String(bucket),
Key: aws.String(key),
})
type S3Fetcher interface {
GetObject(*s3.GetObjectInput) (*s3.GetObjectOutput, error)
}
type fileFetcher struct {
data []byte
file string
}
func NewFileFetcher(filename string) (S3Fetcher, error) {
// read contents of file
jsonBuff, err := ioutil.ReadFile(filename)
if err != nil {
return nil, err
func (fetcher *fileFetcher) GetObject(s3Input *s3.GetObjectInput) (*s3.GetObjectOutput, error) {
// completely ignore the input, just return an object wrapping the fetcher.data
log.Printf("reading offers from file '%s'", fetcher.file)
return &s3.GetObjectOutput{
Body: *(NewMockBody(fetcher.data)),
}, nil
}
type MockBody struct {
buf *bytes.Buffer
}
func (m MockBody) Close() error {
return nil
}
func (m MockBody) Read(p []byte) (n int, err error) {
return m.buf.Read(p)
func downloadS3Data(fetcher S3Fetcher, bucket string, key string) ([]byte, error) {
results, err := fetcher.GetObject(&s3.GetObjectInput{
Bucket: aws.String(bucket),
Key: aws.String(key),
})
if err != nil {
return nil, err
}
defer results.Body.Close()
@csmith0651
csmith0651 / person_test.go
Last active October 18, 2016 12:58
person_test
package person_test
import (
. "github.com/tapjoy/mocks3fetcher/person"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
var _ = Describe("person", func() {
goodJson := `
var svc S3Fetcher.S3Fetcher
var err error
var jsonData string = goodJson
JustBeforeEach(func() {
svc, err = S3Fetcher.NewStringFetcher(jsonData)
})
Context("ReadPersonFromS3", func() {
It("successfully reads data from S3", func() {
@csmith0651
csmith0651 / mock_import.go
Created October 17, 2016 20:06
updating the import list to include the generated mock object
import (
"github.com/tapjoy/gomockblog/mocks/mock_s3fetcher"
}