[GH-ISSUE #110] Issue downloading file!? #2171

Closed
opened 2026-03-15 17:51:03 +03:00 by kerem · 1 comment
Owner

Originally created by @aurc on GitHub (Oct 25, 2019).
Original GitHub issue: https://github.com/fsouza/fake-gcs-server/issues/110

Here's a single use case where I'm:

  1. Creating a bucket "test_bucket"
  2. Uploading a file "foo.txt"
  3. Listing the files (I see "foo.txt")
  4. Downloading the file "foo.txt"

I'm able to do steps 1 to 3. But step for gives me an error, as if it was trying to go the the cloud:

Here's the code sample:

func TestNewGcsStore(t *testing.T) {
	ctx := context.Background()

	server := fakestorage.NewServer(nil)
	server.CreateBucket("bucket_test")
	url := server.URL() + "/storage/v1/"

	transCfg := &http.Transport{
		TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, // ignore expired SSL certificates
	}
	httpClient := &http.Client{Transport: transCfg}
	client, err := storage.NewClient(ctx, option.WithEndpoint(url), option.WithHTTPClient(httpClient))
	if err != nil {
		t.Fatal(err)
	}

	// Create bucket

	bucket := client.Bucket("bucket_test")

	// Create file
	wc := bucket.Object("foo.txt").NewWriter(ctx)

	if _, err = io.Copy(wc, strings.NewReader("Foo content!")); err != nil {
		t.Fatal(err)
	}

	if err := wc.Close(); err != nil {
		t.Fatal(err)
	}

	// List files
	it := bucket.Objects(ctx, nil)
	for {
		attrs, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			t.Fatal(err)
		}
		t.Log(" -> " + attrs.Name)
	}

	// Download file
	rc, err := bucket.Object("foo.txt").NewReader(ctx)
	if err != nil {
		t.Fatal(err)
	}

	data, err := ioutil.ReadAll(rc)
	defer rc.Close()
	if err != nil {
		t.Fatal(err)
	}

	fileContents := string(data)
	t.Log(fileContents)
}

The output is:

=== RUN   TestNewGcsStore
--- FAIL: TestNewGcsStore (0.01s)
    gcsstore_test.go:98:  -> foo.txt
    gcsstore_test.go:104: Get https://storage.googleapis.com/bucket_test/foo.txt: dial tcp: lookup storage.googleapis.com: no such host

Am I missing something or this is a bug?

Originally created by @aurc on GitHub (Oct 25, 2019). Original GitHub issue: https://github.com/fsouza/fake-gcs-server/issues/110 Here's a single use case where I'm: 1. Creating a bucket "test_bucket" 2. Uploading a file "foo.txt" 3. Listing the files (I see "foo.txt") 4. Downloading the file "foo.txt" I'm able to do steps 1 to 3. But step for gives me an error, as if it was trying to go the the cloud: Here's the code sample: ```` func TestNewGcsStore(t *testing.T) { ctx := context.Background() server := fakestorage.NewServer(nil) server.CreateBucket("bucket_test") url := server.URL() + "/storage/v1/" transCfg := &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, // ignore expired SSL certificates } httpClient := &http.Client{Transport: transCfg} client, err := storage.NewClient(ctx, option.WithEndpoint(url), option.WithHTTPClient(httpClient)) if err != nil { t.Fatal(err) } // Create bucket bucket := client.Bucket("bucket_test") // Create file wc := bucket.Object("foo.txt").NewWriter(ctx) if _, err = io.Copy(wc, strings.NewReader("Foo content!")); err != nil { t.Fatal(err) } if err := wc.Close(); err != nil { t.Fatal(err) } // List files it := bucket.Objects(ctx, nil) for { attrs, err := it.Next() if err == iterator.Done { break } if err != nil { t.Fatal(err) } t.Log(" -> " + attrs.Name) } // Download file rc, err := bucket.Object("foo.txt").NewReader(ctx) if err != nil { t.Fatal(err) } data, err := ioutil.ReadAll(rc) defer rc.Close() if err != nil { t.Fatal(err) } fileContents := string(data) t.Log(fileContents) } ```` The output is: ```` === RUN TestNewGcsStore --- FAIL: TestNewGcsStore (0.01s) gcsstore_test.go:98: -> foo.txt gcsstore_test.go:104: Get https://storage.googleapis.com/bucket_test/foo.txt: dial tcp: lookup storage.googleapis.com: no such host ```` Am I missing something or this is a bug?
kerem closed this issue 2026-03-15 17:51:08 +03:00
Author
Owner

@aurc commented on GitHub (Oct 25, 2019):

My bad...

Replacing:

server := fakestorage.NewServer(nil)
server.CreateBucket("bucket_test")
url := server.URL() + "/storage/v1/"

transCfg := &http.Transport{
    TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, // ignore expired SSL certificates
}
httpClient := &http.Client{Transport: transCfg}
client, err := storage.NewClient(ctx, option.WithEndpoint(url), option.WithHTTPClient(httpClient))

With

server := fakestorage.NewServer(nil)
server.CreateBucket("bucket_test")
client := server.Client()

did the trick

<!-- gh-comment-id:546484866 --> @aurc commented on GitHub (Oct 25, 2019): My bad... Replacing: ```` server := fakestorage.NewServer(nil) server.CreateBucket("bucket_test") url := server.URL() + "/storage/v1/" transCfg := &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, // ignore expired SSL certificates } httpClient := &http.Client{Transport: transCfg} client, err := storage.NewClient(ctx, option.WithEndpoint(url), option.WithHTTPClient(httpClient)) ```` With ```` server := fakestorage.NewServer(nil) server.CreateBucket("bucket_test") client := server.Client() ```` did the trick
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/fake-gcs-server#2171
No description provided.