// Copyright 2023 syzkaller project authors. All rights reserved. // Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. package asset import ( "testing" "github.com/google/syzkaller/pkg/debugtracer" "github.com/stretchr/testify/assert" ) func TestCloudGetPaths(t *testing.T) { obj := &cloudStorageBackend{ client: nil, // we won't need it bucket: "my_bucket", tracer: &debugtracer.NullTracer{}, } // Test a public download URL. url, _ := obj.downloadURL("folder/file.txt", true) assert.Equal(t, `https://storage.googleapis.com/my_bucket/folder/file.txt`, url) // Test a non-public download URL. url, _ = obj.downloadURL("folder/file.txt", false) assert.Equal(t, `https://storage.cloud.google.com/my_bucket/folder/file.txt`, url) } func TestCloudParsePaths(t *testing.T) { obj := &cloudStorageBackend{ client: nil, // we won't need it bucket: `my_bucket`, tracer: &debugtracer.NullTracer{}, } // Parse a public download URL. path, err := obj.getPath(`https://storage.googleapis.com/my_bucket/folder/file.txt`) assert.NoError(t, err) assert.Equal(t, `folder/file.txt`, path) // Parse a non-public download URL. path, err = obj.getPath(`https://storage.cloud.google.com/my_bucket/folder/file.txt`) assert.NoError(t, err) assert.Equal(t, `folder/file.txt`, path) // Error: unknown domain. _, err = obj.getPath(`https://unknown-host.com/my_bucket/folder/file.txt`) assert.ErrorContains(t, err, `not allowed host: unknown-host.com`) // Error: unknown bucket. _, err = obj.getPath(`https://storage.cloud.google.com/not_my_bucket/folder/file.txt`) assert.ErrorIs(t, err, ErrUnknownBucket) }