[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / plugins-dist / archiviste / tests / initialiser_archives.php
1 <?php
2
3 /**
4 * Tests unitaires de l'API d'Archives
5 * Initialisation
6 */
7
8 use Spip\Archives\SpipArchives;
9
10 $test = 'initialiser archives';
11 $remonte = '../';
12 while (!is_dir($remonte . 'ecrire')) {
13 $remonte = '../' . $remonte;
14 }
15 require $remonte . 'tests/test.inc';
16 $ok = true;
17
18 require __DIR__ . '/TestCase.inc';
19 nettoyer_environnement_test();
20
21 include_spip('inc/archives');
22
23 //extensions inconnues
24 foreach (array('sans_extension', 'extension_inconnue', 'faux_amis') as $cas) {
25 $archive = new SpipArchives(fichier_de_test($cas));
26 $ok &= ($archive->erreur() === 2);
27 }
28
29 //presence fichier
30 $fichier = fichier_de_test('zip');
31 $repertoire = repertoire_de_test();
32
33 //fichier absent
34 $archive = new SpipArchives($fichier);
35 $ok &= ($archive->erreur() === 3);
36 $ok &= !$archive->getLectureSeule(); //repertoire accessible en ecriture
37 $ok &= !$archive->deballer(); //on ne peut decompresser un fichier qui n'existe pas
38
39 //fichier present
40 touch($fichier);
41 $archive = new SpipArchives($fichier);
42 $ok &= ($archive->erreur() === 0);
43 $ok &= !$archive->getLectureSeule();
44 $ok &= !$archive->deballer($repertoire); //on ne peut pas décompresser dans un répertoire qui n'existe pas
45 $ok &= ($archive->erreur() === 5);
46
47 // destination en lecture seule
48 mkdir($repertoire);
49 chmod($repertoire, 0500);
50 $ok &= !$archive->deballer($repertoire); //on ne peut pa décompresser dans un répertoire en lecture seule
51 $ok &= ($archive->erreur() === 5);
52 chmod($repertoire, 0700);
53
54 //fichier en lecteure seule
55 chmod($fichier, 0400);
56 $archive = new SpipArchives($fichier);
57 $ok &= ($archive->erreur() === 0);
58 $ok &= $archive->getLectureSeule();
59 chmod($fichier, 0600);
60
61 //forcer le mode de compression
62 $fichier = fichier_de_test('sans_extension');
63 touch($fichier);
64 $archive = new SpipArchives($fichier, 'zip');
65 $ok &= ($archive->erreur() === 0);
66
67 nettoyer_environnement_test();
68 if ($ok) {
69 echo 'OK';
70 }