Skip to content

Commit 9045eb0

Browse files
refactor(tests): remove redundant TestServersDetailHandler integration tests
1 parent 7354670 commit 9045eb0

File tree

1 file changed

+0
-174
lines changed

1 file changed

+0
-174
lines changed

internal/api/handlers/v0/servers_test.go

Lines changed: 0 additions & 174 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package v0
33
import (
44
"encoding/json"
55
"errors"
6-
"fmt"
76
"net/http"
87
"net/http/httptest"
98
"testing"
@@ -263,179 +262,6 @@ func TestServersHandler(t *testing.T) {
263262
}
264263
}
265264

266-
func TestServersDetailHandler(t *testing.T) {
267-
validServerID := uuid.New().String()
268-
269-
testCases := []struct {
270-
name string
271-
method string
272-
serverID string
273-
setupMocks func(*MockRegistryService)
274-
expectedStatus int
275-
expectedServerDetail *model.ServerDetail
276-
expectedError string
277-
}{
278-
{
279-
name: "successful get server detail",
280-
method: http.MethodGet,
281-
serverID: validServerID,
282-
setupMocks: func(registry *MockRegistryService) {
283-
serverDetail := &model.ServerDetail{
284-
Server: model.Server{
285-
ID: validServerID,
286-
Name: "test-server",
287-
Description: "A test server",
288-
Repository: model.Repository{
289-
URL: "https://github.com/example/test-server",
290-
Source: "github",
291-
ID: "example/test-server",
292-
},
293-
VersionDetail: model.VersionDetail{
294-
Version: "1.0.0",
295-
ReleaseDate: "2025-05-25T00:00:00Z",
296-
IsLatest: true,
297-
},
298-
},
299-
Packages: []model.Package{
300-
{
301-
RegistryName: "test-package",
302-
Name: "example-package",
303-
Version: "1.0.0",
304-
},
305-
},
306-
Remotes: []model.Remote{
307-
{
308-
TransportType: "http",
309-
URL: "https://example.com/mcp",
310-
},
311-
},
312-
}
313-
registry.On("GetByID", validServerID).Return(serverDetail, nil)
314-
},
315-
expectedStatus: http.StatusOK,
316-
expectedServerDetail: &model.ServerDetail{
317-
Server: model.Server{
318-
ID: validServerID,
319-
Name: "test-server",
320-
Description: "A test server",
321-
Repository: model.Repository{
322-
URL: "https://github.com/example/test-server",
323-
Source: "github",
324-
ID: "example/test-server",
325-
},
326-
VersionDetail: model.VersionDetail{
327-
Version: "1.0.0",
328-
ReleaseDate: "2025-05-25T00:00:00Z",
329-
IsLatest: true,
330-
},
331-
},
332-
Packages: []model.Package{
333-
{
334-
RegistryName: "test-package",
335-
Name: "example-package",
336-
Version: "1.0.0",
337-
},
338-
},
339-
Remotes: []model.Remote{
340-
{
341-
TransportType: "http",
342-
URL: "https://example.com/mcp",
343-
},
344-
},
345-
},
346-
},
347-
{
348-
name: "server not found",
349-
method: http.MethodGet,
350-
serverID: uuid.New().String(),
351-
setupMocks: func(registry *MockRegistryService) {
352-
registry.On("GetByID", mock.AnythingOfType("string")).Return((*model.ServerDetail)(nil), errors.New("record not found"))
353-
},
354-
expectedStatus: http.StatusNotFound,
355-
expectedError: "Server not found",
356-
},
357-
{
358-
name: "invalid server ID format",
359-
method: http.MethodGet,
360-
serverID: "invalid-uuid",
361-
setupMocks: func(registry *MockRegistryService) {
362-
// Mock won't be called due to early validation
363-
},
364-
expectedStatus: http.StatusBadRequest,
365-
expectedError: "Invalid server ID format",
366-
},
367-
{
368-
name: "registry service error",
369-
method: http.MethodGet,
370-
serverID: validServerID,
371-
setupMocks: func(registry *MockRegistryService) {
372-
registry.On("GetByID", validServerID).Return((*model.ServerDetail)(nil), errors.New("database connection error"))
373-
},
374-
expectedStatus: http.StatusInternalServerError,
375-
expectedError: "Error retrieving server details",
376-
},
377-
{
378-
name: "method not allowed",
379-
method: http.MethodPost,
380-
serverID: validServerID,
381-
setupMocks: func(registry *MockRegistryService) {},
382-
expectedStatus: http.StatusMethodNotAllowed,
383-
expectedError: "Method not allowed",
384-
},
385-
}
386-
387-
for _, tc := range testCases {
388-
t.Run(tc.name, func(t *testing.T) {
389-
// Create mock registry service
390-
mockRegistry := new(MockRegistryService)
391-
tc.setupMocks(mockRegistry)
392-
393-
// Create handler
394-
handler := ServersDetailHandler(mockRegistry)
395-
396-
// Create request with path value
397-
url := fmt.Sprintf("/v0/servers/%s", tc.serverID)
398-
req, err := http.NewRequest(tc.method, url, nil)
399-
if err != nil {
400-
t.Fatal(err)
401-
}
402-
403-
// Set the path value for the server ID (simulating mux behavior)
404-
req.SetPathValue("id", tc.serverID)
405-
406-
// Create response recorder
407-
rr := httptest.NewRecorder()
408-
409-
// Call the handler
410-
handler.ServeHTTP(rr, req)
411-
412-
// Check status code
413-
assert.Equal(t, tc.expectedStatus, rr.Code)
414-
415-
if tc.expectedStatus == http.StatusOK {
416-
// Check content type
417-
assert.Equal(t, "application/json", rr.Header().Get("Content-Type"))
418-
419-
// Parse response body
420-
var resp model.ServerDetail
421-
err = json.NewDecoder(rr.Body).Decode(&resp)
422-
assert.NoError(t, err)
423-
424-
// Check the response data
425-
assert.Equal(t, *tc.expectedServerDetail, resp)
426-
} else {
427-
// Check error message for non-200 responses
428-
if tc.expectedError != "" {
429-
assert.Contains(t, rr.Body.String(), tc.expectedError)
430-
}
431-
}
432-
433-
// Verify mock expectations
434-
mockRegistry.AssertExpectations(t)
435-
})
436-
}
437-
}
438-
439265
// TestServersHandlerIntegration tests the servers list handler with actual HTTP requests
440266
func TestServersHandlerIntegration(t *testing.T) {
441267
// Create mock registry service

0 commit comments

Comments
 (0)