|
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"
|
@@ -421,6 +422,90 @@ STATUS
|
421 | 422 | })
|
422 | 423 | }
|
423 | 424 |
|
| 425 | +func TestCredentials(t *testing.T) { |
| 426 | + cmd, cleanup := dockerCli.createTestCmd( |
| 427 | + withCredentialSet(t, "default", &credentials.CredentialSet{ |
| 428 | + Name: "test-creds", |
| 429 | + Credentials: []credentials.CredentialStrategy{ |
| 430 | + { |
| 431 | + Name: "secret1", |
| 432 | + Source: credentials.Source{ |
| 433 | + Value: "secret1value", |
| 434 | + }, |
| 435 | + }, |
| 436 | + { |
| 437 | + Name: "secret2", |
| 438 | + Source: credentials.Source{ |
| 439 | + Value: "secret2value", |
| 440 | + }, |
| 441 | + }, |
| 442 | + }, |
| 443 | + }), |
| 444 | + ) |
| 445 | + defer cleanup() |
| 446 | + |
| 447 | + bundleJSON := golden.Get(t, "credential-install-bundle.json") |
| 448 | + tmpDir := fs.NewDir(t, t.Name(), |
| 449 | + fs.WithFile("bundle.json", "", fs.WithBytes(bundleJSON)), |
| 450 | + ) |
| 451 | + defer tmpDir.Remove() |
| 452 | + |
| 453 | + bundle := tmpDir.Join("bundle.json") |
| 454 | + |
| 455 | + t.Run("missing", func(t *testing.T) { |
| 456 | + cmd.Command = dockerCli.Command( |
| 457 | + "app", "install", |
| 458 | + "--credential", "secret1=foo", |
| 459 | + // secret2 deliberately omitted. |
| 460 | + "--credential", "secret3=baz", |
| 461 | + "--name", "missing", bundle, |
| 462 | + ) |
| 463 | + result := icmd.RunCmd(cmd).Assert(t, icmd.Expected{ |
| 464 | + ExitCode: 1, |
| 465 | + Out: icmd.None, |
| 466 | + }) |
| 467 | + golden.Assert(t, result.Stderr(), "credential-install-missing.golden") |
| 468 | + }) |
| 469 | + |
| 470 | + t.Run("full", func(t *testing.T) { |
| 471 | + cmd.Command = dockerCli.Command( |
| 472 | + "app", "install", |
| 473 | + "--credential", "secret1=foo", |
| 474 | + "--credential", "secret2=bar", |
| 475 | + "--credential", "secret3=baz", |
| 476 | + "--name", "full", bundle, |
| 477 | + ) |
| 478 | + result := icmd.RunCmd(cmd).Assert(t, icmd.Success) |
| 479 | + golden.Assert(t, result.Stdout(), "credential-install-full.golden") |
| 480 | + }) |
| 481 | + |
| 482 | + t.Run("mixed", func(t *testing.T) { |
| 483 | + cmd.Command = dockerCli.Command( |
| 484 | + "app", "install", |
| 485 | + "--credential-set", "test-creds", |
| 486 | + "--credential", "secret3=xyzzy", |
| 487 | + "--name", "mixed", bundle, |
| 488 | + ) |
| 489 | + result := icmd.RunCmd(cmd).Assert(t, icmd.Success) |
| 490 | + golden.Assert(t, result.Stdout(), "credential-install-mixed.golden") |
| 491 | + }) |
| 492 | + |
| 493 | + t.Run("overload", func(t *testing.T) { |
| 494 | + cmd.Command = dockerCli.Command( |
| 495 | + "app", "install", |
| 496 | + "--credential-set", "test-creds", |
| 497 | + "--credential", "secret1=overload", |
| 498 | + "--credential", "secret3=xyzzy", |
| 499 | + "--name", "overload", bundle, |
| 500 | + ) |
| 501 | + result := icmd.RunCmd(cmd).Assert(t, icmd.Expected{ |
| 502 | + ExitCode: 1, |
| 503 | + Out: icmd.None, |
| 504 | + }) |
| 505 | + golden.Assert(t, result.Stderr(), "credential-install-overload.golden") |
| 506 | + }) |
| 507 | +} |
| 508 | + |
424 | 509 | func initializeDockerAppEnvironment(t *testing.T, cmd *icmd.Cmd, tmpDir *fs.Dir, swarm *Container, useBindMount bool) {
|
425 | 510 | cmd.Env = append(cmd.Env, "DOCKER_TARGET_CONTEXT=swarm-target-context")
|
426 | 511 |
|
|
0 commit comments