|
8 | 8 | "strings"
|
9 | 9 | "testing"
|
10 | 10 |
|
| 11 | + "github.com/deislabs/duffle/pkg/credentials" |
11 | 12 | "github.com/docker/app/internal"
|
12 | 13 | "github.com/docker/app/internal/yaml"
|
13 | 14 | "gotest.tools/assert"
|
@@ -447,6 +448,90 @@ STATUS
|
447 | 448 | })
|
448 | 449 | }
|
449 | 450 |
|
| 451 | +func TestCredentials(t *testing.T) { |
| 452 | + cmd, cleanup := dockerCli.createTestCmd( |
| 453 | + withCredentialSet(t, "default", &credentials.CredentialSet{ |
| 454 | + Name: "test-creds", |
| 455 | + Credentials: []credentials.CredentialStrategy{ |
| 456 | + { |
| 457 | + Name: "secret1", |
| 458 | + Source: credentials.Source{ |
| 459 | + Value: "secret1value", |
| 460 | + }, |
| 461 | + }, |
| 462 | + { |
| 463 | + Name: "secret2", |
| 464 | + Source: credentials.Source{ |
| 465 | + Value: "secret2value", |
| 466 | + }, |
| 467 | + }, |
| 468 | + }, |
| 469 | + }), |
| 470 | + ) |
| 471 | + defer cleanup() |
| 472 | + |
| 473 | + bundleJSON := golden.Get(t, "credential-install-bundle.json") |
| 474 | + tmpDir := fs.NewDir(t, t.Name(), |
| 475 | + fs.WithFile("bundle.json", "", fs.WithBytes(bundleJSON)), |
| 476 | + ) |
| 477 | + defer tmpDir.Remove() |
| 478 | + |
| 479 | + bundle := tmpDir.Join("bundle.json") |
| 480 | + |
| 481 | + t.Run("missing", func(t *testing.T) { |
| 482 | + cmd.Command = dockerCli.Command( |
| 483 | + "app", "install", |
| 484 | + "--credential", "secret1=foo", |
| 485 | + // secret2 deliberately omitted. |
| 486 | + "--credential", "secret3=baz", |
| 487 | + "--name", "missing", bundle, |
| 488 | + ) |
| 489 | + result := icmd.RunCmd(cmd).Assert(t, icmd.Expected{ |
| 490 | + ExitCode: 1, |
| 491 | + Out: icmd.None, |
| 492 | + }) |
| 493 | + golden.Assert(t, result.Stderr(), "credential-install-missing.golden") |
| 494 | + }) |
| 495 | + |
| 496 | + t.Run("full", func(t *testing.T) { |
| 497 | + cmd.Command = dockerCli.Command( |
| 498 | + "app", "install", |
| 499 | + "--credential", "secret1=foo", |
| 500 | + "--credential", "secret2=bar", |
| 501 | + "--credential", "secret3=baz", |
| 502 | + "--name", "full", bundle, |
| 503 | + ) |
| 504 | + result := icmd.RunCmd(cmd).Assert(t, icmd.Success) |
| 505 | + golden.Assert(t, result.Stdout(), "credential-install-full.golden") |
| 506 | + }) |
| 507 | + |
| 508 | + t.Run("mixed", func(t *testing.T) { |
| 509 | + cmd.Command = dockerCli.Command( |
| 510 | + "app", "install", |
| 511 | + "--credential-set", "test-creds", |
| 512 | + "--credential", "secret3=xyzzy", |
| 513 | + "--name", "mixed", bundle, |
| 514 | + ) |
| 515 | + result := icmd.RunCmd(cmd).Assert(t, icmd.Success) |
| 516 | + golden.Assert(t, result.Stdout(), "credential-install-mixed.golden") |
| 517 | + }) |
| 518 | + |
| 519 | + t.Run("overload", func(t *testing.T) { |
| 520 | + cmd.Command = dockerCli.Command( |
| 521 | + "app", "install", |
| 522 | + "--credential-set", "test-creds", |
| 523 | + "--credential", "secret1=overload", |
| 524 | + "--credential", "secret3=xyzzy", |
| 525 | + "--name", "overload", bundle, |
| 526 | + ) |
| 527 | + result := icmd.RunCmd(cmd).Assert(t, icmd.Expected{ |
| 528 | + ExitCode: 1, |
| 529 | + Out: icmd.None, |
| 530 | + }) |
| 531 | + golden.Assert(t, result.Stderr(), "credential-install-overload.golden") |
| 532 | + }) |
| 533 | +} |
| 534 | + |
450 | 535 | func initializeDockerAppEnvironment(t *testing.T, cmd *icmd.Cmd, tmpDir *fs.Dir, swarm *Container, useBindMount bool) {
|
451 | 536 | cmd.Env = append(cmd.Env, "DOCKER_TARGET_CONTEXT=swarm-target-context")
|
452 | 537 |
|
|
0 commit comments