Skip to content

Commit 1a74702

Browse files
feat(dir): add integration tests for server
1 parent c4413ae commit 1a74702

File tree

11 files changed

+1482
-6
lines changed

11 files changed

+1482
-6
lines changed

server/server.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ type Server struct {
6363
authzService *authz.Service
6464
publicationService *publication.Service
6565
health *healthcheck.Checker
66-
grpcServer *grpc.Server
66+
GrpcServer *grpc.Server
6767
metricsServer *metrics.Server
6868
}
6969

@@ -312,7 +312,7 @@ func New(ctx context.Context, cfg *config.Config) (*Server, error) {
312312
authzService: authzService,
313313
publicationService: publicationService,
314314
health: healthChecker,
315-
grpcServer: grpcServer,
315+
GrpcServer: grpcServer,
316316
metricsServer: metricsServer,
317317
}, nil
318318
}
@@ -385,7 +385,7 @@ func (s Server) Close(ctx context.Context) {
385385
}
386386
}
387387

388-
s.grpcServer.GracefulStop()
388+
s.GrpcServer.GracefulStop()
389389
}
390390

391391
func (s Server) start(ctx context.Context) error {
@@ -428,7 +428,7 @@ func (s Server) start(ctx context.Context) error {
428428
go func() {
429429
logger.Info("Server starting", "address", s.Options().Config().ListenAddress)
430430

431-
if err := s.grpcServer.Serve(listen); err != nil {
431+
if err := s.GrpcServer.Serve(listen); err != nil {
432432
logger.Error("Failed to start server", "error", err)
433433
}
434434
}()

tests/Taskfile.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -592,3 +592,10 @@ tasks:
592592
else
593593
echo "No pods directory found"
594594
fi
595+
596+
test:integration:server:
597+
desc: Run integration tests for the API server
598+
dir: "{{ .ROOT_DIR }}/tests/integration-server"
599+
cmds:
600+
- docker compose up -d --build --wait
601+
- ginkgo --randomize-all -p

tests/go.mod

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ replace (
1010
github.com/agntcy/dir/client => ../client
1111
github.com/agntcy/dir/importer => ../importer
1212
github.com/agntcy/dir/mcp => ../mcp
13+
github.com/agntcy/dir/server => ../server
1314
github.com/agntcy/dir/utils => ../utils
1415
)
1516

@@ -20,6 +21,8 @@ require (
2021
github.com/agntcy/dir/api v1.1.0
2122
github.com/agntcy/dir/cli v1.1.0
2223
github.com/agntcy/dir/client v1.1.0
24+
github.com/agntcy/dir/server v1.1.0
25+
github.com/brianvoe/gofakeit/v7 v7.14.1
2326
github.com/google/uuid v1.6.0
2427
github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c
2528
github.com/onsi/ginkgo/v2 v2.28.1
@@ -29,12 +32,15 @@ require (
2932
github.com/spf13/viper v1.21.0
3033
google.golang.org/grpc v1.79.3
3134
google.golang.org/protobuf v1.36.11
35+
oras.land/oras-go/v2 v2.6.0
3236
)
3337

3438
require (
3539
buf.build/gen/go/agntcy/oasf-sdk/protocolbuffers/go v1.36.11-20260317075528-21920861826f.1 // indirect
3640
buf.build/gen/go/agntcy/oasf/protocolbuffers/go v1.36.11-20260317085956-0f123aef9e7c.1 // indirect
3741
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20260209202127-80ab13bee0bf.1 // indirect
42+
buf.build/go/protovalidate v1.1.3 // indirect
43+
cel.dev/expr v0.25.1 // indirect
3844
charm.land/bubbles/v2 v2.0.0 // indirect
3945
charm.land/bubbletea/v2 v2.0.2 // indirect
4046
charm.land/catwalk v0.30.7 // indirect
@@ -44,6 +50,9 @@ require (
4450
cloud.google.com/go/auth v0.18.2 // indirect
4551
cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect
4652
cloud.google.com/go/compute/metadata v0.9.0 // indirect
53+
filippo.io/bigmod v0.1.1-0.20260103110540-f8a47775ebe5 // indirect
54+
filippo.io/keygen v0.0.0-20260114151900-8e2790ea4c5b // indirect
55+
github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96 // indirect
4756
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.0 // indirect
4857
github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 // indirect
4958
github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect
@@ -60,6 +69,7 @@ require (
6069
github.com/agntcy/oasf-sdk/pkg v1.0.3 // indirect
6170
github.com/alecthomas/chroma/v2 v2.23.1 // indirect
6271
github.com/andybalholm/cascadia v1.3.3 // indirect
72+
github.com/antlr4-go/antlr/v4 v4.13.1 // indirect
6373
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
6474
github.com/atotto/clipboard v0.1.4 // indirect
6575
github.com/aws/aws-sdk-go-v2 v1.41.4 // indirect
@@ -80,8 +90,13 @@ require (
8090
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
8191
github.com/aymerick/douceur v0.2.0 // indirect
8292
github.com/bahlo/generic-list-go v0.2.0 // indirect
93+
github.com/benbjohnson/clock v1.3.5 // indirect
94+
github.com/beorn7/perks v1.0.1 // indirect
8395
github.com/blang/semver v3.5.1+incompatible // indirect
96+
github.com/bmatcuk/doublestar/v4 v4.10.0 // indirect
8497
github.com/buger/jsonparser v1.1.1 // indirect
98+
github.com/casbin/casbin/v2 v2.135.0 // indirect
99+
github.com/casbin/govaluate v1.10.0 // indirect
85100
github.com/cenkalti/backoff/v5 v5.0.3 // indirect
86101
github.com/cespare/xxhash/v2 v2.3.0 // indirect
87102
github.com/charmbracelet/anthropic-sdk-go v0.0.0-20260223140439-63879b0b8dab // indirect
@@ -105,17 +120,23 @@ require (
105120
github.com/coreos/go-oidc/v3 v3.17.0 // indirect
106121
github.com/cyberphone/json-canonicalization v0.0.0-20241213102144-19d51d7fe467 // indirect
107122
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
123+
github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect
108124
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.1 // indirect
125+
github.com/dgraph-io/badger v1.6.2 // indirect
126+
github.com/dgraph-io/ristretto v0.2.0 // indirect
109127
github.com/digitorus/pkcs7 v0.0.0-20250730155240-ffadbf3f398c // indirect
110128
github.com/digitorus/timestamp v0.0.0-20250524132541-c45532741eea // indirect
111129
github.com/djherbis/times v1.6.0 // indirect
112130
github.com/dlclark/regexp2 v1.11.5 // indirect
113131
github.com/docker/cli v29.3.0+incompatible // indirect
114132
github.com/docker/distribution v2.8.3+incompatible // indirect
115133
github.com/docker/docker-credential-helpers v0.9.5 // indirect
134+
github.com/dunglas/httpsfv v1.1.0 // indirect
116135
github.com/dustin/go-humanize v1.0.1 // indirect
117136
github.com/emicklei/go-restful/v3 v3.13.0 // indirect
118137
github.com/felixge/httpsnoop v1.0.4 // indirect
138+
github.com/filecoin-project/go-clock v0.1.0 // indirect
139+
github.com/flynn/noise v1.1.0 // indirect
119140
github.com/fsnotify/fsnotify v1.9.0 // indirect
120141
github.com/fxamacker/cbor/v2 v2.9.0 // indirect
121142
github.com/gabriel-vasile/mimetype v1.4.13 // indirect
@@ -148,50 +169,99 @@ require (
148169
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
149170
github.com/go-viper/mapstructure/v2 v2.5.0 // indirect
150171
github.com/gobwas/glob v0.2.3 // indirect
172+
github.com/goccy/go-json v0.10.6 // indirect
151173
github.com/goccy/go-yaml v1.19.2 // indirect
174+
github.com/gogo/protobuf v1.3.2 // indirect
175+
github.com/golang/protobuf v1.5.4 // indirect
152176
github.com/golang/snappy v1.0.0 // indirect
177+
github.com/google/cel-go v0.27.0 // indirect
153178
github.com/google/certificate-transparency-go v1.3.3 // indirect
154179
github.com/google/gnostic-models v0.7.1 // indirect
155180
github.com/google/go-cmp v0.7.0 // indirect
156181
github.com/google/go-containerregistry v0.21.3 // indirect
157182
github.com/google/go-github/v50 v50.2.0 // indirect
158183
github.com/google/go-github/v73 v73.0.0 // indirect
159184
github.com/google/go-querystring v1.2.0 // indirect
185+
github.com/google/gopacket v1.1.19 // indirect
160186
github.com/google/jsonschema-go v0.4.2 // indirect
161187
github.com/google/pprof v0.0.0-20260302011040-a15ffb7f9dcc // indirect
162188
github.com/google/s2a-go v0.1.9 // indirect
163189
github.com/googleapis/enterprise-certificate-proxy v0.3.14 // indirect
164190
github.com/googleapis/gax-go/v2 v2.19.0 // indirect
165191
github.com/gorilla/css v1.0.1 // indirect
166192
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect
193+
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect
194+
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect
167195
github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect
168196
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
169197
github.com/hashicorp/go-retryablehttp v0.7.8 // indirect
198+
github.com/hashicorp/golang-lru v1.0.2 // indirect
199+
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
200+
github.com/huin/goupnp v1.3.0 // indirect
170201
github.com/in-toto/attestation v1.2.0 // indirect
171202
github.com/in-toto/in-toto-golang v0.10.0 // indirect
172203
github.com/inconshreveable/mousetrap v1.1.0 // indirect
173204
github.com/invopop/jsonschema v0.13.0 // indirect
205+
github.com/ipfs/boxo v0.37.0 // indirect
174206
github.com/ipfs/go-cid v0.6.0 // indirect
207+
github.com/ipfs/go-datastore v0.9.1 // indirect
208+
github.com/ipfs/go-ds-badger v0.3.4 // indirect
209+
github.com/ipfs/go-log/v2 v2.9.1 // indirect
210+
github.com/ipld/go-ipld-prime v0.22.0 // indirect
211+
github.com/jackc/pgpassfile v1.0.0 // indirect
212+
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
213+
github.com/jackc/pgx/v5 v5.8.0 // indirect
214+
github.com/jackc/puddle/v2 v2.2.2 // indirect
215+
github.com/jackpal/go-nat-pmp v1.0.2 // indirect
216+
github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect
175217
github.com/jedisct1/go-minisign v0.0.0-20241212093149-d2f9f49435c7 // indirect
218+
github.com/jinzhu/inflection v1.0.0 // indirect
219+
github.com/jinzhu/now v1.1.5 // indirect
220+
github.com/joho/godotenv v1.5.1 // indirect
176221
github.com/json-iterator/go v1.1.12 // indirect
177222
github.com/kaptinlin/go-i18n v0.2.12 // indirect
178223
github.com/kaptinlin/jsonpointer v0.4.17 // indirect
179224
github.com/kaptinlin/jsonschema v0.7.6 // indirect
180225
github.com/kaptinlin/messageformat-go v0.4.18 // indirect
181226
github.com/klauspost/compress v1.18.4 // indirect
182227
github.com/klauspost/cpuid/v2 v2.3.0 // indirect
228+
github.com/koron/go-ssdp v0.1.0 // indirect
229+
github.com/lestrrat-go/blackmagic v1.0.4 // indirect
230+
github.com/lestrrat-go/httpcc v1.0.1 // indirect
231+
github.com/lestrrat-go/httprc v1.0.6 // indirect
232+
github.com/lestrrat-go/iter v1.0.2 // indirect
233+
github.com/lestrrat-go/jwx/v2 v2.1.6 // indirect
234+
github.com/lestrrat-go/option v1.0.1 // indirect
183235
github.com/letsencrypt/boulder v0.20260317.0 // indirect
184236
github.com/libp2p/go-buffer-pool v0.1.0 // indirect
237+
github.com/libp2p/go-cidranger v1.1.0 // indirect
238+
github.com/libp2p/go-flow-metrics v0.3.0 // indirect
185239
github.com/libp2p/go-libp2p v0.48.0 // indirect
240+
github.com/libp2p/go-libp2p-asn-util v0.4.1 // indirect
241+
github.com/libp2p/go-libp2p-gorpc v0.6.0 // indirect
242+
github.com/libp2p/go-libp2p-kad-dht v0.38.0 // indirect
243+
github.com/libp2p/go-libp2p-kbucket v0.8.0 // indirect
244+
github.com/libp2p/go-libp2p-pubsub v0.15.0 // indirect
245+
github.com/libp2p/go-libp2p-record v0.3.1 // indirect
246+
github.com/libp2p/go-libp2p-routing-helpers v0.7.5 // indirect
247+
github.com/libp2p/go-msgio v0.3.0 // indirect
248+
github.com/libp2p/go-netroute v0.4.0 // indirect
249+
github.com/libp2p/go-reuseport v0.4.0 // indirect
250+
github.com/libp2p/go-yamux/v5 v5.1.0 // indirect
251+
github.com/libp2p/zeroconf/v2 v2.2.0 // indirect
186252
github.com/lucasb-eyer/go-colorful v1.3.0 // indirect
187253
github.com/mailru/easyjson v0.9.2 // indirect
188254
github.com/mark3labs/mcp-filesystem-server v0.11.1 // indirect
189255
github.com/mark3labs/mcp-go v0.45.0 // indirect
190256
github.com/mark3labs/mcphost v0.34.0 // indirect
257+
github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect
191258
github.com/mattn/go-isatty v0.0.20 // indirect
192259
github.com/mattn/go-runewidth v0.0.21 // indirect
193260
github.com/microcosm-cc/bluemonday v1.0.27 // indirect
261+
github.com/miekg/dns v1.1.72 // indirect
194262
github.com/miekg/pkcs11 v1.1.2 // indirect
263+
github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect
264+
github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect
195265
github.com/minio/sha256-simd v1.0.1 // indirect
196266
github.com/mitchellh/go-homedir v1.1.0 // indirect
197267
github.com/moby/term v0.5.2 // indirect
@@ -206,19 +276,48 @@ require (
206276
github.com/multiformats/go-base32 v0.1.0 // indirect
207277
github.com/multiformats/go-base36 v0.2.0 // indirect
208278
github.com/multiformats/go-multiaddr v0.16.1 // indirect
279+
github.com/multiformats/go-multiaddr-dns v0.5.0 // indirect
280+
github.com/multiformats/go-multiaddr-fmt v0.1.0 // indirect
209281
github.com/multiformats/go-multibase v0.2.0 // indirect
210282
github.com/multiformats/go-multicodec v0.10.0 // indirect
211283
github.com/multiformats/go-multihash v0.2.3 // indirect
284+
github.com/multiformats/go-multistream v0.6.1 // indirect
212285
github.com/multiformats/go-varint v0.1.0 // indirect
213286
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
214287
github.com/nozzle/throttler v0.0.0-20180817012639-2ea982251481 // indirect
215288
github.com/oklog/ulid/v2 v2.1.1 // indirect
216289
github.com/openai/openai-go/v3 v3.29.0 // indirect
217290
github.com/opencontainers/go-digest v1.0.0 // indirect
218291
github.com/opencontainers/image-spec v1.1.1 // indirect
292+
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect
219293
github.com/pelletier/go-toml/v2 v2.2.4 // indirect
294+
github.com/pion/datachannel v1.6.0 // indirect
295+
github.com/pion/dtls/v3 v3.1.2 // indirect
296+
github.com/pion/ice/v4 v4.2.1 // indirect
297+
github.com/pion/interceptor v0.1.44 // indirect
298+
github.com/pion/logging v0.2.4 // indirect
299+
github.com/pion/mdns/v2 v2.1.0 // indirect
300+
github.com/pion/randutil v0.1.0 // indirect
301+
github.com/pion/rtcp v1.2.16 // indirect
302+
github.com/pion/rtp v1.10.1 // indirect
303+
github.com/pion/sctp v1.9.3 // indirect
304+
github.com/pion/sdp/v3 v3.0.18 // indirect
305+
github.com/pion/srtp/v3 v3.0.10 // indirect
306+
github.com/pion/stun/v3 v3.1.1 // indirect
307+
github.com/pion/transport/v4 v4.0.1 // indirect
308+
github.com/pion/turn/v4 v4.1.4 // indirect
309+
github.com/pion/webrtc/v4 v4.2.9 // indirect
220310
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
221311
github.com/pkg/errors v0.9.1 // indirect
312+
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
313+
github.com/polydawn/refmt v0.89.1-0.20231129105047-37766d95467a // indirect
314+
github.com/prometheus/client_golang v1.23.2 // indirect
315+
github.com/prometheus/client_model v0.6.2 // indirect
316+
github.com/prometheus/common v0.67.5 // indirect
317+
github.com/prometheus/procfs v0.20.1 // indirect
318+
github.com/quic-go/qpack v0.6.0 // indirect
319+
github.com/quic-go/quic-go v0.59.0 // indirect
320+
github.com/quic-go/webtransport-go v0.10.0 // indirect
222321
github.com/rivo/uniseg v0.4.7 // indirect
223322
github.com/sagikazarmark/locafero v0.12.0 // indirect
224323
github.com/sassoftware/relic v7.2.1+incompatible // indirect
@@ -238,6 +337,7 @@ require (
238337
github.com/spf13/afero v1.15.0 // indirect
239338
github.com/spf13/cast v1.10.0 // indirect
240339
github.com/spiffe/go-spiffe/v2 v2.6.0 // indirect
340+
github.com/stretchr/testify v1.11.1 // indirect
241341
github.com/subosito/gotenv v1.6.0 // indirect
242342
github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect
243343
github.com/thales-e-security/pool v0.0.2 // indirect
@@ -250,8 +350,11 @@ require (
250350
github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 // indirect
251351
github.com/transparency-dev/formats v0.1.0 // indirect
252352
github.com/transparency-dev/merkle v0.0.2 // indirect
353+
github.com/ugorji/go/codec v1.3.1 // indirect
253354
github.com/vbatts/tar-split v0.12.2 // indirect
355+
github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 // indirect
254356
github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect
357+
github.com/wlynxg/anet v0.0.5 // indirect
255358
github.com/x448/float16 v0.8.4 // indirect
256359
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
257360
github.com/yosida95/uritemplate/v3 v3.0.2 // indirect
@@ -264,6 +367,9 @@ require (
264367
go.opentelemetry.io/otel v1.42.0 // indirect
265368
go.opentelemetry.io/otel/metric v1.42.0 // indirect
266369
go.opentelemetry.io/otel/trace v1.42.0 // indirect
370+
go.uber.org/dig v1.19.0 // indirect
371+
go.uber.org/fx v1.24.0 // indirect
372+
go.uber.org/mock v0.6.0 // indirect
267373
go.uber.org/multierr v1.11.0 // indirect
268374
go.uber.org/zap v1.27.1 // indirect
269375
go.yaml.in/yaml/v2 v2.4.4 // indirect
@@ -275,17 +381,21 @@ require (
275381
golang.org/x/oauth2 v0.36.0 // indirect
276382
golang.org/x/sync v0.20.0 // indirect
277383
golang.org/x/sys v0.42.0 // indirect
384+
golang.org/x/telemetry v0.0.0-20260316223853-b6b0c46d1ccd // indirect
278385
golang.org/x/term v0.41.0 // indirect
279386
golang.org/x/text v0.35.0 // indirect
280387
golang.org/x/time v0.15.0 // indirect
281388
golang.org/x/tools v0.43.0 // indirect
389+
gonum.org/v1/gonum v0.17.0 // indirect
282390
google.golang.org/api v0.272.0 // indirect
283391
google.golang.org/genai v1.51.0 // indirect
284392
google.golang.org/genproto/googleapis/api v0.0.0-20260316180232-0b37fe3546d5 // indirect
285393
google.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5 // indirect
286394
gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
287395
gopkg.in/inf.v0 v0.9.1 // indirect
288396
gopkg.in/yaml.v3 v3.0.1 // indirect
397+
gorm.io/driver/postgres v1.6.0 // indirect
398+
gorm.io/gorm v1.31.1 // indirect
289399
k8s.io/api v0.35.3 // indirect
290400
k8s.io/apimachinery v0.35.3 // indirect
291401
k8s.io/client-go v0.35.3 // indirect

0 commit comments

Comments
 (0)