Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
gitpod-io
GitHub Repository: gitpod-io/gitpod
Path: blob/main/components/content-service/pkg/storage/minio_test.go
2501 views
1
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
2
// Licensed under the GNU Affero General Public License (AGPL).
3
// See License.AGPL.txt in the project root for license information.
4
5
package storage
6
7
import (
8
"context"
9
"testing"
10
11
config "github.com/gitpod-io/gitpod/content-service/api/config"
12
)
13
14
func TestMinioBucketName(t *testing.T) {
15
tests := []struct {
16
Name string
17
BucketNameConfig string
18
OwnerID string
19
ExpectedBucket string
20
}{
21
{
22
Name: "no dedicated bucket",
23
BucketNameConfig: "",
24
OwnerID: "fake-owner-id",
25
ExpectedBucket: "gitpod-user-fake-owner-id",
26
},
27
{
28
Name: "with dedicated bucket",
29
BucketNameConfig: "root-bucket",
30
OwnerID: "fake-owner-id",
31
ExpectedBucket: "root-bucket",
32
},
33
}
34
35
for _, test := range tests {
36
t.Run(test.Name, func(t *testing.T) {
37
cfg := config.MinIOConfig{
38
Endpoint: "fake",
39
AccessKeyID: "fake_access_key",
40
SecretAccessKey: "fake_secret",
41
Region: "none",
42
BucketName: test.BucketNameConfig,
43
}
44
minio, err := newDirectMinIOAccess(cfg)
45
if err != nil {
46
t.Fatalf("failed to create minio access: '%v'", err)
47
}
48
49
actualBucketName := minio.Bucket(test.OwnerID)
50
if actualBucketName != test.ExpectedBucket {
51
t.Fatalf("[minio] unexpected bucket name: is '%s' but expected '%s'", actualBucketName, test.ExpectedBucket)
52
}
53
54
presignedMinio, err := newPresignedMinIOAccess(cfg)
55
if err != nil {
56
t.Fatalf("failed to create presigned minio access: '%v'", err)
57
}
58
59
actualBucketName = presignedMinio.Bucket(test.OwnerID)
60
if actualBucketName != test.ExpectedBucket {
61
t.Fatalf("[presigned minio] unexpected bucket name: is '%s' but expected '%s'", actualBucketName, test.ExpectedBucket)
62
}
63
})
64
}
65
}
66
67
func TestMinioBackupObject(t *testing.T) {
68
tests := []struct {
69
Name string
70
BucketNameConfig string
71
Username string
72
Workspace string
73
InstanceID string
74
ObjectName string
75
ExpectedBackupObject string
76
}{
77
{
78
Name: "no dedicated bucket",
79
BucketNameConfig: "",
80
Username: "test-user",
81
Workspace: "gitpodio-gitpod-2cx8z8e643x",
82
InstanceID: "fa9aa2af-b6de-45fc-8b48-534bb440429f",
83
ObjectName: "backup.tar",
84
ExpectedBackupObject: "workspaces/gitpodio-gitpod-2cx8z8e643x/backup.tar",
85
},
86
{
87
Name: "with dedicated bucket",
88
BucketNameConfig: "root-bucket",
89
Username: "test-user",
90
Workspace: "gitpodio-gitpod-2cx8z8e643x",
91
InstanceID: "fa9aa2af-b6de-45fc-8b48-534bb440429f",
92
ObjectName: "backup.tar",
93
ExpectedBackupObject: "test-user/workspaces/gitpodio-gitpod-2cx8z8e643x/backup.tar",
94
},
95
}
96
97
for _, test := range tests {
98
t.Run(test.Name, func(t *testing.T) {
99
cfg := config.MinIOConfig{
100
Endpoint: "fake",
101
AccessKeyID: "fake_access_key",
102
SecretAccessKey: "fake_secret",
103
Region: "none",
104
BucketName: test.BucketNameConfig,
105
}
106
minio, err := newDirectMinIOAccess(cfg)
107
if err != nil {
108
t.Fatalf("failed to create minio access: '%v'", err)
109
}
110
err = minio.Init(context.Background(), test.Username, test.Workspace, test.InstanceID)
111
if err != nil {
112
t.Fatalf("failed to init minio access: '%v'", err)
113
}
114
115
actualBackupObject := minio.BackupObject(test.ObjectName)
116
if actualBackupObject != test.ExpectedBackupObject {
117
t.Fatalf("[minio] unexpected backup object name: is '%s' but expected '%s'", actualBackupObject, test.ExpectedBackupObject)
118
}
119
120
presignedMinio, err := newPresignedMinIOAccess(cfg)
121
if err != nil {
122
t.Fatalf("failed to create presigned minio access: '%v'", err)
123
}
124
125
actualBackupObject = presignedMinio.BackupObject(test.Username, test.Workspace, test.ObjectName)
126
if actualBackupObject != test.ExpectedBackupObject {
127
t.Fatalf("[presigned minio] unexpected backup object name: is '%s' but expected '%s'", actualBackupObject, test.ExpectedBackupObject)
128
}
129
130
})
131
}
132
}
133
134