Documentation ¶
Overview ¶
Package fakestorage provides the server that can be used as a target on GCS-dependent tests.
The server provides a method that returns an instance of the storage client that can be used in tests.
Index ¶
- type CreateBucketOpts
- type Object
- type Options
- type Server
- func (s *Server) Client() *storage.Client
- func (s *Server) CreateBucket(name string)deprecated
- func (s *Server) CreateBucketWithOpts(opts CreateBucketOpts)
- func (s *Server) CreateObject(obj Object)
- func (s *Server) GetObject(bucketName, objectName string) (Object, error)
- func (s *Server) GetObjectWithGeneration(bucketName, objectName string, generation int64) (Object, error)
- func (s *Server) HTTPClient() *http.Client
- func (s *Server) ListObjects(bucketName, prefix, delimiter string, versions bool) ([]Object, []string, error)
- func (s *Server) PublicURL() string
- func (s *Server) Stop()
- func (s *Server) URL() string
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CreateBucketOpts ¶ added in v1.16.0
CreateBucketOpts defines the properties of a bucket you can create with CreateBucketWithOpts.
type Object ¶
type Object struct { BucketName string `json:"-"` Name string `json:"name"` ContentType string `json:"contentType"` ContentEncoding string `json:"contentEncoding"` Content []byte `json:"-"` // Crc32c checksum of Content. calculated by server when it's upload methods are used. Crc32c string `json:"crc32c,omitempty"` Md5Hash string `json:"md5Hash,omitempty"` ACL []storage.ACLRule `json:"acl,omitempty"` // Dates and generation can be manually injected, so you can do assertions on them, // or let us fill these fields for you Created time.Time `json:"created,omitempty"` Updated time.Time `json:"updated,omitempty"` Deleted time.Time `json:"deleted,omitempty"` Generation int64 `json:"generation,omitempty,string"` Metadata map[string]string `json:"metadata,omitempty"` }
Object represents the object that is stored within the fake server.
type Options ¶ added in v1.1.0
type Options struct { InitialObjects []Object StorageRoot string Scheme string Host string Port uint16 // when set to true, the server will not actually start a TCP listener, // client requests will get processed by an internal mocked transport. NoListener bool // Optional external URL, such as https://gcs.127.0.0.1.nip.io:4443 // Returned in the Location header for resumable uploads // The "real" value is https://www.googleapis.com, the JSON API // The default is whatever the server is bound to, such as https://0.0.0.0:4443 ExternalURL string // Optional URL for public access // An example is "storage.gcs.127.0.0.1.nip.io:4443", which will configure // the server to serve objects at: // https://storage.gcs.127.0.0.1.nip.io:4443/<bucket>/<object> // https://<bucket>.storage.gcs.127.0.0.1.nip.io:4443>/<bucket>/<object> // If unset, the default is "storage.googleapis.com", the XML API PublicHost string // Destination for writing log. Writer io.Writer }
Options are used to configure the server on creation.
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
Server is the fake server.
It provides a fake implementation of the Google Cloud Storage API.
Example (With_host_port) ¶
package main import ( "context" "fmt" "io/ioutil" "github.com/fsouza/fake-gcs-server/fakestorage" ) func main() { server, err := fakestorage.NewServerWithOptions(fakestorage.Options{ InitialObjects: []fakestorage.Object{ { BucketName: "some-bucket", Name: "some/object/file.txt", Content: []byte("inside the file"), }, }, Host: "127.0.0.1", Port: 8081, }) if err != nil { panic(err) } defer server.Stop() client := server.Client() object := client.Bucket("some-bucket").Object("some/object/file.txt") reader, err := object.NewReader(context.Background()) if err != nil { panic(err) } defer reader.Close() data, err := ioutil.ReadAll(reader) if err != nil { panic(err) } fmt.Printf("%s", data) }
Output: inside the file
func NewServerWithOptions ¶ added in v1.1.0
NewServerWithOptions creates a new server configured according to the provided options.
func (*Server) Client ¶
Client returns a GCS client configured to talk to the server.
Example ¶
package main import ( "context" "fmt" "io/ioutil" "github.com/fsouza/fake-gcs-server/fakestorage" ) func main() { server := fakestorage.NewServer([]fakestorage.Object{ { BucketName: "some-bucket", Name: "some/object/file.txt", Content: []byte("inside the file"), }, }) defer server.Stop() client := server.Client() object := client.Bucket("some-bucket").Object("some/object/file.txt") reader, err := object.NewReader(context.Background()) if err != nil { panic(err) } defer reader.Close() data, err := ioutil.ReadAll(reader) if err != nil { panic(err) } fmt.Printf("%s", data) }
Output: inside the file
func (*Server) CreateBucket
deprecated
func (*Server) CreateBucketWithOpts ¶ added in v1.16.0
func (s *Server) CreateBucketWithOpts(opts CreateBucketOpts)
CreateBucketWithOpts creates a bucket inside the server, so any API calls that require the bucket name will recognize this bucket. Use CreateBucketOpts to customize the options for this bucket
If the underlying backend returns an error, this method panics.
func (*Server) CreateObject ¶
CreateObject stores the given object internally.
If the bucket within the object doesn't exist, it also creates it. If the object already exists, it overrides the object.
func (*Server) GetObject ¶
GetObject returns the object with the given name in the given bucket, or an error if the object doesn't exist.
func (*Server) GetObjectWithGeneration ¶ added in v1.16.0
func (s *Server) GetObjectWithGeneration(bucketName, objectName string, generation int64) (Object, error)
GetObjectWithGeneration returns the object with the given name and given generation ID in the given bucket, or an error if the object doesn't exist.
If versioning is enabled, archived versions are considered.
func (*Server) HTTPClient ¶ added in v1.4.0
HTTPClient returns an HTTP client configured to talk to the server.
func (*Server) ListObjects ¶
func (s *Server) ListObjects(bucketName, prefix, delimiter string, versions bool) ([]Object, []string, error)
ListObjects returns a sorted list of objects that match the given criteria, or an error if the bucket doesn't exist.