|
| 1 | +package vagrant |
| 2 | + |
| 3 | +import "testing" |
| 4 | + |
| 5 | +func init() { |
| 6 | + successfulOutput["box add"] = ` |
| 7 | +1631018118,box,ui,output,==> box: Loading metadata for box 'ubuntu/trusty64' |
| 8 | +1631018118,box,ui,detail, box: URL: https://vagrantcloud.com/ubuntu/trusty64 |
| 9 | +1631018119,box,ui,output,==> box: Adding box 'ubuntu/trusty64' (v20190514.0.0) for provider: virtualbox |
| 10 | +1631018119,box,ui,detail, box: Downloading: https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20190514.0.0/providers/virtualbox.box |
| 11 | +1631018119,,ui,detail,Progress: 0% (Rate: 0*/s%!(VAGRANT_COMMA) Estimated time remaining: --:--:--) |
| 12 | +1631018120,,ui,detail,Progress: 100% (Rate: 215/s%!(VAGRANT_COMMA) Estimated time remaining: --:--:--) |
| 13 | +1631018121,,ui,detail,Download redirected to host: cloud-images.ubuntu.com |
| 14 | +1631018121,,ui,detail,Progress: 100% (Rate: 121/s%!(VAGRANT_COMMA) Estimated time remaining: --:--:--) |
| 15 | +1631018121,,ui,detail,Progress: 0% (Rate: 0*/s%!(VAGRANT_COMMA) Estimated time remaining: --:--:--) |
| 16 | +1631018123,,ui,detail,Progress: 1% (Rate: 6429k/s%!(VAGRANT_COMMA) Estimated time remaining: 0:03:05) |
| 17 | +1631018124,,ui,detail,Progress: 8% (Rate: 17.4M/s%!(VAGRANT_COMMA) Estimated time remaining: 0:00:42) |
| 18 | +1631018125,,ui,detail,Progress: 15% (Rate: 21.2M/s%!(VAGRANT_COMMA) Estimated time remaining: 0:00:27) |
| 19 | +1631018126,,ui,detail,Progress: 21% (Rate: 23.5M/s%!(VAGRANT_COMMA) Estimated time remaining: 0:00:21) |
| 20 | +1631018127,,ui,detail,Progress: 28% (Rate: 24.7M/s%!(VAGRANT_COMMA) Estimated time remaining: 0:00:17) |
| 21 | +1631018128,,ui,detail,Progress: 35% (Rate: 29.2M/s%!(VAGRANT_COMMA) Estimated time remaining: 0:00:14) |
| 22 | +1631018129,,ui,detail,Progress: 42% (Rate: 29.2M/s%!(VAGRANT_COMMA) Estimated time remaining: 0:00:12) |
| 23 | +1631018130,,ui,detail,Progress: 49% (Rate: 29.6M/s%!(VAGRANT_COMMA) Estimated time remaining: 0:00:10) |
| 24 | +1631018131,,ui,detail,Progress: 56% (Rate: 29.3M/s%!(VAGRANT_COMMA) Estimated time remaining: 0:00:09) |
| 25 | +1631018132,,ui,detail,Progress: 63% (Rate: 29.5M/s%!(VAGRANT_COMMA) Estimated time remaining: 0:00:07) |
| 26 | +1631018133,,ui,detail,Progress: 67% (Rate: 27.6M/s%!(VAGRANT_COMMA) Estimated time remaining: 0:00:06) |
| 27 | +1631018134,,ui,detail,Progress: 74% (Rate: 27.4M/s%!(VAGRANT_COMMA) Estimated time remaining: 0:00:05) |
| 28 | +1631018135,,ui,detail,Progress: 81% (Rate: 27.4M/s%!(VAGRANT_COMMA) Estimated time remaining: 0:00:04) |
| 29 | +1631018136,,ui,detail,Progress: 88% (Rate: 27.2M/s%!(VAGRANT_COMMA) Estimated time remaining: 0:00:02) |
| 30 | +1631018137,,ui,detail,Progress: 94% (Rate: 27.1M/s%!(VAGRANT_COMMA) Estimated time remaining: 0:00:01) |
| 31 | +1631018138,box,ui,success,==> box: Successfully added box 'ubuntu/trusty64' (v20190514.0.0) for 'virtualbox'! |
| 32 | +` |
| 33 | +} |
| 34 | +func TestBoxAddCommand_buildArguments(t *testing.T) { |
| 35 | + client := newMockVagrantClient() |
| 36 | + |
| 37 | + t.Run("error-on-missing-location", func(t *testing.T) { |
| 38 | + cmd := client.BoxAdd("") |
| 39 | + _, err := cmd.buildArguments() |
| 40 | + assertErr(t, err) |
| 41 | + }) |
| 42 | + t.Run("default", func(t *testing.T) { |
| 43 | + cmd := client.BoxAdd("ubuntu/trusty64") |
| 44 | + args, err := cmd.buildArguments() |
| 45 | + assertNoErr(t, err) |
| 46 | + assertArguments(t, args, "add", "ubuntu/trusty64") |
| 47 | + }) |
| 48 | + t.Run("checksum-type", func(t *testing.T) { |
| 49 | + cmd := client.BoxAdd("ubuntu/trusty64") |
| 50 | + cmd.Checksum = "test" |
| 51 | + cmd.CheckSumType = SHA1 |
| 52 | + args, err := cmd.buildArguments() |
| 53 | + assertNoErr(t, err) |
| 54 | + assertArguments(t, args, "add", "--checksum", "test", "--checksum-type", "sha1", "ubuntu/trusty64") |
| 55 | + }) |
| 56 | + t.Run("checksum", func(t *testing.T) { |
| 57 | + cmd := client.BoxAdd("ubuntu/trusty64") |
| 58 | + cmd.Checksum = "test" |
| 59 | + args, err := cmd.buildArguments() |
| 60 | + assertNoErr(t, err) |
| 61 | + assertArguments(t, args, "add", "--checksum", "test", "ubuntu/trusty64") |
| 62 | + }) |
| 63 | + t.Run("error-on-checksum-type-without-checksum", func(t *testing.T) { |
| 64 | + cmd := client.BoxAdd("ubuntu/trusty64") |
| 65 | + cmd.CheckSumType = SHA1 |
| 66 | + _, err := cmd.buildArguments() |
| 67 | + assertErr(t, err) |
| 68 | + }) |
| 69 | + t.Run("name", func(t *testing.T) { |
| 70 | + cmd := client.BoxAdd("ubuntu/trusty64") |
| 71 | + cmd.Name = "myubuntu" |
| 72 | + args, err := cmd.buildArguments() |
| 73 | + assertNoErr(t, err) |
| 74 | + assertArguments(t, args, "add", "--name", "myubuntu", "ubuntu/trusty64") |
| 75 | + }) |
| 76 | + t.Run("force", func(t *testing.T) { |
| 77 | + cmd := client.BoxAdd("ubuntu/trusty64") |
| 78 | + cmd.Force = true |
| 79 | + args, err := cmd.buildArguments() |
| 80 | + assertNoErr(t, err) |
| 81 | + assertArguments(t, args, "add", "-f", "ubuntu/trusty64") |
| 82 | + }) |
| 83 | + t.Run("clean", func(t *testing.T) { |
| 84 | + cmd := client.BoxAdd("ubuntu/trusty64") |
| 85 | + cmd.Clean = true |
| 86 | + args, err := cmd.buildArguments() |
| 87 | + assertNoErr(t, err) |
| 88 | + assertArguments(t, args, "add", "-c", "ubuntu/trusty64") |
| 89 | + }) |
| 90 | +} |
| 91 | +func TestBoxAddCommand_Run(t *testing.T) { |
| 92 | + client := newMockVagrantClient() |
| 93 | + cmd := client.BoxAdd("ubuntu/trusty64") |
| 94 | + cmd.Env = newEnvTestOutputKey("box add") |
| 95 | + if err := cmd.Run(); err != nil { |
| 96 | + t.Fatalf("Command failed to run: %v", err) |
| 97 | + } |
| 98 | + if cmd.Error != nil { |
| 99 | + t.Fatalf("Command returned error: %v", cmd.Error) |
| 100 | + } |
| 101 | +} |
0 commit comments