44
55namespace PhpMyAdmin \Tests \Controllers \Export \Template ;
66
7+ use Fig \Http \Message \StatusCodeInterface ;
78use PhpMyAdmin \Config ;
89use PhpMyAdmin \ConfigStorage \Relation ;
10+ use PhpMyAdmin \ConfigStorage \RelationParameters ;
911use PhpMyAdmin \Controllers \Export \Template \UpdateController ;
1012use PhpMyAdmin \Dbal \DatabaseInterface ;
1113use PhpMyAdmin \Export \TemplateModel ;
14+ use PhpMyAdmin \Http \Factory \ServerRequestFactory ;
1215use PhpMyAdmin \Http \ServerRequest ;
1316use PhpMyAdmin \Tests \AbstractTestCase ;
1417use PhpMyAdmin \Tests \Stubs \DbiDummy ;
1518use PhpMyAdmin \Tests \Stubs \ResponseRenderer ;
1619use PHPUnit \Framework \Attributes \CoversClass ;
20+ use ReflectionProperty ;
1721
1822#[CoversClass(UpdateController::class)]
19- class UpdateControllerTest extends AbstractTestCase
23+ final class UpdateControllerTest extends AbstractTestCase
2024{
2125 protected DatabaseInterface $ dbi ;
2226
@@ -31,8 +35,10 @@ protected function setUp(): void
3135 DatabaseInterface::$ instance = $ this ->dbi ;
3236 }
3337
34- public function testUpdate (): void
38+ public function testWithoutTemplatesFeature (): void
3539 {
40+ (new ReflectionProperty (Relation::class, 'cache ' ))->setValue (null , RelationParameters::fromArray ([]));
41+
3642 $ config = Config::getInstance ();
3743 $ config ->selectedServer ['user ' ] = 'user ' ;
3844
@@ -48,4 +54,43 @@ public function testUpdate(): void
4854
4955 self ::assertTrue ($ response ->hasSuccessState ());
5056 }
57+
58+ public function testWithTemplatesFeature (): void
59+ {
60+ $ relationParameters = RelationParameters::fromArray ([
61+ RelationParameters::USER => 'test_user ' ,
62+ RelationParameters::DATABASE => 'pma_db ' ,
63+ RelationParameters::EXPORT_TEMPLATES_WORK => true ,
64+ RelationParameters::EXPORT_TEMPLATES => 'export_templates ' ,
65+ ]);
66+ (new ReflectionProperty (Relation::class, 'cache ' ))->setValue (null , $ relationParameters );
67+
68+ $ config = new Config ();
69+ $ config ->selectedServer ['user ' ] = 'test_user ' ;
70+
71+ $ dbiDummy = $ this ->createDbiDummy ();
72+ $ dbiDummy ->removeDefaultResults ();
73+
74+ // phpcs:disable Generic.Files.LineLength.TooLong
75+ $ dbiDummy ->addResult ('UPDATE `pma_db`.`export_templates` SET `template_data` = \'{\"quick_or_custom\":\"quick\"} \' WHERE `id` = 1 AND `username` = \'test_user \'; ' , true );
76+ $ dbi = $ this ->createDatabaseInterface ($ dbiDummy );
77+
78+ $ responseRenderer = new ResponseRenderer ();
79+ $ request = ServerRequestFactory::create ()->createServerRequest ('POST ' , 'https://example.com/ ' )->withParsedBody ([
80+ 'exportType ' => 'server ' ,
81+ 'templateId ' => '1 ' ,
82+ 'templateData ' => '{"quick_or_custom":"quick"} ' ,
83+ ]);
84+
85+ $ response = (new UpdateController (
86+ $ responseRenderer ,
87+ new TemplateModel ($ dbi ),
88+ new Relation ($ dbi , $ config ),
89+ $ config ,
90+ ))($ request );
91+
92+ $ dbiDummy ->assertAllQueriesConsumed ();
93+ self ::assertTrue ($ responseRenderer ->hasSuccessState ());
94+ self ::assertSame (StatusCodeInterface::STATUS_OK , $ response ->getStatusCode ());
95+ }
5196}
0 commit comments