Skip to content

Commit

Permalink
NFV-23345: introduce get file by uuid API for new file resource and a…
Browse files Browse the repository at this point in the history
…dd more test cases (equinix#19)
  • Loading branch information
rling-equinix authored Feb 9, 2023
1 parent 495d265 commit a006e59
Show file tree
Hide file tree
Showing 5 changed files with 82 additions and 0 deletions.
11 changes: 11 additions & 0 deletions client.go
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ type Client interface {

UploadLicenseFile(metroCode, deviceTypeCode, deviceManagementMode, licenseMode, fileName string, reader io.Reader) (*string, error)
UploadFile(metroCode, deviceTypeCode, processType, deviceManagementMode, licenseMode, fileName string, reader io.Reader) (*string, error)
GetFile(uuid string) (*File, error)

GetDeviceLinkGroups() ([]DeviceLinkGroup, error)
GetDeviceLinkGroup(uuid string) (*DeviceLinkGroup, error)
Expand Down Expand Up @@ -458,3 +459,13 @@ type ClusterNode struct { // Deprecated: Use ClusterNodeDetail instead
AdminPassword *string
VendorConfiguration map[string]string
}

//File describes Network Edge uploaded file
type File struct {
UUID *string
FileName *string
MetroCode *string
DeviceTypeCode *string
ProcessType *string
Status *string
}
10 changes: 10 additions & 0 deletions internal/api/file.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
package api

//File describes Network Edge uploaded file
type File struct {
UUID *string `json:"uuid,omitempty"`
FileName *string `json:"fileName,omitempty"`
MetroCode *string `json:"metroCode,omitempty"`
DeviceTypeCode *string `json:"deviceTypeCode,omitempty"`
ProcessType *string `json:"processType,omitempty"`
Status *string `json:"status,omitempty"`
}

//FileUploadResponse describes response to file upload request
type FileUploadResponse struct {
FileUUID *string `json:"fileUuid,omitempty"`
Expand Down
24 changes: 24 additions & 0 deletions rest_file.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"github.com/equinix/ne-go/internal/api"
"io"
"net/http"
"net/url"
)

const (
Expand Down Expand Up @@ -34,3 +35,26 @@ func (c RestClient) UploadFile(metroCode, deviceTypeCode, processType, deviceMan
}
return respBody.FileUUID, nil
}

//GetFile retrieves file metadata with a given UUID
func (c RestClient) GetFile(uuid string) (*File, error) {
path := "/ne/v1/files/" + url.PathEscape(uuid)
respBody := api.File{}
req := c.R().SetResult(&respBody)
if err := c.Execute(req, http.MethodGet, path); err != nil {
return nil, err
}
file := mapFileAPIToDomain(respBody)
return &file, nil
}

func mapFileAPIToDomain(apiFile api.File) File {
return File{
UUID: apiFile.UUID,
FileName: apiFile.FileName,
MetroCode: apiFile.MetroCode,
DeviceTypeCode: apiFile.DeviceTypeCode,
ProcessType: apiFile.ProcessType,
Status: apiFile.Status,
}
}
29 changes: 29 additions & 0 deletions rest_file_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,32 @@ func TestUploadFile(t *testing.T) {
assert.Nil(t, err, "Error is not returned")
assert.Equal(t, resp.FileUUID, id, "File identifier matches")
}

func TestGetFile(t *testing.T) {
//given
resp := api.File{}
if err := readJSONData("./test-fixtures/ne_file_get_resp.json", &resp); err != nil {
assert.Fail(t, "Cannot read test response")
}
fileID := "26728391-2706-4135-87f2-19822bcb4721"
testHc := setupMockedClient("GET", fmt.Sprintf("%s/ne/v1/files/%s", baseURL, fileID), 200, resp)
defer httpmock.DeactivateAndReset()

//when
c := NewClient(context.Background(), baseURL, testHc)
file, err := c.GetFile(fileID)

//then
assert.NotNil(t, file, "Returned file is not nil")
assert.Nil(t, err, "Error is not returned")
verifyFile(t, resp, *file)
}

func verifyFile(t *testing.T, apiFile api.File, file File) {
assert.Equal(t, apiFile.UUID, file.UUID, "UUID matches")
assert.Equal(t, apiFile.FileName, file.FileName, "FileName matches")
assert.Equal(t, apiFile.MetroCode, file.MetroCode, "MetroCode matches")
assert.Equal(t, apiFile.DeviceTypeCode, file.DeviceTypeCode, "DeviceTypeCode matches")
assert.Equal(t, apiFile.ProcessType, file.ProcessType, "ProcessType matches")
assert.Equal(t, apiFile.Status, file.Status, "Status matches")
}
8 changes: 8 additions & 0 deletions test-fixtures/ne_file_get_resp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"uuid": "26728391-2706-4135-87f2-19822bcb4721",
"fileName": "test",
"metroCode": "SV",
"deviceTypeCode": "AVIATRIX_EDGE",
"processType": "CLOUD_INIT",
"status": "UPLOADED"
}

0 comments on commit a006e59

Please sign in to comment.