1package vps 2 3import ( 4 "github.com/stretchr/testify/assert" 5 "github.com/stretchr/testify/require" 6 "github.com/transip/gotransip/v6" 7 "testing" 8) 9 10func TestPrivateNetworkRepository_GetPrivateNetworks(t *testing.T) { 11 const apiResponse = `{ "privateNetworks": [ { "name": "example-privatenetwork", "description": "FilesharingNetwork", "isBlocked": false, "isLocked": false, "vpsNames": [ "example-vps", "example-vps2" ] } ] } ` 12 server := mockServer{t: t, expectedURL: "/private-networks", expectedMethod: "GET", statusCode: 200, response: apiResponse} 13 client, tearDown := server.getClient() 14 defer tearDown() 15 repo := PrivateNetworkRepository{Client: *client} 16 17 all, err := repo.GetAll() 18 require.NoError(t, err) 19 require.Equal(t, 1, len(all)) 20 21 assert.Equal(t, "example-privatenetwork", all[0].Name) 22 assert.Equal(t, "FilesharingNetwork", all[0].Description) 23 assert.Equal(t, false, all[0].IsBlocked) 24 assert.Equal(t, false, all[0].IsLocked) 25 26 assert.Equal(t, []string{"example-vps", "example-vps2"}, all[0].VpsNames) 27} 28 29func TestPrivateNetworkRepository_GetSelection(t *testing.T) { 30 const apiResponse = `{ "privateNetworks": [ { "name": "example-privatenetwork", "description": "FilesharingNetwork", "isBlocked": false, "isLocked": false, "vpsNames": [ "example-vps", "example-vps2" ] } ] } ` 31 server := mockServer{t: t, expectedURL: "/private-networks?page=1&pageSize=25", expectedMethod: "GET", statusCode: 200, response: apiResponse} 32 client, tearDown := server.getClient() 33 defer tearDown() 34 repo := PrivateNetworkRepository{Client: *client} 35 36 all, err := repo.GetSelection(1, 25) 37 require.NoError(t, err) 38 require.Equal(t, 1, len(all)) 39 40 assert.Equal(t, "example-privatenetwork", all[0].Name) 41 assert.Equal(t, "FilesharingNetwork", all[0].Description) 42 assert.Equal(t, false, all[0].IsBlocked) 43 assert.Equal(t, false, all[0].IsLocked) 44 45 assert.Equal(t, []string{"example-vps", "example-vps2"}, all[0].VpsNames) 46} 47 48func TestPrivateNetworkRepository_GetPrivateNetworkByName(t *testing.T) { 49 const apiResponse = `{ "privateNetwork": { "name": "example-privatenetwork", "description": "FilesharingNetwork", "isBlocked": false, "isLocked": false, "vpsNames": [ "example-vps", "example-vps2" ] } } ` 50 server := mockServer{t: t, expectedURL: "/private-networks/example-privatenetwork", expectedMethod: "GET", statusCode: 200, response: apiResponse} 51 client, tearDown := server.getClient() 52 defer tearDown() 53 repo := PrivateNetworkRepository{Client: *client} 54 55 privateNetwork, err := repo.GetByName("example-privatenetwork") 56 require.NoError(t, err) 57 assert.Equal(t, "example-privatenetwork", privateNetwork.Name) 58 assert.Equal(t, "FilesharingNetwork", privateNetwork.Description) 59 assert.Equal(t, false, privateNetwork.IsBlocked) 60 assert.Equal(t, false, privateNetwork.IsLocked) 61 62 assert.Equal(t, []string{"example-vps", "example-vps2"}, privateNetwork.VpsNames) 63} 64 65func TestPrivateNetworkRepository_OrderPrivateNetwork(t *testing.T) { 66 const expectedRequest = `{"description":"test123"}` 67 server := mockServer{t: t, expectedURL: "/private-networks", expectedMethod: "POST", statusCode: 201, expectedRequest: expectedRequest} 68 client, tearDown := server.getClient() 69 defer tearDown() 70 repo := PrivateNetworkRepository{Client: *client} 71 72 err := repo.Order("test123") 73 require.NoError(t, err) 74} 75 76func TestPrivateNetworkRepository_UpdatePrivateNetwork(t *testing.T) { 77 const expectedRequest = `{"privateNetwork":{"name":"example-privatenetwork","description":"einnetwork","isBlocked":false,"isLocked":false,"vpsNames":["example-vps","example-vps2"]}}` 78 server := mockServer{t: t, expectedURL: "/private-networks/example-privatenetwork", expectedMethod: "PUT", statusCode: 204, expectedRequest: expectedRequest} 79 client, tearDown := server.getClient() 80 defer tearDown() 81 repo := PrivateNetworkRepository{Client: *client} 82 83 privateNetwork := PrivateNetwork{ 84 Name: "example-privatenetwork", 85 Description: "einnetwork", 86 IsBlocked: false, 87 IsLocked: false, 88 VpsNames: []string{"example-vps", "example-vps2"}, 89 } 90 91 err := repo.Update(privateNetwork) 92 require.NoError(t, err) 93} 94 95func TestPrivateNetworkRepository_AttachVpsToPrivateNetwork(t *testing.T) { 96 const expectedRequest = `{"action":"attachvps","vpsName":"example-vps"}` 97 server := mockServer{t: t, expectedURL: "/private-networks/example-privatenetwork", expectedMethod: "PATCH", statusCode: 204, expectedRequest: expectedRequest} 98 client, tearDown := server.getClient() 99 defer tearDown() 100 repo := PrivateNetworkRepository{Client: *client} 101 102 err := repo.AttachVps("example-vps", "example-privatenetwork") 103 require.NoError(t, err) 104} 105 106func TestPrivateNetworkRepository_DetachVpsFromPrivateNetwork(t *testing.T) { 107 const expectedRequest = `{"action":"detachvps","vpsName":"example-vps"}` 108 server := mockServer{t: t, expectedURL: "/private-networks/example-privatenetwork", expectedMethod: "PATCH", statusCode: 204, expectedRequest: expectedRequest} 109 client, tearDown := server.getClient() 110 defer tearDown() 111 repo := PrivateNetworkRepository{Client: *client} 112 113 err := repo.DetachVps("example-vps", "example-privatenetwork") 114 require.NoError(t, err) 115} 116 117func TestPrivateNetworkRepository_CancelPrivateNetwork(t *testing.T) { 118 const expectedRequest = `{"endTime":"end"}` 119 server := mockServer{t: t, expectedURL: "/private-networks/example-privatenetwork", expectedMethod: "DELETE", statusCode: 204, expectedRequest: expectedRequest} 120 client, tearDown := server.getClient() 121 defer tearDown() 122 repo := PrivateNetworkRepository{Client: *client} 123 124 err := repo.Cancel("example-privatenetwork", gotransip.CancellationTimeEnd) 125 require.NoError(t, err) 126} 127