api#326 Числовые UTM и новый шум каждого перехода
This commit is contained in:
1 parent
f30742c2fb
commit
81e189ca67
16 files changed
+303
-160
No files matched your search
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
/** api#326: публичные маски выбирают внутренние варианты без открытых alias. */
|
||||
declare(strict_types=1);
|
||||
$_GET = ['indpic'=>'abcd2', 'theme'=>'abcd2x', 'degr'=>'abcd2', 'reg'=>'abcd1', 'chob'=>'abcd1', 'tp'=>'abcd2', 'cons'=>'abcd3', 'focus'=>'abcd2', 'registration'=>'before', 'bchoice'=>'b', 'chb'=>'a', 'utm_source'=>'abcd9same', 'subid'=>'тест + &'];
|
||||
$_SERVER['HTTP_HOST']='zoomstage.online';
|
||||
ob_start(); require dirname(__DIR__).'/index.php'; $html=ob_get_clean();
|
||||
$expected=['indpic'=>'2','theme'=>'light','degr'=>'2','registration'=>'before','bchoice'=>'b','tp'=>'2','cons'=>'3','focus'=>'center'];
|
||||
foreach($expected as $key=>$value) if(($UTM[$key]??null)!==$value) throw new RuntimeException("Неверный внутренний вариант $key");
|
||||
if(($UTM['utm_source']??null)!=='abcd9same'||($UTM['subid']??null)!=='тест + &') throw new RuntimeException('Чужие значения изменены');
|
||||
if(!function_exists('prelandResolveUtm')) throw new RuntimeException('Отсутствует единая граница UTM');
|
||||
$config=['utm'=>['indpic'=>['weights'=>['1'=>0,'2'=>100],'default'=>'1'],'theme'=>['weights'=>['1'=>3,'2'=>7],'default'=>'1']]];
|
||||
foreach(['2','rnd','dark','abcdx','abc',[],null,'abcd0'] as $value) {
|
||||
$resolved=prelandResolveUtm(['theme'=>$value],$config);
|
||||
if($value==='abcd0') continue;
|
||||
if($resolved['digits']['theme']!=='1')throw new RuntimeException('Invalid theme обязан использовать default');
|
||||
}
|
||||
if(prelandResolveUtm(["theme"=>"абвг2"],$config)["digits"]["theme"]!=="2")throw new RuntimeException("Unicode fifth symbol");
|
||||
for($i=0;$i<50;$i++) if(prelandResolveUtm(['indpic'=>'abcd0'],$config)['digits']['indpic']!=='2')throw new RuntimeException('0 нарушил веса');
|
||||
$settings=json_decode(file_get_contents(dirname(__DIR__).'/config.json'),true);
|
||||
$defaults=['indpic'=>'1','theme'=>'1','degr'=>'1','reg'=>'2','chob'=>'2','tp'=>'2','cons'=>'2','focus'=>'1'];
|
||||
foreach(array_keys($defaults) as $key) foreach(['1','rnd','abcdx','abc',[],null,"\xffabcd2"] as $invalid) {
|
||||
$resolved=prelandResolveUtm([$key=>$invalid,'registration'=>'before','bchoice'=>'b','chb'=>'a'],$settings);
|
||||
if($resolved['digits'][$key]!==$defaults[$key])throw new RuntimeException('Открытый/invalid URL изменил '.$key);
|
||||
if(isset($resolved['context']['chb']))throw new RuntimeException('Legacy chb прошёл как foreign');
|
||||
}
|
||||
if(prelandResolveUtm(['tp'=>'abcd9'],$settings)['digits']['tp']!=='2')throw new RuntimeException('Ненастроенная группа tp должна fallback');
|
||||
if(prelandResolveUtm(['cons'=>'abcd9'],$settings)['digits']['cons']!=='9')throw new RuntimeException('Cons concrete не зависит от random weights');
|
||||
echo "OK: numeric public boundary, defaults, weighted0, foreign values\n";
|
||||
Reference in new issue
Block a user