99
1010final class EnvArtisanTest extends TestCase
1111{
12- private $ env_vars_empty = ['APP_NAME ' , 'APP_ENV ' , 'APP_KEY ' , 'APP_DEBUG ' , 'APP_URL ' , 'LOG_CHANNEL ' , 'DB_CONNECTION ' , 'DB_HOST ' , 'DB_PORT ' , 'DB_DATABASE ' , 'DB_USERNAME ' , 'DB_PASSWORD ' , 'BROADCAST_DRIVER ' , 'CACHE_DRIVER ' , 'QUEUE_CONNECTION ' , 'SESSION_DRIVER ' , 'SESSION_LIFETIME ' , 'REDIS_HOST ' , 'REDIS_PASSWORD ' , 'REDIS_PORT ' , 'MAIL_MAILER ' , 'MAIL_HOST ' , 'MAIL_PORT ' , 'MAIL_USERNAME ' , 'MAIL_PASSWORD ' , 'MAIL_ENCRYPTION ' , 'MAIL_FROM_ADDRESS ' , 'MAIL_FROM_NAME ' , 'AWS_ACCESS_KEY_ID ' , 'AWS_SECRET_ACCESS_KEY ' , 'AWS_DEFAULT_REGION ' , 'AWS_BUCKET ' , 'PUSHER_APP_ID ' , 'PUSHER_APP_KEY ' , 'PUSHER_APP_SECRET ' , 'PUSHER_APP_CLUSTER ' , 'MIX_PUSHER_APP_KEY ' , 'MIX_PUSHER_APP_CLUSTER ' , 'dummy_variable ' ];
13- private $ _env_vars = ['APP_NAME ' => 'Laravel ' , 'APP_ENV ' => 'local ' , 'APP_KEY ' => '' , 'APP_DEBUG ' => 'true ' , 'APP_URL ' => 'http://localhost ' , 'LOG_CHANNEL ' => 'stack ' , 'DB_CONNECTION ' => 'mysql ' , 'DB_HOST ' => '127.0.0.1 ' , 'DB_PORT ' => '3306 ' , 'DB_DATABASE ' => 'laravel ' , 'DB_USERNAME ' => 'root ' , 'DB_PASSWORD ' => '' , 'BROADCAST_DRIVER ' => 'log ' , 'CACHE_DRIVER ' => 'file ' , 'QUEUE_CONNECTION ' => 'sync ' , 'SESSION_DRIVER ' => 'file ' , 'SESSION_LIFETIME ' => '120 ' , 'REDIS_HOST ' => '127.0.0.1 ' , 'REDIS_PASSWORD ' => 'null ' , 'REDIS_PORT ' => '6379 ' , 'MAIL_MAILER ' => 'smtp ' , 'MAIL_HOST ' => 'smtp.mailtrap.io ' , 'MAIL_PORT ' => '2525 ' , 'MAIL_USERNAME ' => 'null ' , 'MAIL_PASSWORD ' => 'null ' , 'MAIL_ENCRYPTION ' => 'null ' , 'MAIL_FROM_ADDRESS ' => 'null ' , 'MAIL_FROM_NAME ' => '${APP_NAME} ' , 'AWS_ACCESS_KEY_ID ' => '' , 'AWS_SECRET_ACCESS_KEY ' => '' , 'AWS_DEFAULT_REGION ' => 'us-east-1 ' , 'AWS_BUCKET ' => '' , 'PUSHER_APP_ID ' => '' , 'PUSHER_APP_KEY ' => '' , 'PUSHER_APP_SECRET ' => '' , 'PUSHER_APP_CLUSTER ' => 'mt1 ' , 'MIX_PUSHER_APP_KEY ' => '${PUSHER_APP_KEY} ' , 'MIX_PUSHER_APP_CLUSTER ' => '${PUSHER_APP_CLUSTER} ' , 'dummy_variable ' => 'Adf4$r-Ac" ' ];
12+ private $ env_vars_empty = ['APP_NAME ' , 'APP_ENV ' , 'APP_KEY ' , 'APP_DEBUG ' , 'APP_URL ' , 'LOG_CHANNEL ' , 'DB_CONNECTION ' , 'DB_HOST ' , 'DB_PORT ' , 'DB_DATABASE ' , 'DB_USERNAME ' , 'DB_PASSWORD ' , 'BROADCAST_DRIVER ' , 'CACHE_DRIVER ' , 'QUEUE_CONNECTION ' , 'SESSION_DRIVER ' , 'SESSION_LIFETIME ' , 'REDIS_HOST ' , 'REDIS_PASSWORD ' , 'REDIS_PORT ' , 'MAIL_MAILER ' , 'MAIL_HOST ' , 'MAIL_PORT ' , 'MAIL_USERNAME ' , 'MAIL_PASSWORD ' , 'MAIL_ENCRYPTION ' , 'MAIL_FROM_ADDRESS ' , 'MAIL_FROM_NAME ' , 'AWS_ACCESS_KEY_ID ' , 'AWS_SECRET_ACCESS_KEY ' , 'AWS_DEFAULT_REGION ' , 'AWS_BUCKET ' , 'PUSHER_APP_ID ' , 'PUSHER_APP_KEY ' , 'PUSHER_APP_SECRET ' , 'PUSHER_APP_CLUSTER ' , 'MIX_PUSHER_APP_KEY ' , 'MIX_PUSHER_APP_CLUSTER ' , 'DUMMY_VARIABLE ' ];
13+ private $ _env_vars = ['APP_NAME ' => 'Laravel ' , 'APP_ENV ' => 'local ' , 'APP_KEY ' => '' , 'APP_DEBUG ' => 'true ' , 'APP_URL ' => 'http://localhost ' , 'LOG_CHANNEL ' => 'stack ' , 'DB_CONNECTION ' => 'mysql ' , 'DB_HOST ' => '127.0.0.1 ' , 'DB_PORT ' => '3306 ' , 'DB_DATABASE ' => 'laravel ' , 'DB_USERNAME ' => 'root ' , 'DB_PASSWORD ' => '' , 'BROADCAST_DRIVER ' => 'log ' , 'CACHE_DRIVER ' => 'file ' , 'QUEUE_CONNECTION ' => 'sync ' , 'SESSION_DRIVER ' => 'file ' , 'SESSION_LIFETIME ' => '120 ' , 'REDIS_HOST ' => '127.0.0.1 ' , 'REDIS_PASSWORD ' => 'null ' , 'REDIS_PORT ' => '6379 ' , 'MAIL_MAILER ' => 'smtp ' , 'MAIL_HOST ' => 'smtp.mailtrap.io ' , 'MAIL_PORT ' => '2525 ' , 'MAIL_USERNAME ' => 'null ' , 'MAIL_PASSWORD ' => 'null ' , 'MAIL_ENCRYPTION ' => 'null ' , 'MAIL_FROM_ADDRESS ' => 'null ' , 'MAIL_FROM_NAME ' => '${APP_NAME} ' , 'AWS_ACCESS_KEY_ID ' => '' , 'AWS_SECRET_ACCESS_KEY ' => '' , 'AWS_DEFAULT_REGION ' => 'us-east-1 ' , 'AWS_BUCKET ' => '' , 'PUSHER_APP_ID ' => '' , 'PUSHER_APP_KEY ' => '' , 'PUSHER_APP_SECRET ' => '' , 'PUSHER_APP_CLUSTER ' => 'mt1 ' , 'MIX_PUSHER_APP_KEY ' => '${PUSHER_APP_KEY} ' , 'MIX_PUSHER_APP_CLUSTER ' => '${PUSHER_APP_CLUSTER} ' , 'DUMMY_VARIABLE ' => 'Adf4$r-Ac\" ' ];
1414
1515 public function setUp (): void
1616 {
@@ -99,11 +99,11 @@ public function testEnvArtisanSetAllKeyValueArgs(): void
9999 }
100100
101101 foreach ($ this ->env_vars_empty as $ key => $ val ) {
102- $ this ->artisan ('env:set ' , ['key ' => $ key , 'value ' => $ val ])
103- ->expectsOutput ("Environment variable with key ' {$ key }' has been set to ' {$ val }' " )
102+ $ this ->artisan ('env:set ' , ['key ' => ' A_ ' . $ key , 'value ' => $ val ])
103+ ->expectsOutput ("Environment variable with key 'A_ {$ key }' has been set to ' {$ val }' " )
104104 ->assertExitCode (0 );
105105
106- $ this ->artisan ('env:get ' , ['key ' => $ key ])
106+ $ this ->artisan ('env:get ' , ['key ' => ' A_ ' . $ key ])
107107 ->expectsOutput ($ val )
108108 ->assertExitCode (0 );
109109 }
@@ -116,11 +116,11 @@ public function testEnvArtisanSetAllKeyEqualsValueArgs(): void
116116 }
117117
118118 foreach ($ this ->env_vars_empty as $ key => $ val ) {
119- $ this ->artisan ('env:set ' , ['key ' => $ key .'= ' .$ val ])
120- ->expectsOutput ("Environment variable with key ' {$ key }' has been set to ' {$ val }' " )
119+ $ this ->artisan ('env:set ' , ['key ' => ' A_ ' . $ key .'= ' .$ val ])
120+ ->expectsOutput ("Environment variable with key 'A_ {$ key }' has been set to ' {$ val }' " )
121121 ->assertExitCode (0 );
122122
123- $ this ->artisan ('env:get ' , ['key ' => $ key ])
123+ $ this ->artisan ('env:get ' , ['key ' => ' A_ ' . $ key ])
124124 ->expectsOutput ($ val )
125125 ->assertExitCode (0 );
126126 }
@@ -177,4 +177,88 @@ public function testSetValueWithHyphen(): void
177177 ->expectsOutput ($ app_name )
178178 ->assertExitCode (0 );
179179 }
180+
181+ public function testSetSpecialCharacters (): void
182+ {
183+ $ app_key = '=t+++=.,hHya:df ' ;
184+
185+ $ this ->artisan ('env:set ' , ['key ' => 'APP_KEY ' .'= ' . $ app_key ])
186+ ->expectsOutput ("Environment variable with key 'APP_KEY' has been set to ' {$ app_key }' " )
187+ ->assertExitCode (0 );
188+
189+ $ this ->artisan ('env:get ' , ['key ' => 'APP_KEY ' ])
190+ ->expectsOutput ($ app_key )
191+ ->assertExitCode (0 );
192+ }
193+
194+ public function testSetSpecialCharactersExtended (): void
195+ {
196+ $ app_key = '1"=t+++/ \\//\=.,h\"Hya:df ' ;
197+
198+ $ this ->artisan ('env:set ' , ['key ' => 'APP_KEY ' .'= ' . $ app_key ])
199+ ->expectsOutput ("Environment variable with key 'APP_KEY' has been set to ' {$ app_key }' " )
200+ ->assertExitCode (0 );
201+
202+ $ this ->artisan ('env:get ' , ['key ' => 'APP_KEY ' ])
203+ ->expectsOutput ($ app_key )
204+ ->assertExitCode (0 );
205+ }
206+
207+ public function testKeyNames (): void
208+ {
209+ $ valid_key1 = 'A ' ;
210+ $ valid_key2 = 'ABC ' ;
211+ $ valid_key3 = 'ABC123 ' ;
212+ $ valid_key4 = 'ABC_123 ' ;
213+ $ valid_key5 = '_ABC__123 ' ;
214+
215+ $ this ->artisan ('env:set ' , ['key ' => $ valid_key1 .'=testvalue ' ])
216+ ->expectsOutput ("Environment variable with key ' $ valid_key1' has been set to 'testvalue' " )
217+ ->assertExitCode (0 );
218+
219+ $ this ->artisan ('env:set ' , ['key ' => $ valid_key2 .'=testvalue ' ])
220+ ->expectsOutput ("Environment variable with key ' $ valid_key2' has been set to 'testvalue' " )
221+ ->assertExitCode (0 );
222+
223+ $ this ->artisan ('env:set ' , ['key ' => $ valid_key3 .'=testvalue ' ])
224+ ->expectsOutput ("Environment variable with key ' $ valid_key3' has been set to 'testvalue' " )
225+ ->assertExitCode (0 );
226+
227+ $ this ->artisan ('env:set ' , ['key ' => $ valid_key4 .'=testvalue ' ])
228+ ->expectsOutput ("Environment variable with key ' $ valid_key4' has been set to 'testvalue' " )
229+ ->assertExitCode (0 );
230+
231+ $ this ->artisan ('env:set ' , ['key ' => $ valid_key5 .'=testvalue ' ])
232+ ->expectsOutput ("Environment variable with key ' $ valid_key5' has been set to 'testvalue' " )
233+ ->assertExitCode (0 );
234+
235+
236+ $ invalid_key1 = '1 ' ;
237+ $ invalid_key2 = '123 ' ;
238+ $ invalid_key3 = 'TEST KEY ' ;
239+ $ invalid_key4 = 'test ' ;
240+ $ invalid_key5 = 'test_key ' ;
241+
242+
243+ $ this ->artisan ('env:set ' , ['key ' => $ invalid_key1 .'=testvalue ' ])
244+ ->expectsOutput ('Invalid environment key. Only use upper letters, digits, and underscores. A variable must start with the letter. ' )
245+ ->assertExitCode (1 );
246+
247+ $ this ->artisan ('env:set ' , ['key ' => $ invalid_key2 .'=testvalue ' ])
248+ ->expectsOutput ('Invalid environment key. Only use upper letters, digits, and underscores. A variable must start with the letter. ' )
249+ ->assertExitCode (1 );
250+
251+ $ this ->artisan ('env:set ' , ['key ' => $ invalid_key3 .'=testvalue ' ])
252+ ->expectsOutput ('Invalid environment key. Only use upper letters, digits, and underscores. A variable must start with the letter. ' )
253+ ->assertExitCode (1 );
254+
255+ $ this ->artisan ('env:set ' , ['key ' => $ invalid_key4 .'=testvalue ' ])
256+ ->expectsOutput ('Invalid environment key. Only use upper letters, digits, and underscores. A variable must start with the letter. ' )
257+ ->assertExitCode (1 );
258+
259+ $ this ->artisan ('env:set ' , ['key ' => $ invalid_key5 .'=testvalue ' ])
260+ ->expectsOutput ('Invalid environment key. Only use upper letters, digits, and underscores. A variable must start with the letter. ' )
261+ ->assertExitCode (1 );
262+
263+ }
180264}
0 commit comments