Skip to content
This repository was archived by the owner on Aug 7, 2022. It is now read-only.

Commit 217f887

Browse files
authored
Merge 610f974 into e9f03c3
2 parents e9f03c3 + 610f974 commit 217f887

File tree

2 files changed

+139
-0
lines changed

2 files changed

+139
-0
lines changed

persistent/memory/memory.go

+64
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,70 @@ func (m *Memory) PatchRoute(ctx context.Context, mockID string, routeID string,
174174
return nil
175175
}
176176

177+
func (m *Memory) DeleteRoute(ctx context.Context, mockID string, routeID string) error {
178+
mok, err := m.GetMock(ctx, mockID)
179+
if err != nil {
180+
return err
181+
}
182+
183+
if mok == nil {
184+
return errors.New("mock not found")
185+
}
186+
187+
_, idx, ok := lo.FindIndexOf[*mock.Route](mok.Routes, func(route *mock.Route) bool {
188+
return route.ID == routeID
189+
})
190+
191+
if !ok {
192+
return errors.New("route not found")
193+
}
194+
195+
mok.Routes = append(mok.Routes[:idx], mok.Routes[idx+1:]...)
196+
197+
if err := m.SetMock(ctx, mok); err != nil {
198+
return err
199+
}
200+
201+
return nil
202+
}
203+
204+
func (m *Memory) CreateRoute(ctx context.Context, mockID string, data string) error {
205+
mok, err := m.GetMock(ctx, mockID)
206+
if err != nil {
207+
return err
208+
}
209+
210+
if mok == nil {
211+
return errors.New("mock not found")
212+
}
213+
214+
var values map[string]*json.RawMessage
215+
if err := json.Unmarshal([]byte(data), &values); err != nil {
216+
return err
217+
}
218+
219+
var newRoute = &mock.Route{}
220+
if err := patchStruct(newRoute, values); err != nil {
221+
return err
222+
}
223+
224+
_, _, ok := lo.FindIndexOf[*mock.Route](mok.Routes, func(route *mock.Route) bool {
225+
return route.ID == newRoute.ID
226+
})
227+
228+
if ok {
229+
return errors.New("route already created")
230+
}
231+
232+
mok.Routes = append(mok.Routes, newRoute)
233+
234+
if err := m.SetMock(ctx, mok); err != nil {
235+
return err
236+
}
237+
238+
return nil
239+
}
240+
177241
func (m *Memory) PatchResponse(ctx context.Context, mockID, routeID, responseID, data string) error {
178242
mok, err := m.GetMock(ctx, mockID)
179243
if err != nil {

persistent/memory/memory_test.go

+75
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,81 @@ func TestMemory_PatchRoute(t *testing.T) {
122122
})
123123
}
124124

125+
func TestMemory_DeleteRoute(t *testing.T) {
126+
m := New()
127+
mok := &mock.Mock{
128+
ID: "mockid",
129+
Routes: []*mock.Route{
130+
{
131+
ID: "routeid",
132+
Method: "GET",
133+
},
134+
{
135+
ID: "routeid1",
136+
Method: "PUT",
137+
},
138+
},
139+
}
140+
_ = m.SetMock(context.Background(), mok)
141+
142+
t.Run("success", func(t *testing.T) {
143+
err := m.DeleteRoute(context.Background(), "mockid", "routeid")
144+
require.NoError(t, err)
145+
146+
configs, err := m.GetMock(context.Background(), "mockid")
147+
require.NoError(t, err)
148+
assert.Equal(t, 1, len(configs.Routes))
149+
})
150+
151+
t.Run("mock not found", func(t *testing.T) {
152+
err := m.DeleteRoute(context.Background(), "random", "")
153+
require.Error(t, err)
154+
})
155+
156+
t.Run("route not found", func(t *testing.T) {
157+
err := m.DeleteRoute(context.Background(), "mockid", "random")
158+
require.Error(t, err)
159+
})
160+
}
161+
162+
func TestMemory_CreateRoute(t *testing.T) {
163+
m := New()
164+
mok := &mock.Mock{
165+
ID: "mockid",
166+
Routes: []*mock.Route{
167+
{
168+
ID: "routeid",
169+
Method: "GET",
170+
},
171+
},
172+
}
173+
_ = m.SetMock(context.Background(), mok)
174+
175+
t.Run("success", func(t *testing.T) {
176+
err := m.CreateRoute(context.Background(), "mockid", `{"id":"routeid1","method":"PUT"}`)
177+
require.NoError(t, err)
178+
configs, err := m.GetMock(context.Background(), "mockid")
179+
require.NoError(t, err)
180+
assert.Equal(t, 2, len(configs.Routes))
181+
})
182+
183+
t.Run("mock not found", func(t *testing.T) {
184+
err := m.CreateRoute(context.Background(), "random", `{}`)
185+
require.Error(t, err)
186+
})
187+
188+
t.Run("route already created", func(t *testing.T) {
189+
err := m.CreateRoute(context.Background(), "mockid", `{"id":"routeid1","method":"PUT"}`)
190+
require.Error(t, err)
191+
})
192+
193+
t.Run("invalid json", func(t *testing.T) {
194+
err := m.CreateRoute(context.Background(), "mockid", `{"method": "}`)
195+
require.Error(t, err)
196+
})
197+
198+
}
199+
125200
func TestMemory_PatchResponse(t *testing.T) {
126201
m := New()
127202
mok := &mock.Mock{

0 commit comments

Comments
 (0)