@@ -7,12 +7,14 @@ package initializer_test
7
7
import (
8
8
"context"
9
9
"fmt"
10
+ "path/filepath"
10
11
"strings"
11
12
"testing"
12
13
13
14
csapi "github.com/gitpod-io/gitpod/content-service/api"
14
15
"github.com/gitpod-io/gitpod/content-service/pkg/archive"
15
16
"github.com/gitpod-io/gitpod/content-service/pkg/initializer"
17
+ "github.com/google/go-cmp/cmp"
16
18
)
17
19
18
20
type InitializerFunc func (ctx context.Context , mappings []archive.IDMapping ) (csapi.WorkspaceInitSource , error )
@@ -31,7 +33,6 @@ func (f *RecordingInitializer) Run(ctx context.Context, mappings []archive.IDMap
31
33
}
32
34
33
35
func TestGetCheckoutLocationsFromInitializer (t * testing.T ) {
34
-
35
36
var init []* csapi.WorkspaceInitializer
36
37
init = append (init , & csapi.WorkspaceInitializer {
37
38
Spec : & csapi.WorkspaceInitializer_Git {
@@ -93,6 +94,31 @@ func TestGetCheckoutLocationsFromInitializer(t *testing.T) {
93
94
},
94
95
Expectation : "/foo,/bar" ,
95
96
},
97
+ {
98
+ Name : "backup initializer" ,
99
+ Initializer : & csapi.WorkspaceInitializer {
100
+ Spec : & csapi.WorkspaceInitializer_Backup {
101
+ Backup : & csapi.FromBackupInitializer {
102
+ CheckoutLocation : "/foobar" ,
103
+ },
104
+ },
105
+ },
106
+ Expectation : "/foobar" ,
107
+ },
108
+ {
109
+ Name : "prebuild initializer" ,
110
+ Initializer : & csapi.WorkspaceInitializer {
111
+ Spec : & csapi.WorkspaceInitializer_Prebuild {
112
+ Prebuild : & csapi.PrebuildInitializer {
113
+ Git : []* csapi.GitInitializer {
114
+ {CheckoutLocation : "/foo" },
115
+ {CheckoutLocation : "/bar" },
116
+ },
117
+ },
118
+ },
119
+ },
120
+ Expectation : "/foo,/bar" ,
121
+ },
96
122
}
97
123
98
124
for _ , test := range tests {
@@ -103,7 +129,104 @@ func TestGetCheckoutLocationsFromInitializer(t *testing.T) {
103
129
}
104
130
})
105
131
}
132
+ }
133
+
134
+ func TestExtractInjectSecretsFromInitializer (t * testing.T ) {
135
+ tests := []struct {
136
+ Name string
137
+ Input * csapi.WorkspaceInitializer
138
+ Expectation map [string ]string
139
+ }{
140
+ {
141
+ Name : "git initializer" ,
142
+ Input : & csapi.WorkspaceInitializer {
143
+ Spec : & csapi.WorkspaceInitializer_Git {
144
+ Git : & csapi.GitInitializer {
145
+ Config : & csapi.GitConfig {
146
+ AuthPassword : "foobar" ,
147
+ },
148
+ },
149
+ },
150
+ },
151
+ Expectation : map [string ]string {
152
+ "initializer/git" : "foobar" ,
153
+ },
154
+ },
155
+ {
156
+ Name : "no secret git initializer" ,
157
+ Input : & csapi.WorkspaceInitializer {
158
+ Spec : & csapi.WorkspaceInitializer_Git {
159
+ Git : & csapi.GitInitializer {
160
+ Config : & csapi.GitConfig {},
161
+ },
162
+ },
163
+ },
164
+ Expectation : map [string ]string {},
165
+ },
166
+ {
167
+ Name : "prebuild initializer" ,
168
+ Input : & csapi.WorkspaceInitializer {
169
+ Spec : & csapi.WorkspaceInitializer_Prebuild {
170
+ Prebuild : & csapi.PrebuildInitializer {
171
+ Git : []* csapi.GitInitializer {
172
+ {
173
+ Config : & csapi.GitConfig {
174
+ AuthPassword : "foobar" ,
175
+ },
176
+ },
177
+ {
178
+ Config : & csapi.GitConfig {
179
+ AuthPassword : "some value" ,
180
+ },
181
+ },
182
+ },
183
+ },
184
+ },
185
+ },
186
+ Expectation : map [string ]string {
187
+ "initializer/prebuild/0/git" : "foobar" ,
188
+ "initializer/prebuild/1/git" : "some value" ,
189
+ },
190
+ },
191
+ }
106
192
193
+ for _ , test := range tests {
194
+ t .Run (test .Name , func (t * testing.T ) {
195
+ act := initializer .ExtractSecretsFromInitializer (test .Input )
196
+ if diff := cmp .Diff (test .Expectation , act ); diff != "" {
197
+ t .Errorf ("unexpected ExtractSecretsFromInitializer (-want +got):\n %s" , diff )
198
+ }
199
+
200
+ _ = initializer .WalkInitializer (nil , test .Input , func (path []string , init * csapi.WorkspaceInitializer ) error {
201
+ git , ok := init .Spec .(* csapi.WorkspaceInitializer_Git )
202
+ if ! ok {
203
+ return nil
204
+ }
205
+ if pwd := git .Git .Config .AuthPassword ; pwd != "" && ! strings .HasPrefix (pwd , "extracted-secret/" ) {
206
+ t .Errorf ("expected authPassword to be extracted, but got %s at %s" , pwd , filepath .Join (path ... ))
207
+ }
208
+
209
+ return nil
210
+ })
211
+
212
+ err := initializer .InjectSecretsToInitializer (test .Input , act )
213
+ if err != nil {
214
+ t .Fatal (err )
215
+ }
216
+
217
+ _ = initializer .WalkInitializer (nil , test .Input , func (path []string , init * csapi.WorkspaceInitializer ) error {
218
+ git , ok := init .Spec .(* csapi.WorkspaceInitializer_Git )
219
+ if ! ok {
220
+ return nil
221
+ }
222
+ if pwd := git .Git .Config .AuthPassword ; pwd != "" && strings .HasPrefix (pwd , "extracted-secret/" ) {
223
+ t .Errorf ("expected authPassword to be injected, but got %s at %s" , pwd , filepath .Join (path ... ))
224
+ }
225
+
226
+ return nil
227
+ })
228
+ })
229
+ }
107
230
}
108
231
109
232
func TestCompositeInitializer (t * testing.T ) {
0 commit comments