@@ -36,6 +36,50 @@ func TestMigrateTemplates(t *testing.T) {
3636 "secrethub://org/repo/dir/password" : "op://vault/item/password" ,
3737 },
3838 },
39+ "json no whitespaces" : {
40+ in : `
41+ {
42+ "db_host": "db.internal",
43+ "db_user": "{{org/repo/dir/user}}",
44+ "db_password": "{{org/repo/dir/password}}",
45+ "db_port": 5432
46+ }
47+ ` ,
48+ expected : `
49+ {
50+ "db_host": "db.internal",
51+ "db_user": "{{ op://vault/item/user }}",
52+ "db_password": "{{ op://vault/item/password }}",
53+ "db_port": 5432
54+ }
55+ ` ,
56+ mapping : map [string ]string {
57+ "secrethub://org/repo/dir/user" : "op://vault/item/user" ,
58+ "secrethub://org/repo/dir/password" : "op://vault/item/password" ,
59+ },
60+ },
61+ "json one whitespaces" : {
62+ in : `
63+ {
64+ "db_host": "db.internal",
65+ "db_user": "{{org/repo/dir/user }}",
66+ "db_password": "{{ org/repo/dir/password}}",
67+ "db_port": 5432
68+ }
69+ ` ,
70+ expected : `
71+ {
72+ "db_host": "db.internal",
73+ "db_user": "{{ op://vault/item/user }}",
74+ "db_password": "{{ op://vault/item/password }}",
75+ "db_port": 5432
76+ }
77+ ` ,
78+ mapping : map [string ]string {
79+ "secrethub://org/repo/dir/user" : "op://vault/item/user" ,
80+ "secrethub://org/repo/dir/password" : "op://vault/item/password" ,
81+ },
82+ },
3983 "yaml" : {
4084 in : `
4185 db_host: db.internal
@@ -89,6 +133,52 @@ func TestMigrateTemplates(t *testing.T) {
89133 "env" : {"dev" , "prod" },
90134 },
91135 },
136+ "with vars no whitespaces" : {
137+ in : `
138+ db_host: db.internal
139+ db_user: "{{org/repo/$env/dir/user}}"
140+ db_password: {{org/repo/$env/dir/password}}
141+ db_port: 5432
142+ ` ,
143+ expected : `
144+ db_host: db.internal
145+ db_user: "{{ op://vault-$ENV/item/user }}"
146+ db_password: {{ op://vault-$ENV/item/password }}
147+ db_port: 5432
148+ ` ,
149+ mapping : map [string ]string {
150+ "secrethub://org/repo/prod/dir/user" : "op://vault-prod/item/user" ,
151+ "secrethub://org/repo/prod/dir/password" : "op://vault-prod/item/password" ,
152+ "secrethub://org/repo/dev/dir/user" : "op://vault-dev/item/user" ,
153+ "secrethub://org/repo/dev/dir/password" : "op://vault-dev/item/password" ,
154+ },
155+ vars : map [string ][]string {
156+ "env" : {"dev" , "prod" },
157+ },
158+ },
159+ "with vars one whitespaces" : {
160+ in : `
161+ db_host: db.internal
162+ db_user: "{{ org/repo/$env/dir/user}}"
163+ db_password: {{org/repo/$env/dir/password }}
164+ db_port: 5432
165+ ` ,
166+ expected : `
167+ db_host: db.internal
168+ db_user: "{{ op://vault-$ENV/item/user }}"
169+ db_password: {{ op://vault-$ENV/item/password }}
170+ db_port: 5432
171+ ` ,
172+ mapping : map [string ]string {
173+ "secrethub://org/repo/prod/dir/user" : "op://vault-prod/item/user" ,
174+ "secrethub://org/repo/prod/dir/password" : "op://vault-prod/item/password" ,
175+ "secrethub://org/repo/dev/dir/user" : "op://vault-dev/item/user" ,
176+ "secrethub://org/repo/dev/dir/password" : "op://vault-dev/item/password" ,
177+ },
178+ vars : map [string ][]string {
179+ "env" : {"dev" , "prod" },
180+ },
181+ },
92182 "no op" : {
93183 in : `
94184 db_user: "db-user"
@@ -146,6 +236,42 @@ func TestMigrateEnvfile(t *testing.T) {
146236 "secrethub://org/repo/dir/password" : "op://vault/item/password" ,
147237 },
148238 },
239+ "envfile no whitespaces" : {
240+ in : `
241+ DB_HOST=db.internal
242+ DB_USER={{org/repo/dir/user}}
243+ DB_PASSWORD={{org/repo/dir/password}}
244+ DB_PORT=5432
245+ ` ,
246+ expected : `
247+ DB_HOST=db.internal
248+ DB_USER=op://vault/item/user
249+ DB_PASSWORD=op://vault/item/password
250+ DB_PORT=5432
251+ ` ,
252+ mapping : map [string ]string {
253+ "secrethub://org/repo/dir/user" : "op://vault/item/user" ,
254+ "secrethub://org/repo/dir/password" : "op://vault/item/password" ,
255+ },
256+ },
257+ "envfile one whitespace" : {
258+ in : `
259+ DB_HOST=db.internal
260+ DB_USER={{org/repo/dir/user }}
261+ DB_PASSWORD={{ org/repo/dir/password}}
262+ DB_PORT=5432
263+ ` ,
264+ expected : `
265+ DB_HOST=db.internal
266+ DB_USER=op://vault/item/user
267+ DB_PASSWORD=op://vault/item/password
268+ DB_PORT=5432
269+ ` ,
270+ mapping : map [string ]string {
271+ "secrethub://org/repo/dir/user" : "op://vault/item/user" ,
272+ "secrethub://org/repo/dir/password" : "op://vault/item/password" ,
273+ },
274+ },
149275 "with comments" : {
150276 in : `
151277 # Database config
@@ -202,6 +328,52 @@ func TestMigrateEnvfile(t *testing.T) {
202328 "env" : {"dev" , "prod" },
203329 },
204330 },
331+ "with vars no whitespaces" : {
332+ in : `
333+ DB_HOST=db.internal
334+ DB_USER={{org/repo/$env/dir/user}}
335+ DB_PASSWORD={{org/repo/$env/dir/password}}
336+ DB_PORT=5432
337+ ` ,
338+ expected : `
339+ DB_HOST=db.internal
340+ DB_USER=op://vault-$ENV/item/user
341+ DB_PASSWORD=op://vault-$ENV/item/password
342+ DB_PORT=5432
343+ ` ,
344+ mapping : map [string ]string {
345+ "secrethub://org/repo/prod/dir/user" : "op://vault-prod/item/user" ,
346+ "secrethub://org/repo/prod/dir/password" : "op://vault-prod/item/password" ,
347+ "secrethub://org/repo/dev/dir/user" : "op://vault-dev/item/user" ,
348+ "secrethub://org/repo/dev/dir/password" : "op://vault-dev/item/password" ,
349+ },
350+ vars : map [string ][]string {
351+ "env" : {"dev" , "prod" },
352+ },
353+ },
354+ "with vars one whitespace" : {
355+ in : `
356+ DB_HOST=db.internal
357+ DB_USER={{org/repo/$env/dir/user }}
358+ DB_PASSWORD={{ org/repo/$env/dir/password}}
359+ DB_PORT=5432
360+ ` ,
361+ expected : `
362+ DB_HOST=db.internal
363+ DB_USER=op://vault-$ENV/item/user
364+ DB_PASSWORD=op://vault-$ENV/item/password
365+ DB_PORT=5432
366+ ` ,
367+ mapping : map [string ]string {
368+ "secrethub://org/repo/prod/dir/user" : "op://vault-prod/item/user" ,
369+ "secrethub://org/repo/prod/dir/password" : "op://vault-prod/item/password" ,
370+ "secrethub://org/repo/dev/dir/user" : "op://vault-dev/item/user" ,
371+ "secrethub://org/repo/dev/dir/password" : "op://vault-dev/item/password" ,
372+ },
373+ vars : map [string ][]string {
374+ "env" : {"dev" , "prod" },
375+ },
376+ },
205377 "composite secrets" : {
206378 in : `
207379 DB_ADDRESS={{ org/repo/dir/host }}:5432
0 commit comments