f90a5b31c1914577e413bdc1a04077bec1c5c683
[icn.git] / cmd / bpa-restapi-agent / internal / app / image_test.go
1 package app\r
2 \r
3 import (\r
4   "fmt"\r
5   "os/user"\r
6   "testing"\r
7 \r
8   "github.com/stretchr/testify/mock"\r
9   "github.com/pkg/errors"\r
10 \r
11 )\r
12 \r
13 type mockValues struct {\r
14   mock.Mock\r
15 }\r
16 \r
17 func (m *mockValues) GetCurrentUser() (*user.User, error) {\r
18   fmt.Println("Mocked Get User")\r
19   args := m.Called()\r
20 \r
21   return args.Get(0).(*user.User), args.Error(1)\r
22 }\r
23 \r
24 func TestGetDirPath(t *testing.T) {\r
25   fakeUser := user.User{}\r
26   u := &fakeUser\r
27 \r
28   myMocks := new(mockValues)\r
29 \r
30   myMocks.On("GetCurrentUser").Return(&fakeUser, nil)\r
31   myMocks.On("GetPath", u, "", "test_image").Return("", "")\r
32 \r
33   imageClient := ImageClient{myMocks, "test_image", "test_meta"}\r
34   _, dir, err := imageClient.GetDirPath("")\r
35   if err != nil {\r
36     t.Errorf("Path was incorrect, got: %q, want: %q.", dir, "some_path")\r
37   }\r
38 }\r
39 \r
40 func (m *mockValues) DBCreate(name string, key ImageKey, meta string, c Image) error{\r
41     fmt.Println("Mocked Create image in Mongo")\r
42     args := m.Called(name, key, meta, c)\r
43 \r
44     return args.Error(0)\r
45 }\r
46 \r
47 func (m *mockValues) DBRead(name string, key ImageKey, meta string) ([]byte, error) {\r
48     fmt.Println("Mocked Mongo DB Read Operations")\r
49     args := m.Called(name, key, meta)\r
50 \r
51     return args.Get(0).([]byte), args.Error(1)\r
52 }\r
53 \r
54 func (m *mockValues) DBUnmarshal(value []byte, c Image) error {\r
55     fmt.Println("Mocked Mongo DB Unmarshal Operation")\r
56     args := m.Called(value, c)\r
57 \r
58     return args.Error(0)\r
59 }\r
60 \r
61 func (m *mockValues) GetPath(u *user.User, imageName string, storeName string) (string, string) {\r
62     args := m.Called(u, "", "test_image")\r
63 \r
64     return args.String(0), args.String(1)\r
65 }\r
66 \r
67 func (m *mockValues) OSMakeDir(dirPath string, perm int) error {\r
68     fmt.Println("Mocked OS Create Directory Operation")\r
69     args := m.Called(dirPath, perm)\r
70     \r
71     return args.Error(0)\r
72 }\r
73 \r
74 func (m *mockValues) OSCreateFile(filePath string) error {\r
75     fmt.Println("Mocked Create File Operation")\r
76     args := m.Called(filePath)\r
77 \r
78     return args.Error(0)\r
79 }\r
80 \r
81 func (m *mockValues) DBDelete(name string, key ImageKey, meta string) error {\r
82     fmt.Println("Mocked Mongo DB Delete")\r
83     args := m.Called(name, key, meta)\r
84 \r
85     return args.Error(0)\r
86 \r
87 }\r
88 \r
89 func (m *mockValues) OSRemove(filePath string) error {\r
90     fmt.Println("Mocked OS File Remove")\r
91     args := m.Called(filePath)\r
92 \r
93     return args.Error(0)\r
94 }\r
95 \r
96 func (m *mockValues) DBUpdate(s string, k ImageKey, t string, c Image) error {\r
97     fmt.Println("Mocked Mongo DB Update")\r
98     args := m.Called(s, k, t, c)\r
99 \r
100     return args.Error(0)\r
101 }\r
102 \r
103 func TestCreate(t *testing.T) {\r
104     image := Image{}\r
105     arr_data := []byte{}\r
106     key := ImageKey{}\r
107     myMocks := new(mockValues)\r
108     // just to get an error value\r
109     err1 := errors.New("math: square root of negative number")\r
110 \r
111     fakeUser := user.User{}\r
112     u := &fakeUser\r
113 \r
114     myMocks.On("DBCreate", "test_image", key, "test_meta", image).Return(nil)\r
115     myMocks.On("DBRead", "test_image", key, "test_meta").Return(arr_data, err1)\r
116     myMocks.On("DBUnmarshal", arr_data, image).Return(nil)\r
117     myMocks.On("GetCurrentUser").Return(&fakeUser, nil)\r
118     myMocks.On("GetPath", u, "", "test_image").Return("", "")\r
119     myMocks.On("OSMakeDir", "", 0744).Return(nil)\r
120     myMocks.On("OSCreateFile", "").Return(nil)\r
121 \r
122     imageClient := ImageClient{myMocks, "test_image", "test_meta"}\r
123     _, err := imageClient.Create(image)\r
124     if err != nil {\r
125         t.Errorf("Some error occured!")\r
126     }\r
127 }\r
128 \r
129 func TestDelete(t *testing.T) {\r
130     key := ImageKey{}\r
131     fakeUser := user.User{}\r
132     u := &fakeUser\r
133 \r
134     myMocks := new(mockValues)\r
135 \r
136     myMocks.On("DBDelete", "test_image", key, "test_meta").Return(nil)\r
137     myMocks.On("GetCurrentUser").Return(&fakeUser, nil)\r
138     myMocks.On("GetPath", u, "", "test_image").Return("", "")\r
139     myMocks.On("OSRemove", "").Return(nil)\r
140 \r
141     imageClient := ImageClient{myMocks, "test_image", "test_meta"}\r
142     err := imageClient.Delete("")\r
143     if err != nil {\r
144         t.Errorf("Some error occured!")\r
145     }\r
146 \r
147 }\r
148 \r
149 func TestUpdate(t *testing.T) {\r
150     image := Image{}\r
151     key := ImageKey{}\r
152     arr_data := []byte{} \r
153 \r
154     myMocks := new(mockValues)\r
155 \r
156     myMocks.On("DBRead", "test_image", key, "test_meta").Return(arr_data, nil)\r
157     myMocks.On("DBUnmarshal", arr_data, image).Return(nil)\r
158     myMocks.On("DBUpdate", "test_image", key, "test_meta", image).Return(nil)\r
159     imageClient := ImageClient{myMocks, "test_image", "test_meta"}\r
160     _, err := imageClient.Update("", image)\r
161     if err != nil {\r
162         t.Errorf("Some error occured!")\r
163     }\r
164 }\r