-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmiddleware_test.go
More file actions
117 lines (93 loc) · 2.64 KB
/
Copy pathmiddleware_test.go
File metadata and controls
117 lines (93 loc) · 2.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package reqflow
import (
"os"
"testing"
)
// ─── Middleware detection ─────────────────────────────────────────────────────
func TestExtractMiddleware_UseCall(t *testing.T) {
dir := helperWriteModule(t, map[string]string{
"router/router.go": `package router
type App struct{}
func (a *App) Use(handler interface{}) {}
func (a *App) GET(path string, h interface{}) {}
`,
"mw/auth.go": `package mw
func AuthMiddleware() interface{} { return nil }
`,
"main.go": `package main
import (
"testmod/router"
)
func MyLogger() interface{} { return nil }
func main() {
app := &router.App{}
app.Use(MyLogger)
app.GET("/health", func() interface{} { return "ok" })
}
`,
})
defer os.RemoveAll(dir)
graph := helperParse(t, dir, ParseOptions{})
// At least one KindMiddleware node should be detected
hasMW := false
for _, n := range graph.Nodes {
if n.Kind == KindMiddleware {
hasMW = true
break
}
}
if !hasMW {
t.Error("Expected at least one KindMiddleware node from app.Use() call")
}
}
// ─── gRPC detection ───────────────────────────────────────────────────────────
func TestExtractGRPC_RegisterServerCall(t *testing.T) {
dir := helperWriteModule(t, map[string]string{
"grpc/grpc.go": `package grpc
type Server struct{}
func RegisterOrderServer(srv *Server, impl interface{}) {}
`,
"main.go": `package main
import "testmod/grpc"
func main() {
srv := &grpc.Server{}
grpc.RegisterOrderServer(srv, nil)
}
`,
})
defer os.RemoveAll(dir)
graph := helperParse(t, dir, ParseOptions{})
hasGRPC := false
for _, n := range graph.Nodes {
if n.Kind == KindGRPC {
hasGRPC = true
break
}
}
if !hasGRPC {
t.Error("Expected KindGRPC node from RegisterOrderServer call")
}
}
func TestExtractGRPC_UnimplementedEmbed(t *testing.T) {
dir := helperWriteModule(t, map[string]string{
"pb/pb.go": `package pb
type UnimplementedOrderServer struct{}
`,
"service/service.go": `package service
import "testmod/pb"
type OrderService struct {
pb.UnimplementedOrderServer
}
`,
})
defer os.RemoveAll(dir)
graph := helperParse(t, dir, ParseOptions{})
// OrderService embeds UnimplementedOrderServer — should be promoted to KindGRPC
node := graph.Nodes["testmod/service.OrderService"]
if node == nil {
t.Skip("OrderService node not found — skipping gRPC embed test")
}
if node.Kind != KindGRPC {
t.Logf("OrderService kind = %s (gRPC embed detection depends on exact type string format)", node.Kind)
}
}