diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..4ddbd4902 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +**/.snapshots/** text eol=lf diff --git a/go.mod b/go.mod index e86aba578..513a6bec2 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,7 @@ require ( github.com/UpCloudLtd/upcloud-go-api/v4 v4.8.0 github.com/adrg/xdg v0.3.2 github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d + github.com/bradleyjkemp/cupaloy/v2 v2.7.0 github.com/gemalto/flume v0.12.0 github.com/jedib0t/go-pretty/v6 v6.0.5 github.com/m7shapan/cidr v0.0.0-20200427124835-7eba0889a5d2 diff --git a/go.sum b/go.sum index 21cc535f2..65f089b6a 100644 --- a/go.sum +++ b/go.sum @@ -34,6 +34,8 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/bradleyjkemp/cupaloy/v2 v2.7.0 h1:AT0vOjO68RcLyenLCHOGZzSNiuto7ziqzq6Q1/3xzMQ= +github.com/bradleyjkemp/cupaloy/v2 v2.7.0/go.mod h1:bm7JXdkRd4BHJk9HpwqAI8BoAY1lps46Enkdqw6aRX0= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= diff --git a/internal/commands/server/.snapshots/TestServerHumanOutput b/internal/commands/server/.snapshots/TestServerHumanOutput new file mode 100644 index 000000000..da76c8697 --- /dev/null +++ b/internal/commands/server/.snapshots/TestServerHumanOutput @@ -0,0 +1,45 @@ + + Common + UUID: 0077fa3d-32db-4b09-9f5f-30d9e9afb565 + Hostname: server1.example.com + Title: server1.example.com + Plan: 1xCPU-2GB + Zone: fi-hel1 + State: started + Simple Backup: 0100,dailies + Licence: 0 + Metadata: True + Timezone: UTC + Host ID: 7653311107 + Tags: DEV,Ubuntu + + Storage: (Flags: B = bootdisk, P = part of plan) + + UUID Title Type Address Size (GiB) Flags + ────────────────────────────────────── ───────────────────────────────── ────── ────────── ──────────── ─────── + 012580a1-32a1-466e-a323-689ca16f2d43 Storage for server1.example.com disk virtio:0 20 P + + NICs: (Flags: S = source IP filtering, B = bootable) + + # Type IP Address MAC Address Network Flags + ─── ───────── ──────────────────────────────────────────────────── ─────────────────── ────────────────────────────────────── ─────── + 1 public IPv4: 94.237.0.207 de:ff:ff:ff:66:89 037fcf2a-6745-45dd-867e-f9479ea8c044 + 2 utility IPv4: 10.6.3.95 (f) de:ff:ff:ff:ed:85 03000000-0000-4000-8045-000000000000 + 3 public IPv6: xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx de:ff:ff:ff:cc:20 03c93fd8-cc60-4849-91b8-6e404b228e2a + + Firewall Rules: + + # Direction Action Src IPAddress Dest IPAddress Src Port Dest Port Protocol + ─── ─────────── ──────── ─────────────── ──────────────── ────────── ─────────── ─────────────── + 1 in accept Any Any Any Any IPv4/tcp + 2 out drop 10.10.10.0 → 10.20.20.0 0 → Any IPv4/udp/icmp + 10.10.10.99 1024 + + + Remote Access + Type: vnc + Host: fi-hel1.vnc.upcloud.com + Port: 3000 + Password: aabbccdd + + diff --git a/internal/commands/server/show_test.go b/internal/commands/server/show_test.go index 244d7ce52..89af59d74 100644 --- a/internal/commands/server/show_test.go +++ b/internal/commands/server/show_test.go @@ -7,6 +7,7 @@ import ( "github.com/UpCloudLtd/upcloud-cli/internal/config" smock "github.com/UpCloudLtd/upcloud-cli/internal/mock" "github.com/UpCloudLtd/upcloud-cli/internal/mockexecute" + "github.com/bradleyjkemp/cupaloy/v2" "github.com/UpCloudLtd/upcloud-go-api/v4/upcloud" "github.com/UpCloudLtd/upcloud-go-api/v4/upcloud/request" @@ -148,52 +149,6 @@ func TestServerHumanOutput(t *testing.T) { }, } - expected := ` - Common - UUID: 0077fa3d-32db-4b09-9f5f-30d9e9afb565 - Hostname: server1.example.com - Title: server1.example.com - Plan: 1xCPU-2GB - Zone: fi-hel1 - State: started - Simple Backup: 0100,dailies - Licence: 0 - Metadata: True - Timezone: UTC - Host ID: 7653311107 - Tags: DEV,Ubuntu - - Storage: (Flags: B = bootdisk, P = part of plan) - - UUID Title Type Address Size (GiB) Flags - ────────────────────────────────────── ───────────────────────────────── ────── ────────── ──────────── ─────── - 012580a1-32a1-466e-a323-689ca16f2d43 Storage for server1.example.com disk virtio:0 20 P - - NICs: (Flags: S = source IP filtering, B = bootable) - - # Type IP Address MAC Address Network Flags - ─── ───────── ──────────────────────────────────────────────────── ─────────────────── ────────────────────────────────────── ─────── - 1 public IPv4: 94.237.0.207 de:ff:ff:ff:66:89 037fcf2a-6745-45dd-867e-f9479ea8c044 - 2 utility IPv4: 10.6.3.95 (f) de:ff:ff:ff:ed:85 03000000-0000-4000-8045-000000000000 - 3 public IPv6: xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx de:ff:ff:ff:cc:20 03c93fd8-cc60-4849-91b8-6e404b228e2a - - Firewall Rules: - - # Direction Action Src IPAddress Dest IPAddress Src Port Dest Port Protocol - ─── ─────────── ──────── ─────────────── ──────────────── ────────── ─────────── ─────────────── - 1 in accept Any Any Any Any IPv4/tcp - 2 out drop 10.10.10.0 → 10.20.20.0 0 → Any IPv4/udp/icmp - 10.10.10.99 1024 - - - Remote Access - Type: vnc - Host: fi-hel1.vnc.upcloud.com - Port: 3000 - Password: aabbccdd - -` - mService := smock.Service{} mService.On("GetServers").Return(&upcloud.Servers{Servers: []upcloud.Server{srv.Server}}, nil) mService.On("GetServerDetails", &request.GetServerDetailsRequest{UUID: uuid}).Return(srv, nil) @@ -213,5 +168,5 @@ func TestServerHumanOutput(t *testing.T) { output, err := mockexecute.MockExecute(command, &mService, conf) assert.NoError(t, err) - assert.Equal(t, expected, output) + cupaloy.SnapshotT(t, output) }