blob: ec4a41ab715feaa66e1595a9afea0d258a428b55 [file] [log] [blame]
// Copyright 2021 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package tests
import (
"context"
"fmt"
"io/ioutil"
"os"
"path"
"testing"
"chromiumos/test/publish/cmd/publishserver/mock_storage"
"chromiumos/test/publish/cmd/publishserver/storage"
"github.com/golang/mock/gomock"
)
func TestGSUploadMultiFile(t *testing.T) {
/*Manual Equivalent"
gsc, err := storage.NewGSClient(context.Background(), "path_to_creds")
if err != nil {
t.Errorf("Failed %w", err)
}
if err = gsc.Upload(context.Background(), "source_path", "gs://dest"); err != nil {
t.Errorf("Failed %w", err)
}
*/
ctrl := gomock.NewController(t)
defer ctrl.Finish()
sci := mock_storage.NewMockStorageClientInterface(ctrl)
client := storage.NewGSTestClient(sci)
root, err := createTempUploadDir()
if err != nil {
t.Errorf("failed setup, %w", err)
}
rootBucket := storage.GSObject{
Bucket: "some_bucket",
Object: "",
}
sci.EXPECT().Write(gomock.Any(), path.Join(root, "file1"), rootBucket.Extend("file1")).Return(nil)
sci.EXPECT().Write(gomock.Any(), path.Join(root, "file2"), rootBucket.Extend("file2")).Return(nil)
sci.EXPECT().Write(gomock.Any(), path.Join(root, "dir1/dir2/file3"), rootBucket.Extend("dir1/dir2/file3")).Return(nil)
client.Upload(context.Background(), root, "gs://some_bucket")
}
func TestGSUploadOneFile(t *testing.T) {
ctrl := gomock.NewController(t)
defer ctrl.Finish()
sci := mock_storage.NewMockStorageClientInterface(ctrl)
client := storage.NewGSTestClient(sci)
root, err := createTempUploadDir()
if err != nil {
t.Errorf("failed setup, %w", err)
}
rootBucket := storage.GSObject{
Bucket: "some_bucket",
Object: "one_file",
}
sci.EXPECT().Write(gomock.Any(), path.Join(root, "file1"), rootBucket.Extend("file1")).Return(nil)
client.Upload(context.Background(), path.Join(root, "file1"), "gs://some_bucket/one_file")
}
// createTempUploadDir creates fake files to "upload"
func createTempUploadDir() (string, error) {
root, err := ioutil.TempDir("/tmp", "upload_unit_test_dir")
if err != nil {
return "", err
}
_, err = os.Create(path.Join(root, "file1"))
if err != nil {
return "", fmt.Errorf("unable to create first directory, %w", err)
}
_, err = os.Create(path.Join(root, "file2"))
if err != nil {
return "", fmt.Errorf("unable to create second directory, %w", err)
}
if err := os.MkdirAll(path.Join(root, "dir1/dir2"), 0777); err != nil {
return "", fmt.Errorf("unable to create nested folders, %w", err)
}
_, err = os.Create(path.Join(root, "dir1/dir2/file3"))
if err != nil {
return "", fmt.Errorf("unable to create third directory, %w", err)
}
return root, nil
}