Added new app config param to allow disabling short URL visits tracking

This commit is contained in:
Alejandro Celaya 2018-01-14 09:13:49 +01:00
parent ce9d6642d4
commit 5fd34e03fc
4 changed files with 38 additions and 6 deletions

View file

@ -24,14 +24,21 @@ class ApplicationConfigCustomizer implements ConfigCustomizerInterface
return; return;
} }
$validator = function ($value) {
return $value;
};
$appConfig->setApp([ $appConfig->setApp([
'SECRET' => $io->ask( 'SECRET' => $io->ask(
'Define a secret string that will be used to sign API tokens (leave empty to autogenerate one)', 'Define a secret string that will be used to sign API tokens (leave empty to autogenerate one)',
null, null,
function ($value) { $validator
return $value;
}
) ?: $this->generateRandomString(32), ) ?: $this->generateRandomString(32),
'DISABLE_TRACK_PARAM' => $io->ask(
'Provide a parameter name that you will be able to use to disable tracking on specific request to '
. 'short URLs (leave empty and this feature won\'t be enabled)',
null,
$validator
),
]); ]);
} }
} }

View file

@ -225,6 +225,7 @@ final class CustomizableAppConfig implements ArraySerializableInterface
$config = [ $config = [
'app_options' => [ 'app_options' => [
'secret_key' => $this->app['SECRET'], 'secret_key' => $this->app['SECRET'],
'disable_track_param' => $this->app['DISABLE_TRACK_PARAM'],
], ],
'entity_manager' => [ 'entity_manager' => [
'connection' => [ 'connection' => [

View file

@ -34,7 +34,7 @@ class ApplicationConfigCustomizerTest extends TestCase
*/ */
public function configIsRequestedToTheUser() public function configIsRequestedToTheUser()
{ {
$askSecret = $this->io->ask(Argument::cetera())->willReturn('the_secret'); $ask = $this->io->ask(Argument::cetera())->willReturn('the_secret');
$config = new CustomizableAppConfig(); $config = new CustomizableAppConfig();
$this->plugin->process($this->io->reveal(), $config); $this->plugin->process($this->io->reveal(), $config);
@ -42,8 +42,9 @@ class ApplicationConfigCustomizerTest extends TestCase
$this->assertTrue($config->hasApp()); $this->assertTrue($config->hasApp());
$this->assertEquals([ $this->assertEquals([
'SECRET' => 'the_secret', 'SECRET' => 'the_secret',
'DISABLE_TRACK_PARAM' => 'the_secret',
], $config->getApp()); ], $config->getApp());
$askSecret->shouldHaveBeenCalledTimes(1); $ask->shouldHaveBeenCalledTimes(2);
} }
/** /**
@ -62,8 +63,9 @@ class ApplicationConfigCustomizerTest extends TestCase
$this->assertEquals([ $this->assertEquals([
'SECRET' => 'the_new_secret', 'SECRET' => 'the_new_secret',
'DISABLE_TRACK_PARAM' => 'the_new_secret',
], $config->getApp()); ], $config->getApp());
$ask->shouldHaveBeenCalledTimes(1); $ask->shouldHaveBeenCalledTimes(2);
$confirm->shouldHaveBeenCalledTimes(1); $confirm->shouldHaveBeenCalledTimes(1);
} }

View file

@ -22,6 +22,10 @@ class AppOptions extends AbstractOptions
* @var string * @var string
*/ */
protected $secretKey = ''; protected $secretKey = '';
/**
* @var string|null
*/
protected $disableTrackParam;
/** /**
* AppOptions constructor. * AppOptions constructor.
@ -86,6 +90,24 @@ class AppOptions extends AbstractOptions
return $this; return $this;
} }
/**
* @return string|null
*/
public function getDisableTrackParam()
{
return $this->disableTrackParam;
}
/**
* @param string|null $disableTrackParam
* @return $this|self
*/
protected function setDisableTrackParam($disableTrackParam): self
{
$this->disableTrackParam = $disableTrackParam;
return $this;
}
/** /**
* @return string * @return string
*/ */