@@ -30,7 +30,7 @@ grafana:
30
30
"grafana.api_key" : "API_KEY" ,
31
31
}
32
32
33
- args , env := argsAndEnv (t , "grafana" , catalogYAML , configYAML , secrets )
33
+ args , env := argsAndEnv (t , "grafana" , catalogYAML , configYAML , secrets , nil )
34
34
35
35
assert .Equal (t , []string {
36
36
"run" , "--rm" , "-i" , "--init" , "--security-opt" , "no-new-privileges" , "--cpus" , "1" , "--memory" , "2Gb" , "--pull" , "never" ,
@@ -50,7 +50,7 @@ secrets:
50
50
"mongodb.connection_string" : "HOST:PORT" ,
51
51
}
52
52
53
- args , env := argsAndEnv (t , "mongodb" , catalogYAML , "" , secrets )
53
+ args , env := argsAndEnv (t , "mongodb" , catalogYAML , "" , secrets , nil )
54
54
55
55
assert .Equal (t , []string {
56
56
"run" , "--rm" , "-i" , "--init" , "--security-opt" , "no-new-privileges" , "--cpus" , "1" , "--memory" , "2Gb" , "--pull" , "never" ,
74
74
"notion.internal_integration_token" : "ntn_DUMMY" ,
75
75
}
76
76
77
- args , env := argsAndEnv (t , "notion" , catalogYAML , "" , secrets )
77
+ args , env := argsAndEnv (t , "notion" , catalogYAML , "" , secrets , nil )
78
78
79
79
assert .Equal (t , []string {
80
80
"run" , "--rm" , "-i" , "--init" , "--security-opt" , "no-new-privileges" , "--cpus" , "1" , "--memory" , "2Gb" , "--pull" , "never" ,
94
94
log_path: /local/logs
95
95
`
96
96
97
- args , env := argsAndEnv (t , "hub" , catalogYAML , configYAML , nil )
97
+ args , env := argsAndEnv (t , "hub" , catalogYAML , configYAML , nil , nil )
98
98
99
99
assert .Equal (t , []string {
100
100
"run" , "--rm" , "-i" , "--init" , "--security-opt" , "no-new-privileges" , "--cpus" , "1" , "--memory" , "2Gb" , "--pull" , "never" ,
@@ -110,7 +110,7 @@ volumes:
110
110
- '{{hub.log_path|mount_as:/logs:ro}}'
111
111
`
112
112
113
- args , env := argsAndEnv (t , "hub" , catalogYAML , "" , nil )
113
+ args , env := argsAndEnv (t , "hub" , catalogYAML , "" , nil , nil )
114
114
115
115
assert .Equal (t , []string {
116
116
"run" , "--rm" , "-i" , "--init" , "--security-opt" , "no-new-privileges" , "--cpus" , "1" , "--memory" , "2Gb" , "--pull" , "never" ,
@@ -119,7 +119,27 @@ volumes:
119
119
assert .Empty (t , env )
120
120
}
121
121
122
- func argsAndEnv (t * testing.T , name , catalogYAML , configYAML string , secrets map [string ]string ) ([]string , []string ) {
122
+ func TestApplyConfigMountAsReadOnly (t * testing.T ) {
123
+ catalogYAML := `
124
+ volumes:
125
+ - '{{hub.log_path|mount_as:/logs:ro}}'
126
+ `
127
+ configYAML := `
128
+ hub:
129
+ log_path: /local/logs
130
+ `
131
+
132
+ args , env := argsAndEnv (t , "hub" , catalogYAML , configYAML , nil , readOnly ())
133
+
134
+ assert .Equal (t , []string {
135
+ "run" , "--rm" , "-i" , "--init" , "--security-opt" , "no-new-privileges" , "--cpus" , "1" , "--memory" , "2Gb" , "--pull" , "never" ,
136
+ "-l" , "docker-mcp=true" , "-l" , "docker-mcp-tool-type=mcp" , "-l" , "docker-mcp-name=hub" , "-l" , "docker-mcp-transport=stdio" ,
137
+ "-v" , "/local/logs:/logs:ro" ,
138
+ }, args )
139
+ assert .Empty (t , env )
140
+ }
141
+
142
+ func argsAndEnv (t * testing.T , name , catalogYAML , configYAML string , secrets map [string ]string , readOnly * bool ) ([]string , []string ) {
123
143
t .Helper ()
124
144
125
145
clientPool := & clientPool {
@@ -133,7 +153,7 @@ func argsAndEnv(t *testing.T, name, catalogYAML, configYAML string, secrets map[
133
153
Spec : parseSpec (t , catalogYAML ),
134
154
Config : parseConfig (t , configYAML ),
135
155
Secrets : secrets ,
136
- }, nil , proxies.TargetConfig {})
156
+ }, readOnly , proxies.TargetConfig {})
137
157
}
138
158
139
159
func parseSpec (t * testing.T , contentYAML string ) catalog.Server {
@@ -151,3 +171,11 @@ func parseConfig(t *testing.T, contentYAML string) map[string]any {
151
171
require .NoError (t , err )
152
172
return config
153
173
}
174
+
175
+ func readOnly () * bool {
176
+ return boolPtr (true )
177
+ }
178
+
179
+ func boolPtr (b bool ) * bool {
180
+ return & b
181
+ }
0 commit comments