@@ -6,10 +6,16 @@ import (
66
77 "github.com/docker/app/types"
88 composetypes "github.com/docker/cli/cli/compose/types"
9+ yaml "gopkg.in/yaml.v2"
910 "gotest.tools/assert"
1011 is "gotest.tools/assert/cmp"
1112)
1213
14+ const (
15+ validMeta = `version: "0.1"
16+ name: my-app`
17+ )
18+
1319func TestRenderMissingValue (t * testing.T ) {
1420 configFiles := []composetypes.ConfigFile {
1521 {
@@ -80,9 +86,57 @@ func TestRenderEnabledFalse(t *testing.T) {
8086 }
8187}
8288
89+ func TestRenderUserSettings (t * testing.T ) {
90+ metadata := strings .NewReader (validMeta )
91+ composeFile := strings .NewReader (`
92+ version: "3.6"
93+ services:
94+ front:
95+ image: ${front.image}
96+ ports:
97+ - "${front.port}:80"
98+ back:
99+ image: ${back.image}
100+ ` )
101+ settings := strings .NewReader (`
102+ front:
103+ image: wrong
104+ port: 8484
105+ back:
106+ image: wrong
107+ ` )
108+ app := & types.App {Path : "my-app" }
109+ err := types .Metadata (metadata )(app )
110+ assert .NilError (t , err )
111+ err = types .WithComposes (composeFile )(app )
112+ assert .NilError (t , err )
113+ err = types .WithSettings (settings )(app )
114+ assert .NilError (t , err )
115+ userSettings := map [string ]string {
116+ "front.image" : "nginx" ,
117+ "front.port" : "4242" ,
118+ "back.image" : "myapp" ,
119+ }
120+ c , err := Render (app , userSettings )
121+ assert .NilError (t , err )
122+ s , err := yaml .Marshal (c )
123+ assert .NilError (t , err )
124+ assert .Equal (t , string (s ), `version: "3.6"
125+ services:
126+ back:
127+ image: myapp
128+ front:
129+ image: nginx
130+ ports:
131+ - mode: ingress
132+ target: 80
133+ published: 4242
134+ protocol: tcp
135+ ` )
136+ }
137+
83138func TestValidateBrokenComposeFile (t * testing.T ) {
84- metadata := strings .NewReader (`version: "0.1"
85- name: myname` )
139+ metadata := strings .NewReader (validMeta )
86140 brokenComposeFile := strings .NewReader (`version: "3.6"
87141unknown-property: value` )
88142 app := & types.App {Path : "my-app" }
@@ -96,8 +150,7 @@ unknown-property: value`)
96150}
97151
98152func TestValidateRenderedApplication (t * testing.T ) {
99- metadata := strings .NewReader (`version: "0.1"
100- name: myname` )
153+ metadata := strings .NewReader (validMeta )
101154 composeFile := strings .NewReader (`
102155version: "3.6"
103156services:
0 commit comments