Skip to content

Commit 0a93446

Browse files
committed
Fix working directory
1 parent 9e69835 commit 0a93446

File tree

4 files changed

+43
-22
lines changed

4 files changed

+43
-22
lines changed

.github/workflows/mockserver-test.yaml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ on:
1010

1111
jobs:
1212
test:
13+
defaults:
14+
run:
15+
working-directory: mockserver
1316
runs-on: ubuntu-latest
1417
steps:
1518
- name: Checkout repo
@@ -23,4 +26,4 @@ jobs:
2326
- 'mockserver/**'
2427
- name: Run tests
2528
if: steps.changes.outputs.src == 'true'
26-
run: go test ./mockserver/...
29+
run: go test ./...

mockserver/main.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ func init() {
3333

3434
func main() {
3535
defer func() {
36-
if err := Save(); err != nil {
36+
if err := save(); err != nil {
3737
log.Error().Err(err).Msg("Failed to save configuration")
3838
}
3939
}()
4040

41-
http.HandleFunc("/register", RegisterRouteHandler)
42-
http.HandleFunc("/", DynamicHandler)
41+
http.HandleFunc("/register", registerRouteHandler)
42+
http.HandleFunc("/", dynamicHandler)
4343

4444
server := &http.Server{
4545
Addr: ":8080",

mockserver/router.go

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ var (
3131
routesMu sync.RWMutex // Protects access to the routes map
3232
)
3333

34-
// RegisterRouteHandler handles the dynamic route registration.
35-
func RegisterRouteHandler(w http.ResponseWriter, r *http.Request) {
34+
// registerRouteHandler handles the dynamic route registration.
35+
func registerRouteHandler(w http.ResponseWriter, r *http.Request) {
3636
if r.Method != http.MethodPost {
3737
http.Error(w, "Only POST allowed", http.StatusMethodNotAllowed)
3838
return
@@ -58,8 +58,8 @@ func RegisterRouteHandler(w http.ResponseWriter, r *http.Request) {
5858
log.Info().Str("Path", route.Path).Str("Method", route.Method).Msg("Route registered")
5959
}
6060

61-
// DynamicHandler handles all incoming requests and responds based on the registered routes.
62-
func DynamicHandler(w http.ResponseWriter, r *http.Request) {
61+
// dynamicHandler handles all incoming requests and responds based on the registered routes.
62+
func dynamicHandler(w http.ResponseWriter, r *http.Request) {
6363
routesMu.RLock()
6464
route, exists := routes[r.Method+":"+r.URL.Path]
6565
routesMu.RUnlock()
@@ -77,8 +77,8 @@ func DynamicHandler(w http.ResponseWriter, r *http.Request) {
7777
}
7878
}
7979

80-
// Load loads all registered routes from a file.
81-
func Load() error {
80+
// load loads all registered routes from a file.
81+
func load() error {
8282
if _, err := os.Stat(config.SaveFile); os.IsNotExist(err) {
8383
log.Debug().Str("Save File", config.SaveFile).Msg("No routes to load")
8484
return nil
@@ -103,8 +103,8 @@ func Load() error {
103103
return nil
104104
}
105105

106-
// Save saves all registered routes to a file.
107-
func Save() error {
106+
// save saves all registered routes to a file.
107+
func save() error {
108108
start := time.Now()
109109
log.Debug().Str("Save File", config.SaveFile).Msg("Saving routes")
110110

@@ -123,3 +123,21 @@ func Save() error {
123123
log.Debug().Str("Save File", config.SaveFile).Str("Duration", time.Since(start).String()).Msg("Routes saved")
124124
return nil
125125
}
126+
127+
func RegisterRoute(route Route) {
128+
routesMu.Lock()
129+
routes[route.Method+":"+route.Path] = route
130+
routesMu.Unlock()
131+
}
132+
133+
func CallRoute(method, path string) (int, string, string) {
134+
routesMu.RLock()
135+
route, exists := routes[method+":"+path]
136+
routesMu.RUnlock()
137+
138+
if !exists {
139+
return http.StatusNotFound, "", ""
140+
}
141+
142+
return route.StatusCode, route.ContentType, route.Response
143+
}

mockserver/router_test.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ func registerRoute(tb testing.TB, route Route) {
2323
req.Header.Set("Content-Type", "application/json")
2424

2525
rec := httptest.NewRecorder()
26-
RegisterRouteHandler(rec, req)
26+
registerRouteHandler(rec, req)
2727

2828
resp := rec.Result()
2929
tb.Cleanup(func() {
@@ -74,7 +74,7 @@ func TestRegisteredRoute(t *testing.T) {
7474

7575
req := httptest.NewRequest(route.Method, route.Path, nil)
7676
rec := httptest.NewRecorder()
77-
DynamicHandler(rec, req)
77+
dynamicHandler(rec, req)
7878
resp := rec.Result()
7979

8080
assert.Equal(t, resp.StatusCode, route.StatusCode)
@@ -92,7 +92,7 @@ func TestUnregisteredRoute(t *testing.T) {
9292
req := httptest.NewRequest(http.MethodGet, "/unregistered", nil)
9393
rec := httptest.NewRecorder()
9494

95-
DynamicHandler(rec, req)
95+
dynamicHandler(rec, req)
9696
resp := rec.Result()
9797
defer resp.Body.Close()
9898

@@ -128,18 +128,18 @@ func TestSaveLoad(t *testing.T) {
128128
os.Remove(filename)
129129
})
130130

131-
err := Save()
131+
err := save()
132132
require.NoError(t, err)
133133
require.FileExists(t, filename)
134134

135-
err = Load()
135+
err = load()
136136
require.NoError(t, err)
137137

138138
for _, route := range routes {
139139
req := httptest.NewRequest(route.Method, route.Path, nil)
140140
rec := httptest.NewRecorder()
141141

142-
DynamicHandler(rec, req)
142+
dynamicHandler(rec, req)
143143
resp := rec.Result()
144144

145145
assert.Equal(t, resp.StatusCode, route.StatusCode)
@@ -163,7 +163,7 @@ func BenchmarkRegisterRoute(b *testing.B) {
163163
body, _ := json.Marshal(route)
164164
req := httptest.NewRequest(http.MethodPost, "/register", bytes.NewReader(body))
165165
rec := httptest.NewRecorder()
166-
RegisterRouteHandler(rec, req)
166+
registerRouteHandler(rec, req)
167167
}
168168
}
169169

@@ -180,7 +180,7 @@ func BenchmarkRouteResponse(b *testing.B) {
180180
rec := httptest.NewRecorder()
181181
b.ResetTimer()
182182
for i := 0; i < b.N; i++ {
183-
DynamicHandler(rec, req)
183+
dynamicHandler(rec, req)
184184
}
185185
}
186186

@@ -203,7 +203,7 @@ func BenchmarkSaveRoutes(b *testing.B) {
203203

204204
b.ResetTimer() // Start measuring time
205205
for i := 0; i < b.N; i++ {
206-
if err := Save(); err != nil {
206+
if err := save(); err != nil {
207207
b.Fatalf("SaveRoutes failed: %v", err)
208208
}
209209
}
@@ -233,7 +233,7 @@ func BenchmarkLoadRoutes(b *testing.B) {
233233

234234
b.ResetTimer() // Start measuring time
235235
for i := 0; i < b.N; i++ {
236-
if err := Load(); err != nil {
236+
if err := load(); err != nil {
237237
b.Fatalf("Load failed: %v", err)
238238
}
239239
}

0 commit comments

Comments
 (0)