Path: blob/main/components/content-service/pkg/storage/minio_test.go
2501 views
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.1// Licensed under the GNU Affero General Public License (AGPL).2// See License.AGPL.txt in the project root for license information.34package storage56import (7"context"8"testing"910config "github.com/gitpod-io/gitpod/content-service/api/config"11)1213func TestMinioBucketName(t *testing.T) {14tests := []struct {15Name string16BucketNameConfig string17OwnerID string18ExpectedBucket string19}{20{21Name: "no dedicated bucket",22BucketNameConfig: "",23OwnerID: "fake-owner-id",24ExpectedBucket: "gitpod-user-fake-owner-id",25},26{27Name: "with dedicated bucket",28BucketNameConfig: "root-bucket",29OwnerID: "fake-owner-id",30ExpectedBucket: "root-bucket",31},32}3334for _, test := range tests {35t.Run(test.Name, func(t *testing.T) {36cfg := config.MinIOConfig{37Endpoint: "fake",38AccessKeyID: "fake_access_key",39SecretAccessKey: "fake_secret",40Region: "none",41BucketName: test.BucketNameConfig,42}43minio, err := newDirectMinIOAccess(cfg)44if err != nil {45t.Fatalf("failed to create minio access: '%v'", err)46}4748actualBucketName := minio.Bucket(test.OwnerID)49if actualBucketName != test.ExpectedBucket {50t.Fatalf("[minio] unexpected bucket name: is '%s' but expected '%s'", actualBucketName, test.ExpectedBucket)51}5253presignedMinio, err := newPresignedMinIOAccess(cfg)54if err != nil {55t.Fatalf("failed to create presigned minio access: '%v'", err)56}5758actualBucketName = presignedMinio.Bucket(test.OwnerID)59if actualBucketName != test.ExpectedBucket {60t.Fatalf("[presigned minio] unexpected bucket name: is '%s' but expected '%s'", actualBucketName, test.ExpectedBucket)61}62})63}64}6566func TestMinioBackupObject(t *testing.T) {67tests := []struct {68Name string69BucketNameConfig string70Username string71Workspace string72InstanceID string73ObjectName string74ExpectedBackupObject string75}{76{77Name: "no dedicated bucket",78BucketNameConfig: "",79Username: "test-user",80Workspace: "gitpodio-gitpod-2cx8z8e643x",81InstanceID: "fa9aa2af-b6de-45fc-8b48-534bb440429f",82ObjectName: "backup.tar",83ExpectedBackupObject: "workspaces/gitpodio-gitpod-2cx8z8e643x/backup.tar",84},85{86Name: "with dedicated bucket",87BucketNameConfig: "root-bucket",88Username: "test-user",89Workspace: "gitpodio-gitpod-2cx8z8e643x",90InstanceID: "fa9aa2af-b6de-45fc-8b48-534bb440429f",91ObjectName: "backup.tar",92ExpectedBackupObject: "test-user/workspaces/gitpodio-gitpod-2cx8z8e643x/backup.tar",93},94}9596for _, test := range tests {97t.Run(test.Name, func(t *testing.T) {98cfg := config.MinIOConfig{99Endpoint: "fake",100AccessKeyID: "fake_access_key",101SecretAccessKey: "fake_secret",102Region: "none",103BucketName: test.BucketNameConfig,104}105minio, err := newDirectMinIOAccess(cfg)106if err != nil {107t.Fatalf("failed to create minio access: '%v'", err)108}109err = minio.Init(context.Background(), test.Username, test.Workspace, test.InstanceID)110if err != nil {111t.Fatalf("failed to init minio access: '%v'", err)112}113114actualBackupObject := minio.BackupObject(test.ObjectName)115if actualBackupObject != test.ExpectedBackupObject {116t.Fatalf("[minio] unexpected backup object name: is '%s' but expected '%s'", actualBackupObject, test.ExpectedBackupObject)117}118119presignedMinio, err := newPresignedMinIOAccess(cfg)120if err != nil {121t.Fatalf("failed to create presigned minio access: '%v'", err)122}123124actualBackupObject = presignedMinio.BackupObject(test.Username, test.Workspace, test.ObjectName)125if actualBackupObject != test.ExpectedBackupObject {126t.Fatalf("[presigned minio] unexpected backup object name: is '%s' but expected '%s'", actualBackupObject, test.ExpectedBackupObject)127}128129})130}131}132133134