Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit b028db4

Browse files
committed
test with too large of a tar
1 parent 00a6e92 commit b028db4

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

provisionerd/provisionerd_test.go

+41
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,47 @@ func TestProvisionerd(t *testing.T) {
178178
require.NoError(t, closer.Close())
179179
})
180180

181+
t.Run("TooLargeTar", func(t *testing.T) {
182+
// Ensures tars with "../../../etc/passwd" as the path
183+
// are not allowed to run, and will fail the job.
184+
t.Parallel()
185+
done := make(chan struct{})
186+
t.Cleanup(func() {
187+
close(done)
188+
})
189+
var (
190+
completeChan = make(chan struct{})
191+
completeOnce sync.Once
192+
acq = newAcquireOne(t, &proto.AcquiredJob{
193+
JobId: "test",
194+
Provisioner: "someprovisioner",
195+
TemplateSourceArchive: testutil.CreateTar(t, map[string]string{
196+
"toolarge.txt": string(make([]byte, 10*1024*1024)),
197+
}),
198+
Type: &proto.AcquiredJob_TemplateImport_{
199+
TemplateImport: &proto.AcquiredJob_TemplateImport{
200+
Metadata: &sdkproto.Metadata{},
201+
},
202+
},
203+
})
204+
)
205+
206+
closer := createProvisionerd(t, func(ctx context.Context) (proto.DRPCProvisionerDaemonClient, error) {
207+
return createProvisionerDaemonClient(t, done, provisionerDaemonTestServer{
208+
acquireJobWithCancel: acq.acquireWithCancel,
209+
updateJob: noopUpdateJob,
210+
failJob: func(ctx context.Context, job *proto.FailedJob) (*proto.Empty, error) {
211+
completeOnce.Do(func() { close(completeChan) })
212+
return &proto.Empty{}, nil
213+
},
214+
}), nil
215+
}, provisionerd.LocalProvisioners{
216+
"someprovisioner": createProvisionerClient(t, done, provisionerTestServer{}),
217+
})
218+
require.Condition(t, closedWithin(completeChan, testutil.WaitMedium))
219+
require.NoError(t, closer.Close())
220+
})
221+
181222
t.Run("RunningPeriodicUpdate", func(t *testing.T) {
182223
t.Parallel()
183224
done := make(chan struct{})

0 commit comments

Comments
 (0)