@@ -21,10 +21,12 @@ type mockNode struct{}
2121
2222func (m * mockNode ) GetStatus () neutrino.Status {
2323 return neutrino.Status {
24- Synced : true ,
25- BlockHeight : 8543 ,
26- FilterHeight : 8543 ,
27- Peers : 1 ,
24+ Synced : true ,
25+ BlockHeight : 8543 ,
26+ FilterHeight : 8543 ,
27+ Peers : 1 ,
28+ Version : testVersion ,
29+ WatchedAddresses : 3 ,
2830 }
2931}
3032
@@ -78,11 +80,13 @@ func (m *mockNode) RescanStatus() neutrino.RescanStatus {
7880 return neutrino.RescanStatus {}
7981}
8082
83+ const testVersion = "v0.10.1-test"
84+
8185func TestHandleGetStatus (t * testing.T ) {
8286 backend := btclog .NewBackend (os .Stdout )
8387 logger := backend .Logger ("TEST" )
8488
85- handler := NewHandler (& mockNode {}, logger )
89+ handler := NewHandler (& mockNode {}, logger , testVersion )
8690
8791 router := mux .NewRouter ()
8892 router .HandleFunc ("/v1/status" , handler .handleGetStatus ).Methods ("GET" )
@@ -119,6 +123,53 @@ func TestHandleGetStatus(t *testing.T) {
119123 if response .Peers != 1 {
120124 t .Errorf ("expected peers=1, got %v" , response .Peers )
121125 }
126+
127+ if response .Version != testVersion {
128+ t .Errorf ("expected version=%s, got %v" , testVersion , response .Version )
129+ }
130+
131+ if response .WatchedAddresses != 3 {
132+ t .Errorf ("expected watched_addresses=3, got %v" , response .WatchedAddresses )
133+ }
134+
135+ if got := rr .Header ().Get ("X-Neutrino-Version" ); got != testVersion {
136+ t .Errorf ("expected X-Neutrino-Version=%s, got %v" , testVersion , got )
137+ }
138+ }
139+
140+ func TestHandleGetVersion (t * testing.T ) {
141+ backend := btclog .NewBackend (os .Stdout )
142+ logger := backend .Logger ("TEST" )
143+
144+ handler := NewHandler (& mockNode {}, logger , testVersion )
145+
146+ router := mux .NewRouter ()
147+ router .HandleFunc ("/v1/version" , handler .handleGetVersion ).Methods ("GET" )
148+
149+ req , err := http .NewRequest ("GET" , "/v1/version" , nil )
150+ if err != nil {
151+ t .Fatal (err )
152+ }
153+
154+ rr := httptest .NewRecorder ()
155+ router .ServeHTTP (rr , req )
156+
157+ if status := rr .Code ; status != http .StatusOK {
158+ t .Errorf ("handler returned wrong status code: got %v want %v" , status , http .StatusOK )
159+ }
160+
161+ var response map [string ]any
162+ if err := json .Unmarshal (rr .Body .Bytes (), & response ); err != nil {
163+ t .Fatalf ("could not decode response: %v" , err )
164+ }
165+
166+ if response ["version" ] != testVersion {
167+ t .Errorf ("expected version=%s, got %v" , testVersion , response ["version" ])
168+ }
169+
170+ if got := rr .Header ().Get ("X-Neutrino-Version" ); got != testVersion {
171+ t .Errorf ("expected X-Neutrino-Version=%s, got %v" , testVersion , got )
172+ }
122173}
123174
124175func TestHandleBroadcastTransaction_InvalidJSON (t * testing.T ) {
@@ -584,6 +635,12 @@ func TestHandleGetRescanStatus_NotInProgress(t *testing.T) {
584635 if _ , ok := response ["last_scanned_tip" ]; ! ok {
585636 t .Error ("expected last_scanned_tip in response" )
586637 }
638+ if watched , ok := response ["watched_addresses" ].(float64 ); ! ok || int (watched ) != 3 {
639+ t .Errorf ("expected watched_addresses=3, got %v" , response ["watched_addresses" ])
640+ }
641+ if version , ok := response ["server_version" ].(string ); ! ok || version != testVersion {
642+ t .Errorf ("expected server_version=%s, got %v" , testVersion , response ["server_version" ])
643+ }
587644}
588645
589646func TestLoggingMiddleware_Success (t * testing.T ) {
0 commit comments