Documentation
¶
Index ¶
- func FormatRoute(route ExtractedRoute) string
- func FormatRoutes(routes []ExtractedRoute) string
- func GetMethodsForPath(routes []RouteExpectation, path string) []string
- func GetPathCount(routes []ExtractedRoute) int
- func GetPathsForMethod(routes []RouteExpectation, method string) []string
- func GetRouteCount(routes []ExtractedRoute) int
- func GroupRoutesByMethod(routes []RouteExpectation) map[string][]RouteExpectation
- func GroupRoutesByPath(routes []ExtractedRoute) map[string][]string
- func ValidateRoutes(routes []ExtractedRoute) (bool, []string)
- type ComparisonResult
- type ExtractedRoute
- type HTTPMethodTestCase
- type HTTPMethodValidator
- type MuxInspector
- func (mi *MuxInspector) AssertRouteMatchesMethod(method, path string) bool
- func (mi *MuxInspector) AssertUnsupportedMethod(method, path string) bool
- func (mi *MuxInspector) CompareRoutes(expectations []RouteExpectation, testPaths []string) ComparisonResult
- func (mi *MuxInspector) DiscoverRoutes(testPaths []string) []RouteInfo
- func (mi *MuxInspector) GetRegisteredCount() int
- func (mi *MuxInspector) GetRegisteredRoutes() []RouteInfo
- func (mi *MuxInspector) TestPathWithParameters(method, pathPattern string, paramValues map[string]string) (int, error)
- func (mi *MuxInspector) TestRequest(method, path string) (int, error)
- func (mi *MuxInspector) TestRoute(method, path string) bool
- func (mi *MuxInspector) VerifyRoutesRegistered(expectations []RouteExpectation, testPaths []string) (bool, []string, []string)
- type ParameterizedPathTester
- type PathParameterValidator
- func (ppv *PathParameterValidator) AddPathPattern(path string, paramNames []string)
- func (ppv *PathParameterValidator) ExtractParameterNames(path string) []string
- func (ppv *PathParameterValidator) GetPathParameters(path string) []string
- func (ppv *PathParameterValidator) HasPathParameters(path string) bool
- func (ppv *PathParameterValidator) VerifyPathPattern(path string) (bool, []string)
- type PathTestResult
- type RequestLogger
- type RouteExpectation
- type RouteInfo
- type RouteTestBuilder
- func (rtb *RouteTestBuilder) AddPath(path string) *RouteTestBuilder
- func (rtb *RouteTestBuilder) AddRoute(method, path string) *RouteTestBuilder
- func (rtb *RouteTestBuilder) AddRoutes(methods []string, paths []string) *RouteTestBuilder
- func (rtb *RouteTestBuilder) Build() ([]RouteExpectation, map[string][]string, map[string][]string)
- func (rtb *RouteTestBuilder) Count() int
- func (rtb *RouteTestBuilder) GetExpectations() []RouteExpectation
- func (rtb *RouteTestBuilder) WithParameters(path string, paramNames []string) *RouteTestBuilder
- type RouteValidator
- func (rv *RouteValidator) AssertAllRoutesExist(expectations []RouteExpectation) []string
- func (rv *RouteValidator) AssertRouteExists(method, path string) bool
- func (rv *RouteValidator) GetAllRoutes() []string
- func (rv *RouteValidator) GetExpectedCount() int
- func (rv *RouteValidator) GetRegisteredCount() int
- func (rv *RouteValidator) HasDuplicates() bool
- func (rv *RouteValidator) RegisterRoute(method, path string)
- func (rv *RouteValidator) VerifyRouteCount(expectations []RouteExpectation) (bool, int, int)
- type TestHelper
- func (th *TestHelper) AssertAllRoutesExist(expectations []RouteExpectation) (bool, []string)
- func (th *TestHelper) AssertMethodSupported(method, path string) bool
- func (th *TestHelper) AssertPathHasParameters(path string) bool
- func (th *TestHelper) AssertRouteCount(expectations []RouteExpectation) (bool, int, int)
- func (th *TestHelper) ExtractPathParameters(path string) []string
- func (th *TestHelper) GetSummary(expectations []RouteExpectation) TestSummary
- func (th *TestHelper) RegisterExpectedRoute(method, path string)
- func (th *TestHelper) RegisterExpectedRoutes(expectations []RouteExpectation)
- func (th *TestHelper) VerifyPathParameters(path string, expectedParams []string) bool
- type TestSummary
- type UnsupportedMethodTestCase
- type WADLApplication
- type WADLExtractor
- type WADLMethod
- type WADLResource
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func FormatRoute ¶
func FormatRoute(route ExtractedRoute) string
FormatRoute formats a route as "METHOD /path".
func FormatRoutes ¶
func FormatRoutes(routes []ExtractedRoute) string
FormatRoutes formats multiple routes, one per line.
func GetMethodsForPath ¶
func GetMethodsForPath(routes []RouteExpectation, path string) []string
GetMethodsForPath returns all methods for a specific path.
func GetPathCount ¶
func GetPathCount(routes []ExtractedRoute) int
GetPathCount returns the count of unique paths (regardless of method).
func GetPathsForMethod ¶
func GetPathsForMethod(routes []RouteExpectation, method string) []string
GetPathsForMethod returns all paths for a specific method.
func GetRouteCount ¶
func GetRouteCount(routes []ExtractedRoute) int
GetRouteCount returns the count of unique routes.
func GroupRoutesByMethod ¶
func GroupRoutesByMethod(routes []RouteExpectation) map[string][]RouteExpectation
GroupRoutesByMethod groups routes by their HTTP method.
func GroupRoutesByPath ¶
func GroupRoutesByPath(routes []ExtractedRoute) map[string][]string
GroupRoutesByPath groups routes by their path. Returns map: path -> []methods
func ValidateRoutes ¶
func ValidateRoutes(routes []ExtractedRoute) (bool, []string)
ValidateRoutes checks for common issues in extracted routes. Returns (valid bool, errors []string)
Types ¶
type ComparisonResult ¶
type ComparisonResult struct {
Total int
Registered int
MissingCount int
ExtraCount int
Routes []string
MissingRoutes []string
ExtraRoutes []string
}
ComparisonResult holds the result of comparing expected vs actual routes.
type ExtractedRoute ¶
type ExtractedRoute struct {
Method string // HTTP method (GET, POST, PUT, DELETE)
Path string // URL path
}
ExtractedRoute represents an extracted route from WADL.
func DeduplicateRoutes ¶
func DeduplicateRoutes(routes []ExtractedRoute) []ExtractedRoute
DeduplicateRoutes removes duplicate routes.
func SortRoutes ¶
func SortRoutes(routes []ExtractedRoute) []ExtractedRoute
SortRoutes sorts routes for consistent output. Sorts by: method (alphabetically), then path (alphabetically).
type HTTPMethodTestCase ¶
type HTTPMethodTestCase struct {
Method string
Path string
ExpectedSupported bool
Description string
}
HTTPMethodTestCase represents a test case for HTTP method verification.
func GenerateHTTPMethodTestCases ¶
func GenerateHTTPMethodTestCases(routes []RouteExpectation) []HTTPMethodTestCase
GenerateHTTPMethodTestCases creates test cases from route expectations.
type HTTPMethodValidator ¶
type HTTPMethodValidator struct {
// contains filtered or unexported fields
}
HTTPMethodValidator validates HTTP method support for routes.
func NewHTTPMethodValidator ¶
func NewHTTPMethodValidator() *HTTPMethodValidator
NewHTTPMethodValidator creates a new HTTPMethodValidator.
func (*HTTPMethodValidator) AddSupportedMethod ¶
func (hmv *HTTPMethodValidator) AddSupportedMethod(path, method string)
AddSupportedMethod marks a method as supported for a path.
func (*HTTPMethodValidator) GetSupportedMethods ¶
func (hmv *HTTPMethodValidator) GetSupportedMethods(path string) []string
GetSupportedMethods returns all supported methods for a path.
func (*HTTPMethodValidator) IsSupportedMethod ¶
func (hmv *HTTPMethodValidator) IsSupportedMethod(path, method string) bool
IsSupportedMethod checks if a method is supported for a path.
type MuxInspector ¶
type MuxInspector struct {
// contains filtered or unexported fields
}
MuxInspector provides utilities for inspecting HTTP mux route registrations.
func NewMuxInspector ¶
func NewMuxInspector(mux *http.ServeMux) *MuxInspector
NewMuxInspector creates a new MuxInspector for analyzing a mux.
func (*MuxInspector) AssertRouteMatchesMethod ¶
func (mi *MuxInspector) AssertRouteMatchesMethod(method, path string) bool
AssertRouteMatchesMethod verifies that a route is registered for a specific method. Returns true if the route matches the method.
func (*MuxInspector) AssertUnsupportedMethod ¶
func (mi *MuxInspector) AssertUnsupportedMethod(method, path string) bool
AssertUnsupportedMethod verifies that a method is NOT supported (should return 405 or similar). Returns true if the method is not supported.
func (*MuxInspector) CompareRoutes ¶
func (mi *MuxInspector) CompareRoutes(expectations []RouteExpectation, testPaths []string) ComparisonResult
CompareRoutes compares expected routes vs discovered routes.
func (*MuxInspector) DiscoverRoutes ¶
func (mi *MuxInspector) DiscoverRoutes(testPaths []string) []RouteInfo
DiscoverRoutes attempts to discover registered routes by testing common patterns. This is a heuristic approach since ServeMux doesn't expose registered routes directly. Returns a list of discovered routes.
func (*MuxInspector) GetRegisteredCount ¶
func (mi *MuxInspector) GetRegisteredCount() int
GetRegisteredCount returns the number of discovered routes.
func (*MuxInspector) GetRegisteredRoutes ¶
func (mi *MuxInspector) GetRegisteredRoutes() []RouteInfo
GetRegisteredRoutes returns all discovered registered routes.
func (*MuxInspector) TestPathWithParameters ¶
func (mi *MuxInspector) TestPathWithParameters(method, pathPattern string, paramValues map[string]string) (int, error)
TestPathWithParameters tests a path with actual parameter values. Example: "/bill/{id1}" becomes "/bill/123"
func (*MuxInspector) TestRequest ¶
func (mi *MuxInspector) TestRequest(method, path string) (int, error)
TestRequest performs an HTTP request and returns matched status.
func (*MuxInspector) TestRoute ¶
func (mi *MuxInspector) TestRoute(method, path string) bool
TestRoute attempts to match a route and returns whether it matched.
func (*MuxInspector) VerifyRoutesRegistered ¶
func (mi *MuxInspector) VerifyRoutesRegistered(expectations []RouteExpectation, testPaths []string) (bool, []string, []string)
VerifyRoutesRegistered checks if all expected routes are registered. Returns (allRegistered bool, missing []string, registered []string)
type ParameterizedPathTester ¶
type ParameterizedPathTester struct {
// contains filtered or unexported fields
}
ParameterizedPathTester helps test paths with parameters.
func NewParameterizedPathTester ¶
func NewParameterizedPathTester(mux *http.ServeMux) *ParameterizedPathTester
NewParameterizedPathTester creates a new ParameterizedPathTester.
func (*ParameterizedPathTester) TestPathPattern ¶
func (ppt *ParameterizedPathTester) TestPathPattern(method, pathPattern string, paramSets []map[string]string) (bool, []PathTestResult)
TestPathPattern tests a path pattern with multiple parameter sets. Returns (allMatched bool, results []PathTestResult)
type PathParameterValidator ¶
type PathParameterValidator struct {
// contains filtered or unexported fields
}
PathParameterValidator validates path parameters.
func NewPathParameterValidator ¶
func NewPathParameterValidator() *PathParameterValidator
NewPathParameterValidator creates a new PathParameterValidator.
func (*PathParameterValidator) AddPathPattern ¶
func (ppv *PathParameterValidator) AddPathPattern(path string, paramNames []string)
AddPathPattern registers a path pattern with its parameter names. Example: "/bill/{id1}/ca/{id2}" with ["id1", "id2"]
func (*PathParameterValidator) ExtractParameterNames ¶
func (ppv *PathParameterValidator) ExtractParameterNames(path string) []string
ExtractParameterNames extracts parameter names from a path. Example: "/bill/{id1}/ca/{id2}" returns ["id1", "id2"]
func (*PathParameterValidator) GetPathParameters ¶
func (ppv *PathParameterValidator) GetPathParameters(path string) []string
GetPathParameters returns registered parameters for a path.
func (*PathParameterValidator) HasPathParameters ¶
func (ppv *PathParameterValidator) HasPathParameters(path string) bool
HasPathParameters checks if a path has parameters.
func (*PathParameterValidator) VerifyPathPattern ¶
func (ppv *PathParameterValidator) VerifyPathPattern(path string) (bool, []string)
VerifyPathPattern checks if a path matches the expected pattern.
type PathTestResult ¶
PathTestResult holds the result of a single parametrized path test.
type RequestLogger ¶
type RequestLogger struct {
// contains filtered or unexported fields
}
RequestLogger provides detailed logging of HTTP requests for debugging.
func NewRequestLogger ¶
func NewRequestLogger(output io.Writer) *RequestLogger
NewRequestLogger creates a new RequestLogger.
func (*RequestLogger) LogRequest ¶
func (rl *RequestLogger) LogRequest(req *http.Request, response *http.Response)
LogRequest logs details about an HTTP request.
type RouteExpectation ¶
type RouteExpectation struct {
Method string // HTTP method (GET, POST, PUT, DELETE, etc.)
Path string // URL path (e.g., "/bill", "/bill/{id1}")
}
RouteExpectation represents an expected HTTP route.
func ExtractRoutesToExpectations ¶
func ExtractRoutesToExpectations(routes []ExtractedRoute) []RouteExpectation
ExtractRoutesToExpectations converts extracted routes to RouteExpectation format.
func LoadTestData ¶
func LoadTestData(fileName string) ([]RouteExpectation, error)
LoadTestData loads route expectations from a JSON test data file.
func LoadTestDataByServiceName ¶
func LoadTestDataByServiceName(serviceName string) ([]RouteExpectation, error)
LoadTestDataByServiceName loads test data using service name. Handles special naming conventions.
type RouteInfo ¶
type RouteInfo struct {
Method string
Path string
Handler http.Handler
Matched bool // Whether a test request matched this route
}
RouteInfo contains information about a registered route.
type RouteTestBuilder ¶
type RouteTestBuilder struct {
// contains filtered or unexported fields
}
RouteTestBuilder helps construct complex route test scenarios.
func NewRouteTestBuilder ¶
func NewRouteTestBuilder() *RouteTestBuilder
NewRouteTestBuilder creates a new RouteTestBuilder.
func (*RouteTestBuilder) AddPath ¶
func (rtb *RouteTestBuilder) AddPath(path string) *RouteTestBuilder
AddPath adds all HTTP methods for a path.
func (*RouteTestBuilder) AddRoute ¶
func (rtb *RouteTestBuilder) AddRoute(method, path string) *RouteTestBuilder
AddRoute adds a single route to the builder.
func (*RouteTestBuilder) AddRoutes ¶
func (rtb *RouteTestBuilder) AddRoutes(methods []string, paths []string) *RouteTestBuilder
AddRoutes adds multiple routes with the same methods.
func (*RouteTestBuilder) Build ¶
func (rtb *RouteTestBuilder) Build() ([]RouteExpectation, map[string][]string, map[string][]string)
Build returns the constructed expectations and metadata.
func (*RouteTestBuilder) Count ¶
func (rtb *RouteTestBuilder) Count() int
Count returns the total number of routes.
func (*RouteTestBuilder) GetExpectations ¶
func (rtb *RouteTestBuilder) GetExpectations() []RouteExpectation
GetExpectations returns the expectations slice.
func (*RouteTestBuilder) WithParameters ¶
func (rtb *RouteTestBuilder) WithParameters(path string, paramNames []string) *RouteTestBuilder
WithParameters associates parameter names with a path.
type RouteValidator ¶
type RouteValidator struct {
// contains filtered or unexported fields
}
RouteValidator provides methods for validating route registration.
func NewRouteValidator ¶
func NewRouteValidator(mux *http.ServeMux) *RouteValidator
NewRouteValidator creates a new RouteValidator for a given mux.
func (*RouteValidator) AssertAllRoutesExist ¶
func (rv *RouteValidator) AssertAllRoutesExist(expectations []RouteExpectation) []string
AssertAllRoutesExist checks if all expected routes are registered. Returns a list of missing routes, or empty slice if all exist.
func (*RouteValidator) AssertRouteExists ¶
func (rv *RouteValidator) AssertRouteExists(method, path string) bool
AssertRouteExists checks if a route is registered. Returns true if the route exists, false otherwise.
func (*RouteValidator) GetAllRoutes ¶
func (rv *RouteValidator) GetAllRoutes() []string
GetAllRoutes returns a list of all registered routes.
func (*RouteValidator) GetExpectedCount ¶
func (rv *RouteValidator) GetExpectedCount() int
GetExpectedCount returns the total number of expected routes from last verification.
func (*RouteValidator) GetRegisteredCount ¶
func (rv *RouteValidator) GetRegisteredCount() int
GetRegisteredCount returns the total number of registered routes.
func (*RouteValidator) HasDuplicates ¶
func (rv *RouteValidator) HasDuplicates() bool
HasDuplicates checks if there are any duplicate routes. Returns true if duplicates found.
func (*RouteValidator) RegisterRoute ¶
func (rv *RouteValidator) RegisterRoute(method, path string)
RegisterRoute marks a route as expected to be registered. This is typically called during test setup to populate expected routes.
func (*RouteValidator) VerifyRouteCount ¶
func (rv *RouteValidator) VerifyRouteCount(expectations []RouteExpectation) (bool, int, int)
VerifyRouteCount ensures the number of registered routes matches expectations. Returns (matches bool, registered int, expected int)
type TestHelper ¶
type TestHelper struct {
// contains filtered or unexported fields
}
TestHelper provides common utility functions for route testing.
func NewTestHelper ¶
func NewTestHelper(mux *http.ServeMux) *TestHelper
NewTestHelper creates a new TestHelper for a given mux.
func (*TestHelper) AssertAllRoutesExist ¶
func (th *TestHelper) AssertAllRoutesExist(expectations []RouteExpectation) (bool, []string)
AssertAllRoutesExist verifies all expected routes are registered. Returns (allExist bool, missingRoutes []string)
func (*TestHelper) AssertMethodSupported ¶
func (th *TestHelper) AssertMethodSupported(method, path string) bool
AssertMethodSupported verifies a specific HTTP method is supported for a path.
func (*TestHelper) AssertPathHasParameters ¶
func (th *TestHelper) AssertPathHasParameters(path string) bool
AssertPathHasParameters checks if a path has parameter placeholders.
func (*TestHelper) AssertRouteCount ¶
func (th *TestHelper) AssertRouteCount(expectations []RouteExpectation) (bool, int, int)
AssertRouteCount verifies the count of registered routes matches expectations. Returns (matches bool, registered int, expected int)
func (*TestHelper) ExtractPathParameters ¶
func (th *TestHelper) ExtractPathParameters(path string) []string
ExtractPathParameters extracts parameter names from a path.
func (*TestHelper) GetSummary ¶
func (th *TestHelper) GetSummary(expectations []RouteExpectation) TestSummary
GetSummary returns a test summary for all routes.
func (*TestHelper) RegisterExpectedRoute ¶
func (th *TestHelper) RegisterExpectedRoute(method, path string)
RegisterExpectedRoute adds an expected route to the test helper.
func (*TestHelper) RegisterExpectedRoutes ¶
func (th *TestHelper) RegisterExpectedRoutes(expectations []RouteExpectation)
RegisterExpectedRoutes adds multiple expected routes at once.
func (*TestHelper) VerifyPathParameters ¶
func (th *TestHelper) VerifyPathParameters(path string, expectedParams []string) bool
VerifyPathParameters checks if a path has the expected parameters. Returns (valid bool, expectedParams []string)
type TestSummary ¶
type TestSummary struct {
TotalExpected int
TotalRegistered int
MissingCount int
Routes []string
Missing []string
}
TestSummary holds summary information about route testing.
func (TestSummary) String ¶
func (ts TestSummary) String() string
String returns a formatted string representation of the summary.
type UnsupportedMethodTestCase ¶
UnsupportedMethodTestCase represents a test for unsupported methods.
func GenerateUnsupportedMethodTestCases ¶
func GenerateUnsupportedMethodTestCases(routes []RouteExpectation) []UnsupportedMethodTestCase
GenerateUnsupportedMethodTestCases creates negative test cases.
type WADLApplication ¶
type WADLApplication struct {
XMLName xml.Name `xml:"application"`
Resources []WADLResource `xml:"resources>resource"`
}
WADLApplication is the root WADL element.
type WADLExtractor ¶
type WADLExtractor struct {
// contains filtered or unexported fields
}
WADLExtractor extracts routes from WADL files.
func NewWADLExtractor ¶
func NewWADLExtractor(wadlDir string) *WADLExtractor
NewWADLExtractor creates a new WADLExtractor for a wadl directory.
func (*WADLExtractor) ExtractRoutesFromFile ¶
func (we *WADLExtractor) ExtractRoutesFromFile(fileName string) ([]ExtractedRoute, error)
ExtractRoutesFromFile extracts routes from a single WADL file.
func (*WADLExtractor) ExtractRoutesFromServiceWADL ¶
func (we *WADLExtractor) ExtractRoutesFromServiceWADL(serviceName string) ([]ExtractedRoute, error)
ExtractRoutesFromServiceWADL extracts routes for a specific service. Service name is used to find the WADL file (e.g., "Bill" -> "bill.wadl").
type WADLMethod ¶
WADLMethod represents a WADL method element.
type WADLResource ¶
type WADLResource struct {
ID string `xml:"id,attr"`
Path string `xml:"path,attr"`
SamplePath string `xml:"samplePath,attr"`
Methods []WADLMethod `xml:"method"`
Resources []WADLResource `xml:"resource"`
}
WADLResource represents a WADL resource element.