88 "net/http"
99 "net/http/httptest"
1010 "os"
11+ "slices"
1112 "testing"
1213
1314 "github.com/ethereum/go-ethereum/common"
@@ -24,9 +25,105 @@ func TestCreateMultipleBuilders(t *testing.T) {
2425 }
2526 s , _ , _ := createServer (t )
2627
27- createBuilder (t , s , "test-builder-1" , "127.0.0.1" )
28- createBuilder (t , s , "test-builder-2" , "127.0.0.2" )
29- createBuilder (t , s , "test-builder-3" , "127.0.0.3" )
28+ createBuilder (t , s , "test-builder-1" , "127.0.0.1" , domain .ProductionNetwork )
29+ createBuilder (t , s , "test-builder-2" , "127.0.0.2" , domain .ProductionNetwork )
30+ createBuilder (t , s , "test-builder-3" , "127.0.0.3" , domain .ProductionNetwork )
31+ }
32+
33+ func TestCreateMultipleNetworkBuilders (t * testing.T ) {
34+ if os .Getenv ("RUN_DB_TESTS" ) != "1" {
35+ t .Skip ("skipping test; RUN_DB_TESTS is not set to 1" )
36+ }
37+ s , _ , _ := createServer (t )
38+
39+ createBuilder (t , s , "production-1" , "127.0.0.1" , domain .ProductionNetwork )
40+ createBuilder (t , s , "production-2" , "127.0.0.2" , domain .ProductionNetwork )
41+ createBuilder (t , s , "production-3" , "127.0.0.3" , domain .ProductionNetwork )
42+
43+ createBuilder (t , s , "test-1" , "127.0.1.1" , "test-network" )
44+ createBuilder (t , s , "test-2" , "127.0.1.2" , "test-network" )
45+ createBuilder (t , s , "test-3" , "127.0.1.3" , "test-network" )
46+ createBuilder (t , s , "test-4" , "127.0.1.4" , "test-network" )
47+
48+ measurement := ports.Measurement {
49+ Name : "test-measurement-1" ,
50+ AttestationType : "test-attestation-type-1" ,
51+ Measurements : map [string ]domain.SingleMeasurement {
52+ "8" : {
53+ Expected : "0000000000000000000000000000000000000000000000000000000000000000" ,
54+ },
55+ "11" : {
56+ Expected : "efa43e0beff151b0f251c4abf48152382b1452b4414dbd737b4127de05ca31f7" ,
57+ },
58+ },
59+ }
60+ createMeasurement (t , s , measurement )
61+
62+ t .Run ("NoAuthV1" , func (t * testing.T ) {
63+ var resp []ports.BuilderWithServiceCreds
64+ sc , _ := execRequestNoAuth (t , s .GetInternalRouter (), http .MethodGet , "/api/internal/l1-builder/v1/builders" , nil , & resp )
65+ require .Equal (t , http .StatusOK , sc )
66+ require .Len (t , resp , 3 )
67+ validNames := []string {"production-1" , "production-2" , "production-3" }
68+ for _ , b := range resp {
69+ if ! slices .Contains (validNames , b .Name ) {
70+ require .Fail (t , "Builder not found" )
71+ }
72+ }
73+ })
74+
75+ t .Run ("NoAuthV2 Networked" , func (t * testing.T ) {
76+ var resp []ports.BuilderWithServiceCreds
77+ sc , _ := execRequestNoAuth (t , s .GetInternalRouter (), http .MethodGet , fmt .Sprintf ("/api/internal/l1-builder/v2/network/%s/builders" , domain .ProductionNetwork ), nil , & resp )
78+ require .Equal (t , http .StatusOK , sc )
79+ require .Len (t , resp , 3 )
80+ validNames := []string {"production-1" , "production-2" , "production-3" }
81+ for _ , b := range resp {
82+ if ! slices .Contains (validNames , b .Name ) {
83+ require .Fail (t , "Builder not found" )
84+ }
85+ }
86+ })
87+
88+ t .Run ("NoAuthV2 Networked other network" , func (t * testing.T ) {
89+ var resp []ports.BuilderWithServiceCreds
90+ sc , _ := execRequestNoAuth (t , s .GetInternalRouter (), http .MethodGet , fmt .Sprintf ("/api/internal/l1-builder/v2/network/%s/builders" , "test-network" ), nil , & resp )
91+ require .Equal (t , http .StatusOK , sc )
92+ require .Len (t , resp , 4 )
93+ validNames := []string {"test-1" , "test-2" , "test-3" , "test-4" }
94+ for _ , b := range resp {
95+ if ! slices .Contains (validNames , b .Name ) {
96+ require .Fail (t , "Builder not found" )
97+ }
98+ }
99+ })
100+
101+ t .Run ("Auth active builders prod" , func (t * testing.T ) {
102+ resp := make ([]ports.BuilderWithServiceCreds , 0 )
103+ status , _ := execRequestAuth (t , s .GetRouter (), http .MethodGet , "/api/l1-builder/v1/builders" , nil , & resp , measurement .AttestationType , map [string ]string {"8" : "0000000000000000000000000000000000000000000000000000000000000000" , "11" : "efa43e0beff151b0f251c4abf48152382b1452b4414dbd737b4127de05ca31f7" }, "127.0.0.1" )
104+ require .Equal (t , http .StatusOK , status )
105+ require .Len (t , resp , 3 )
106+ validNames := []string {"production-1" , "production-2" , "production-3" }
107+ for _ , b := range resp {
108+ if ! slices .Contains (validNames , b .Name ) {
109+ require .Fail (t , "Builder not found" )
110+ }
111+ }
112+ })
113+
114+ t .Run ("Auth active builders other network" , func (t * testing.T ) {
115+ resp := make ([]ports.BuilderWithServiceCreds , 0 )
116+ status , _ := execRequestAuth (t , s .GetRouter (), http .MethodGet , "/api/l1-builder/v1/builders" , nil , & resp , measurement .AttestationType , map [string ]string {"8" : "0000000000000000000000000000000000000000000000000000000000000000" , "11" : "efa43e0beff151b0f251c4abf48152382b1452b4414dbd737b4127de05ca31f7" }, "127.0.1.1" )
117+ require .Equal (t , http .StatusOK , status )
118+ require .Len (t , resp , 4 )
119+ validNames := []string {"test-1" , "test-2" , "test-3" , "test-4" }
120+ for _ , b := range resp {
121+ if ! slices .Contains (validNames , b .Name ) {
122+ require .Fail (t , "Builder not found" )
123+ }
124+ }
125+ })
126+
30127}
31128
32129func TestCreateMultipleMeasurements (t * testing.T ) {
@@ -70,7 +167,7 @@ func TestAuthInteractionFlow(t *testing.T) {
70167
71168 builderName := "test_builder_1"
72169 ip := "127.0.0.1"
73- createBuilder (t , s , builderName , ip )
170+ createBuilder (t , s , builderName , ip , domain . ProductionNetwork )
74171 measurement := ports.Measurement {
75172 Name : "test-measurement-1" ,
76173 AttestationType : "test-attestation-type-1" ,
@@ -131,10 +228,11 @@ func TestAuthInteractionFlow(t *testing.T) {
131228}
132229
133230// createBuilder emulates admin flow to provision a builder
134- func createBuilder (t * testing.T , s * Server , builderName , ip string ) {
231+ func createBuilder (t * testing.T , s * Server , builderName , ip , network string ) {
135232 builder := ports.Builder {
136233 Name : builderName ,
137234 IPAddress : ip ,
235+ Network : network ,
138236 }
139237 t .Run ("CreateBuilder" , func (t * testing.T ) {
140238 sc , _ := execRequestNoAuth (t , s .GetAdminRouter (), http .MethodPost , "/api/admin/v1/builders" , builder , nil )
@@ -161,7 +259,7 @@ func createBuilder(t *testing.T, s *Server, builderName, ip string) {
161259 t .Run ("CheckBuilder" , func (t * testing.T ) {
162260 // Check if the builder is created
163261 var resp []ports.BuilderWithServiceCreds
164- sc , _ := execRequestNoAuth (t , s .GetInternalRouter (), http .MethodGet , "/api/internal/l1-builder/v1/ builders" , nil , & resp )
262+ sc , _ := execRequestNoAuth (t , s .GetInternalRouter (), http .MethodGet , fmt . Sprintf ( "/api/internal/l1-builder/v2/network/%s/ builders" , network ) , nil , & resp )
165263 require .Equal (t , http .StatusOK , sc )
166264 // require.Len(t, resp, 1)
167265 for _ , b := range resp {
0 commit comments