+package app\r
+\r
+import (\r
+ "fmt"\r
+ "os/user"\r
+ "testing"\r
+\r
+ "github.com/stretchr/testify/mock"\r
+ "github.com/pkg/errors"\r
+\r
+)\r
+\r
+type mockValues struct {\r
+ mock.Mock\r
+}\r
+\r
+func (m *mockValues) GetCurrentUser() (*user.User, error) {\r
+ fmt.Println("Mocked Get User")\r
+ args := m.Called()\r
+\r
+ return args.Get(0).(*user.User), args.Error(1)\r
+}\r
+\r
+func TestGetDirPath(t *testing.T) {\r
+ fakeUser := user.User{}\r
+ u := &fakeUser\r
+\r
+ myMocks := new(mockValues)\r
+\r
+ myMocks.On("GetCurrentUser").Return(&fakeUser, nil)\r
+ myMocks.On("GetPath", u, "", "test_image").Return("", "")\r
+\r
+ imageClient := ImageClient{myMocks, "test_image", "test_meta"}\r
+ _, dir, err := imageClient.GetDirPath("")\r
+ if err != nil {\r
+ t.Errorf("Path was incorrect, got: %q, want: %q.", dir, "some_path")\r
+ }\r
+}\r
+\r
+func (m *mockValues) DBCreate(name string, key ImageKey, meta string, c Image) error{\r
+ fmt.Println("Mocked Create image in Mongo")\r
+ args := m.Called(name, key, meta, c)\r
+\r
+ return args.Error(0)\r
+}\r
+\r
+func (m *mockValues) DBRead(name string, key ImageKey, meta string) ([]byte, error) {\r
+ fmt.Println("Mocked Mongo DB Read Operations")\r
+ args := m.Called(name, key, meta)\r
+\r
+ return args.Get(0).([]byte), args.Error(1)\r
+}\r
+\r
+func (m *mockValues) DBUnmarshal(value []byte, c Image) error {\r
+ fmt.Println("Mocked Mongo DB Unmarshal Operation")\r
+ args := m.Called(value, c)\r
+\r
+ return args.Error(0)\r
+}\r
+\r
+func (m *mockValues) GetPath(u *user.User, imageName string, storeName string) (string, string) {\r
+ args := m.Called(u, "", "test_image")\r
+\r
+ return args.String(0), args.String(1)\r
+}\r
+\r
+func (m *mockValues) OSMakeDir(dirPath string, perm int) error {\r
+ fmt.Println("Mocked OS Create Directory Operation")\r
+ args := m.Called(dirPath, perm)\r
+ \r
+ return args.Error(0)\r
+}\r
+\r
+func (m *mockValues) OSCreateFile(filePath string) error {\r
+ fmt.Println("Mocked Create File Operation")\r
+ args := m.Called(filePath)\r
+\r
+ return args.Error(0)\r
+}\r
+\r
+func (m *mockValues) DBDelete(name string, key ImageKey, meta string) error {\r
+ fmt.Println("Mocked Mongo DB Delete")\r
+ args := m.Called(name, key, meta)\r
+\r
+ return args.Error(0)\r
+\r
+}\r
+\r
+func (m *mockValues) OSRemove(filePath string) error {\r
+ fmt.Println("Mocked OS File Remove")\r
+ args := m.Called(filePath)\r
+\r
+ return args.Error(0)\r
+}\r
+\r
+func (m *mockValues) DBUpdate(s string, k ImageKey, t string, c Image) error {\r
+ fmt.Println("Mocked Mongo DB Update")\r
+ args := m.Called(s, k, t, c)\r
+\r
+ return args.Error(0)\r
+}\r
+\r
+func TestCreate(t *testing.T) {\r
+ image := Image{}\r
+ arr_data := []byte{}\r
+ key := ImageKey{}\r
+ myMocks := new(mockValues)\r
+ // just to get an error value\r
+ err1 := errors.New("math: square root of negative number")\r
+\r
+ fakeUser := user.User{}\r
+ u := &fakeUser\r
+\r
+ myMocks.On("DBCreate", "test_image", key, "test_meta", image).Return(nil)\r
+ myMocks.On("DBRead", "test_image", key, "test_meta").Return(arr_data, err1)\r
+ myMocks.On("DBUnmarshal", arr_data, image).Return(nil)\r
+ myMocks.On("GetCurrentUser").Return(&fakeUser, nil)\r
+ myMocks.On("GetPath", u, "", "test_image").Return("", "")\r
+ myMocks.On("OSMakeDir", "", 0744).Return(nil)\r
+ myMocks.On("OSCreateFile", "").Return(nil)\r
+\r
+ imageClient := ImageClient{myMocks, "test_image", "test_meta"}\r
+ _, err := imageClient.Create(image)\r
+ if err != nil {\r
+ t.Errorf("Some error occured!")\r
+ }\r
+}\r
+\r
+func TestDelete(t *testing.T) {\r
+ key := ImageKey{}\r
+ fakeUser := user.User{}\r
+ u := &fakeUser\r
+\r
+ myMocks := new(mockValues)\r
+\r
+ myMocks.On("DBDelete", "test_image", key, "test_meta").Return(nil)\r
+ myMocks.On("GetCurrentUser").Return(&fakeUser, nil)\r
+ myMocks.On("GetPath", u, "", "test_image").Return("", "")\r
+ myMocks.On("OSRemove", "").Return(nil)\r
+\r
+ imageClient := ImageClient{myMocks, "test_image", "test_meta"}\r
+ err := imageClient.Delete("")\r
+ if err != nil {\r
+ t.Errorf("Some error occured!")\r
+ }\r
+\r
+}\r
+\r
+func TestUpdate(t *testing.T) {\r
+ image := Image{}\r
+ key := ImageKey{}\r
+ arr_data := []byte{} \r
+\r
+ myMocks := new(mockValues)\r
+\r
+ myMocks.On("DBRead", "test_image", key, "test_meta").Return(arr_data, nil)\r
+ myMocks.On("DBUnmarshal", arr_data, image).Return(nil)\r
+ myMocks.On("DBUpdate", "test_image", key, "test_meta", image).Return(nil)\r
+ imageClient := ImageClient{myMocks, "test_image", "test_meta"}\r
+ _, err := imageClient.Update("", image)\r
+ if err != nil {\r
+ t.Errorf("Some error occured!")\r
+ }\r
+}\r