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 CommonPrefix
- type Contents
- type CreateBucketOpts
- type ETag
- type ListBucketResult
- type ListOptions
- type Object
- type ObjectAttrs
- type Options
- type Server
- func (s *Server) Backend() backend.Storage
- 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) CreateObjectStreaming(obj StreamingObject) error
- func (s *Server) GetObject(bucketName, objectName string) (Object, error)
- func (s *Server) GetObjectStreaming(bucketName, objectName string) (StreamingObject, error)
- func (s *Server) GetObjectWithGeneration(bucketName, objectName string, generation int64) (Object, error)
- func (s *Server) GetObjectWithGenerationStreaming(bucketName, objectName string, generation int64) (StreamingObject, error)
- func (s *Server) HTTPClient() *http.Client
- func (s *Server) HTTPHandler() http.Handler
- func (s *Server) ListObjects(bucketName, prefix, delimiter string, versions bool) ([]ObjectAttrs, []string, error)deprecated
- func (s *Server) ListObjectsWithOptions(bucketName string, options ListOptions) ([]ObjectAttrs, []string, error)
- func (s *Server) PublicURL() string
- func (s *Server) Stop()
- func (s *Server) URL() string
- type StreamingObject
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CommonPrefix ¶ added in v1.45.0
type CommonPrefix struct {
Prefix string `xml:"Prefix"`
}
type CreateBucketOpts ¶ added in v1.16.0
CreateBucketOpts defines the properties of a bucket you can create with CreateBucketWithOpts.
type ListBucketResult ¶ added in v1.45.0
type ListOptions ¶ added in v1.28.0
type Object ¶
type Object struct { ObjectAttrs Content []byte `json:"-"` }
Object represents an object that is stored within the fake server. The content of this type is stored is buffered, i.e. it's stored in memory. Use StreamingObject to stream the content from a reader, e.g a file.
func (Object) StreamingObject ¶ added in v1.40.0
func (o Object) StreamingObject() StreamingObject
type ObjectAttrs ¶ added in v1.30.0
type ObjectAttrs struct { BucketName string Name string Size int64 ContentType string ContentEncoding string // Crc32c checksum of Content. calculated by server when it's upload methods are used. Crc32c string Md5Hash string Etag string ACL []storage.ACLRule // 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 Updated time.Time Deleted time.Time CustomTime time.Time Generation int64 Metadata map[string]string }
ObjectAttrs returns only the meta-data about an object without its contents.
func (ObjectAttrs) MarshalJSON ¶ added in v1.40.0
func (o ObjectAttrs) MarshalJSON() ([]byte, error)
MarshalJSON for ObjectAttrs to use ACLRule instead of storage.ACLRule
func (*ObjectAttrs) UnmarshalJSON ¶ added in v1.40.0
func (o *ObjectAttrs) UnmarshalJSON(data []byte) error
UnmarshalJSON for ObjectAttrs to use ACLRule instead of storage.ACLRule
type Options ¶ added in v1.1.0
type Options struct { InitialObjects []Object StorageRoot string Seed 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>/<object> // If unset, the default is "storage.googleapis.com", the XML API PublicHost string // Optional list of headers to add to the CORS header allowlist // An example is "X-Goog-Meta-Uploader", which will allow a // custom metadata header named "X-Goog-Meta-Uploader" to be // sent through the browser AllowedCORSHeaders []string // Destination for writing log. Writer io.Writer // EventOptions contains the events that should be published and the URL // of the Google cloud function such events should be published to. EventOptions notification.EventManagerOptions // Location used for buckets in the server. BucketsLocation string CertificateLocation string PrivateKeyLocation string }
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" "github.com/fsouza/fake-gcs-server/fakestorage" ) func main() { server, err := fakestorage.NewServerWithOptions(fakestorage.Options{ InitialObjects: []fakestorage.Object{ { ObjectAttrs: fakestorage.ObjectAttrs{ 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 := io.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" "github.com/fsouza/fake-gcs-server/fakestorage" ) func main() { server := fakestorage.NewServer([]fakestorage.Object{ { ObjectAttrs: fakestorage.ObjectAttrs{ 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 := io.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 is the non-streaming version of CreateObjectStreaming.
In addition to streaming, CreateObjectStreaming returns an error instead of panicking when an error occurs.
func (*Server) CreateObjectStreaming ¶ added in v1.40.0
func (s *Server) CreateObjectStreaming(obj StreamingObject) error
CreateObjectStreaming stores the given object internally.
If the bucket within the object doesn't exist, it also creates it. If the object already exists, it overwrites the object.
func (*Server) GetObjectStreaming ¶ added in v1.40.0
func (s *Server) GetObjectStreaming(bucketName, objectName string) (StreamingObject, error)
GetObjectStreaming 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 is the non-streaming version of GetObjectWithGenerationStreaming.
func (*Server) GetObjectWithGenerationStreaming ¶ added in v1.40.0
func (s *Server) GetObjectWithGenerationStreaming(bucketName, objectName string, generation int64) (StreamingObject, error)
GetObjectWithGenerationStreaming 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) HTTPHandler ¶ added in v1.45.1
HTTPHandler returns an HTTP handler that behaves like GCS.
func (*Server) ListObjects
deprecated
func (*Server) ListObjectsWithOptions ¶ added in v1.28.0
func (s *Server) ListObjectsWithOptions(bucketName string, options ListOptions) ([]ObjectAttrs, []string, error)
type StreamingObject ¶ added in v1.40.0
type StreamingObject struct { ObjectAttrs Content io.ReadSeekCloser `json:"-"` }
StreamingObject is the streaming version of Object.
func (*StreamingObject) BufferedObject ¶ added in v1.40.0
func (o *StreamingObject) BufferedObject() (Object, error)
func (*StreamingObject) Close ¶ added in v1.40.0
func (o *StreamingObject) Close() error