1package container // import "github.com/docker/docker/integration/container"
2
3import (
4	"context"
5	"fmt"
6	"testing"
7
8	"github.com/docker/docker/api/types"
9	"github.com/docker/docker/client"
10	"github.com/docker/docker/integration/internal/container"
11	"gotest.tools/assert"
12	is "gotest.tools/assert/cmp"
13	"gotest.tools/skip"
14)
15
16func TestCopyFromContainerPathDoesNotExist(t *testing.T) {
17	defer setupTest(t)()
18
19	ctx := context.Background()
20	apiclient := testEnv.APIClient()
21	cid := container.Create(t, ctx, apiclient)
22
23	_, _, err := apiclient.CopyFromContainer(ctx, cid, "/dne")
24	assert.Check(t, client.IsErrNotFound(err))
25	expected := fmt.Sprintf("No such container:path: %s:%s", cid, "/dne")
26	assert.Check(t, is.ErrorContains(err, expected))
27}
28
29func TestCopyFromContainerPathIsNotDir(t *testing.T) {
30	defer setupTest(t)()
31	skip.If(t, testEnv.OSType == "windows")
32
33	ctx := context.Background()
34	apiclient := testEnv.APIClient()
35	cid := container.Create(t, ctx, apiclient)
36
37	_, _, err := apiclient.CopyFromContainer(ctx, cid, "/etc/passwd/")
38	assert.Assert(t, is.ErrorContains(err, "not a directory"))
39}
40
41func TestCopyToContainerPathDoesNotExist(t *testing.T) {
42	defer setupTest(t)()
43	skip.If(t, testEnv.OSType == "windows")
44
45	ctx := context.Background()
46	apiclient := testEnv.APIClient()
47	cid := container.Create(t, ctx, apiclient)
48
49	err := apiclient.CopyToContainer(ctx, cid, "/dne", nil, types.CopyToContainerOptions{})
50	assert.Check(t, client.IsErrNotFound(err))
51	expected := fmt.Sprintf("No such container:path: %s:%s", cid, "/dne")
52	assert.Check(t, is.ErrorContains(err, expected))
53}
54
55func TestCopyToContainerPathIsNotDir(t *testing.T) {
56	defer setupTest(t)()
57	skip.If(t, testEnv.OSType == "windows")
58
59	ctx := context.Background()
60	apiclient := testEnv.APIClient()
61	cid := container.Create(t, ctx, apiclient)
62
63	err := apiclient.CopyToContainer(ctx, cid, "/etc/passwd/", nil, types.CopyToContainerOptions{})
64	assert.Assert(t, is.ErrorContains(err, "not a directory"))
65}
66