// Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). You may not // use this file except in compliance with the License. A copy of the // License is located at // // http://aws.amazon.com/apache2.0/ // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or // implied. See the License for the specific language governing // permissions and limitations under the License. // Package system have all the file related dependencies used by the copy package package system import ( "errors" "fmt" "testing" filemock "github.com/aws/amazon-ssm-agent/agent/fileutil/filemanager/mock" "github.com/aws/amazon-ssm-agent/agent/mocks/log" "github.com/stretchr/testify/assert" ) var logMock = log.NewMockLog() func TestSaveFileContent_MakeDirFail(t *testing.T) { fileMock := &filemock.FileSystemMock{} destination := "destinationDir/file.ps" contents := "contents" //resourcePath := "resourcePath" fileMock.On("MakeDirs", "destinationDir").Return(fmt.Errorf("failed to create directory ")) err := SaveFileContent(logMock, fileMock, destination, contents) assert.Error(t, err, "Must return error") } func TestSaveFileContent_WriteFileFail(t *testing.T) { fileMock := &filemock.FileSystemMock{} destinationDir := "destinationDir/filepath.ps" contents := "contents" //resourcePath := "resourcePath" fileMock.On("MakeDirs", "destinationDir").Return(nil).Once() fileMock.On("WriteFile", destinationDir, contents).Return(fmt.Errorf("failed to create directory ")) err := SaveFileContent(logMock, fileMock, destinationDir, contents) assert.Error(t, err, "Must return error") } func TestSaveFileContent_Pass(t *testing.T) { fileMock := &filemock.FileSystemMock{} destination := "destinationDir/filename.py" contents := "contents" //resourcePath := "resourcePath" fileMock.On("MakeDirs", "destinationDir").Return(nil).Once() fileMock.On("WriteFile", destination, contents).Return(nil).Once() err := SaveFileContent(logMock, fileMock, destination, contents) assert.NoError(t, err) } func TestRenameFile(t *testing.T) { fileMock := &filemock.FileSystemMock{} sourceName := "destination/oldFileName.ext" newFileName := "newFileName.ext" fileMock.On("MoveAndRenameFile", "destination", "oldFileName.ext", "destination", "newFileName.ext").Return(true, nil) err := RenameFile(logMock, fileMock, sourceName, newFileName) assert.NoError(t, err) fileMock.AssertExpectations(t) } func TestRenameFile_Error(t *testing.T) { fileMock := &filemock.FileSystemMock{} sourceName := "destination/oldFileName.ext" newFileName := "newFileName.ext" fileMock.On("MoveAndRenameFile", "destination", "oldFileName.ext", "destination", "newFileName.ext").Return(true, errors.New("There was an error")) err := RenameFile(logMock, fileMock, sourceName, newFileName) assert.Error(t, err) assert.Equal(t, "There was an error", err.Error()) fileMock.AssertExpectations(t) }