@@ -328,3 +328,150 @@ func TestServerInfoEqual(t *testing.T) {
328328 })
329329 }
330330}
331+
332+ // TestServerRegistrationEvents tests that ServerRegisteredEvent and ServerUnregisteredEvent
333+ // are fired when servers are registered and unregistered.
334+ func TestServerRegistrationEvents (t * testing.T ) {
335+ eventMgr := event .New ()
336+
337+ // Track events
338+ var registeredServers []string
339+ var unregisteredServers []string
340+
341+ // Subscribe to ServerRegisteredEvent
342+ event .Subscribe (eventMgr , 0 , func (e * ServerRegisteredEvent ) {
343+ registeredServers = append (registeredServers , e .Server ().ServerInfo ().Name ())
344+ })
345+
346+ // Subscribe to ServerUnregisteredEvent
347+ event .Subscribe (eventMgr , 0 , func (e * ServerUnregisteredEvent ) {
348+ unregisteredServers = append (unregisteredServers , e .ServerInfo ().Name ())
349+ })
350+
351+ // Create proxy with event manager
352+ cfg := & config.Config {
353+ Servers : map [string ]string {},
354+ Lite : liteconfig.Config {Enabled : false },
355+ }
356+
357+ authenticator , err := auth .New (auth.Options {})
358+ if err != nil {
359+ t .Fatalf ("Failed to create authenticator: %v" , err )
360+ }
361+
362+ proxy := & Proxy {
363+ log : logr .Discard (),
364+ cfg : cfg ,
365+ event : eventMgr ,
366+ servers : make (map [string ]* registeredServer ),
367+ configServers : make (map [string ]bool ),
368+ authenticator : authenticator ,
369+ }
370+
371+ // Register a server
372+ serverInfo := NewServerInfo ("test-server" , mustParseAddr ("localhost:25565" ))
373+ _ , err = proxy .Register (serverInfo )
374+ if err != nil {
375+ t .Fatalf ("Failed to register server: %v" , err )
376+ }
377+
378+ // Wait for event to process
379+ eventMgr .Wait ()
380+
381+ // Verify ServerRegisteredEvent was fired
382+ if len (registeredServers ) != 1 {
383+ t .Errorf ("Expected 1 registered event, got %d" , len (registeredServers ))
384+ }
385+ if len (registeredServers ) > 0 && registeredServers [0 ] != "test-server" {
386+ t .Errorf ("Expected registered server to be 'test-server', got '%s'" , registeredServers [0 ])
387+ }
388+
389+ // Unregister the server
390+ if ! proxy .Unregister (serverInfo ) {
391+ t .Fatal ("Failed to unregister server" )
392+ }
393+
394+ // Wait for event to process
395+ eventMgr .Wait ()
396+
397+ // Verify ServerUnregisteredEvent was fired
398+ if len (unregisteredServers ) != 1 {
399+ t .Errorf ("Expected 1 unregistered event, got %d" , len (unregisteredServers ))
400+ }
401+ if len (unregisteredServers ) > 0 && unregisteredServers [0 ] != "test-server" {
402+ t .Errorf ("Expected unregistered server to be 'test-server', got '%s'" , unregisteredServers [0 ])
403+ }
404+ }
405+
406+ // TestServerRegistrationEventsMultiple tests that events are fired for multiple server operations
407+ func TestServerRegistrationEventsMultiple (t * testing.T ) {
408+ eventMgr := event .New ()
409+
410+ // Track events
411+ registeredCount := 0
412+ unregisteredCount := 0
413+
414+ // Subscribe to events
415+ event .Subscribe (eventMgr , 0 , func (e * ServerRegisteredEvent ) {
416+ registeredCount ++
417+ })
418+
419+ event .Subscribe (eventMgr , 0 , func (e * ServerUnregisteredEvent ) {
420+ unregisteredCount ++
421+ })
422+
423+ // Create proxy with event manager
424+ cfg := & config.Config {
425+ Servers : map [string ]string {},
426+ Lite : liteconfig.Config {Enabled : false },
427+ }
428+
429+ authenticator , err := auth .New (auth.Options {})
430+ if err != nil {
431+ t .Fatalf ("Failed to create authenticator: %v" , err )
432+ }
433+
434+ proxy := & Proxy {
435+ log : logr .Discard (),
436+ cfg : cfg ,
437+ event : eventMgr ,
438+ servers : make (map [string ]* registeredServer ),
439+ configServers : make (map [string ]bool ),
440+ authenticator : authenticator ,
441+ }
442+
443+ // Register multiple servers
444+ servers := []ServerInfo {
445+ NewServerInfo ("server1" , mustParseAddr ("localhost:25565" )),
446+ NewServerInfo ("server2" , mustParseAddr ("localhost:25566" )),
447+ NewServerInfo ("server3" , mustParseAddr ("localhost:25567" )),
448+ }
449+
450+ for _ , s := range servers {
451+ _ , err := proxy .Register (s )
452+ if err != nil {
453+ t .Fatalf ("Failed to register server %s: %v" , s .Name (), err )
454+ }
455+ }
456+
457+ eventMgr .Wait ()
458+
459+ // Verify all registration events were fired
460+ if registeredCount != 3 {
461+ t .Errorf ("Expected 3 registered events, got %d" , registeredCount )
462+ }
463+
464+ // Unregister all servers
465+ for _ , s := range servers {
466+ if ! proxy .Unregister (s ) {
467+ t .Errorf ("Failed to unregister server %s" , s .Name ())
468+ }
469+ }
470+
471+ eventMgr .Wait ()
472+
473+ // Verify all unregistration events were fired
474+ if unregisteredCount != 3 {
475+ t .Errorf ("Expected 3 unregistered events, got %d" , unregisteredCount )
476+ }
477+ }
0 commit comments