1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests\Plugins\Import;
use PhpMyAdmin\DatabaseInterface;
use PhpMyAdmin\File;
use PhpMyAdmin\Plugins\Import\ImportXml;
use PhpMyAdmin\Tests\AbstractTestCase;
use function __;
/**
* @covers \PhpMyAdmin\Plugins\Import\ImportXml
* @requires extension xml
* @requires extension xmlwriter
*/
class ImportXmlTest extends AbstractTestCase
{
/** @var ImportXml */
protected $object;
/**
* Sets up the fixture, for example, opens a network connection.
* This method is called before a test is executed.
*/
protected function setUp(): void
{
parent::setUp();
$GLOBALS['server'] = 0;
$this->object = new ImportXml();
//setting
$GLOBALS['finished'] = false;
$GLOBALS['read_limit'] = 100000000;
$GLOBALS['offset'] = 0;
$GLOBALS['cfg']['Server']['DisableIS'] = false;
$GLOBALS['import_file'] = 'test/test_data/phpmyadmin_importXML_For_Testing.xml';
$GLOBALS['import_text'] = 'ImportXml_Test';
$GLOBALS['compression'] = 'none';
$GLOBALS['read_multiply'] = 10;
$GLOBALS['import_type'] = 'Xml';
}
/**
* Tears down the fixture, for example, closes a network connection.
* This method is called after a test is executed.
*/
protected function tearDown(): void
{
parent::tearDown();
unset($this->object);
}
/**
* Test for getProperties
*
* @group medium
*/
public function testGetProperties(): void
{
$properties = $this->object->getProperties();
$this->assertEquals(
__('XML'),
$properties->getText()
);
$this->assertEquals(
'xml',
$properties->getExtension()
);
$this->assertEquals(
'text/xml',
$properties->getMimeType()
);
$this->assertNull($properties->getOptions());
$this->assertEquals(
__('Options'),
$properties->getOptionsText()
);
}
/**
* Test for doImport
*
* @group medium
* @requires extension simplexml
*/
public function testDoImport(): void
{
//$import_notice will show the import detail result
global $import_notice;
//Mock DBI
$dbi = $this->getMockBuilder(DatabaseInterface::class)
->disableOriginalConstructor()
->getMock();
$GLOBALS['dbi'] = $dbi;
$importHandle = new File($GLOBALS['import_file']);
$importHandle->open();
//Test function called
$this->object->doImport($importHandle);
// If import successfully, PMA will show all databases and tables
// imported as following HTML Page
/*
The following structures have either been created or altered. Here you
can:
View a structure's contents by clicking on its name
Change any of its settings by clicking the corresponding "Options" link
Edit structure by following the "Structure" link
phpmyadmintest (Options)
pma_bookmarktest (Structure) (Options)
*/
//asset that all databases and tables are imported
$this->assertStringContainsString(
'The following structures have either been created or altered.',
$import_notice
);
$this->assertStringContainsString('Go to database: `phpmyadmintest`', $import_notice);
$this->assertStringContainsString('Edit settings for `phpmyadmintest`', $import_notice);
$this->assertStringContainsString('Go to table: `pma_bookmarktest`', $import_notice);
$this->assertStringContainsString('Edit settings for `pma_bookmarktest`', $import_notice);
$this->assertTrue($GLOBALS['finished']);
}
}
|