xref: /plugin/gitbacked/_test/GeneralTest.php (revision 46859405d5741e205942bf6644c087ba260072f7) !
1*46859405SMarkus Hoffrogge<?php
2*46859405SMarkus Hoffrogge
3*46859405SMarkus Hoffroggenamespace dokuwiki\plugin\gitbacked\test;
4*46859405SMarkus Hoffrogge
5*46859405SMarkus Hoffroggeuse DokuWikiTest;
6*46859405SMarkus Hoffrogge
7*46859405SMarkus Hoffrogge/**
8*46859405SMarkus Hoffrogge * General tests for the gitbacked plugin
9*46859405SMarkus Hoffrogge *
10*46859405SMarkus Hoffrogge * @group plugin_gitbacked
11*46859405SMarkus Hoffrogge * @group plugins
12*46859405SMarkus Hoffrogge */
13*46859405SMarkus Hoffroggeclass GeneralTest extends DokuWikiTest
14*46859405SMarkus Hoffrogge{
15*46859405SMarkus Hoffrogge
16*46859405SMarkus Hoffrogge    /**
17*46859405SMarkus Hoffrogge     * Simple test to make sure the plugin.info.txt is in correct format
18*46859405SMarkus Hoffrogge     */
19*46859405SMarkus Hoffrogge    public function testPluginInfo(): void
20*46859405SMarkus Hoffrogge    {
21*46859405SMarkus Hoffrogge        $file = __DIR__ . '/../plugin.info.txt';
22*46859405SMarkus Hoffrogge        $this->assertFileExists($file);
23*46859405SMarkus Hoffrogge
24*46859405SMarkus Hoffrogge        $info = confToHash($file);
25*46859405SMarkus Hoffrogge
26*46859405SMarkus Hoffrogge        $this->assertArrayHasKey('base', $info);
27*46859405SMarkus Hoffrogge        $this->assertArrayHasKey('author', $info);
28*46859405SMarkus Hoffrogge        $this->assertArrayHasKey('email', $info);
29*46859405SMarkus Hoffrogge        $this->assertArrayHasKey('date', $info);
30*46859405SMarkus Hoffrogge        $this->assertArrayHasKey('name', $info);
31*46859405SMarkus Hoffrogge        $this->assertArrayHasKey('desc', $info);
32*46859405SMarkus Hoffrogge        $this->assertArrayHasKey('url', $info);
33*46859405SMarkus Hoffrogge
34*46859405SMarkus Hoffrogge        $this->assertEquals('gitbacked', $info['base']);
35*46859405SMarkus Hoffrogge        $this->assertRegExp('/^https?:\/\//', $info['url']);
36*46859405SMarkus Hoffrogge        $this->assertTrue(mail_isvalid($info['email']));
37*46859405SMarkus Hoffrogge        $this->assertRegExp('/^\d\d\d\d-\d\d-\d\d$/', $info['date']);
38*46859405SMarkus Hoffrogge        $this->assertTrue(false !== strtotime($info['date']));
39*46859405SMarkus Hoffrogge    }
40*46859405SMarkus Hoffrogge
41*46859405SMarkus Hoffrogge    /**
42*46859405SMarkus Hoffrogge     * Test to ensure that every conf['...'] entry in conf/default.php has a corresponding meta['...'] entry in
43*46859405SMarkus Hoffrogge     * conf/metadata.php.
44*46859405SMarkus Hoffrogge     */
45*46859405SMarkus Hoffrogge    public function testPluginConf(): void
46*46859405SMarkus Hoffrogge    {
47*46859405SMarkus Hoffrogge        $conf_file = __DIR__ . '/../conf/default.php';
48*46859405SMarkus Hoffrogge        $meta_file = __DIR__ . '/../conf/metadata.php';
49*46859405SMarkus Hoffrogge
50*46859405SMarkus Hoffrogge        if (!file_exists($conf_file) && !file_exists($meta_file)) {
51*46859405SMarkus Hoffrogge            self::markTestSkipped('No config files exist -> skipping test');
52*46859405SMarkus Hoffrogge        }
53*46859405SMarkus Hoffrogge
54*46859405SMarkus Hoffrogge        if (file_exists($conf_file)) {
55*46859405SMarkus Hoffrogge            include($conf_file);
56*46859405SMarkus Hoffrogge        }
57*46859405SMarkus Hoffrogge        if (file_exists($meta_file)) {
58*46859405SMarkus Hoffrogge            include($meta_file);
59*46859405SMarkus Hoffrogge        }
60*46859405SMarkus Hoffrogge
61*46859405SMarkus Hoffrogge        $this->assertEquals(
62*46859405SMarkus Hoffrogge            gettype($conf),
63*46859405SMarkus Hoffrogge            gettype($meta),
64*46859405SMarkus Hoffrogge            'Both ' . DOKU_PLUGIN . 'gitbacked/conf/default.php and ' . DOKU_PLUGIN . 'gitbacked/conf/metadata.php have to exist and contain the same keys.'
65*46859405SMarkus Hoffrogge        );
66*46859405SMarkus Hoffrogge
67*46859405SMarkus Hoffrogge        if ($conf !== null && $meta !== null) {
68*46859405SMarkus Hoffrogge            foreach ($conf as $key => $value) {
69*46859405SMarkus Hoffrogge                $this->assertArrayHasKey(
70*46859405SMarkus Hoffrogge                    $key,
71*46859405SMarkus Hoffrogge                    $meta,
72*46859405SMarkus Hoffrogge                    'Key $meta[\'' . $key . '\'] missing in ' . DOKU_PLUGIN . 'gitbacked/conf/metadata.php'
73*46859405SMarkus Hoffrogge                );
74*46859405SMarkus Hoffrogge            }
75*46859405SMarkus Hoffrogge
76*46859405SMarkus Hoffrogge            foreach ($meta as $key => $value) {
77*46859405SMarkus Hoffrogge                $this->assertArrayHasKey(
78*46859405SMarkus Hoffrogge                    $key,
79*46859405SMarkus Hoffrogge                    $conf,
80*46859405SMarkus Hoffrogge                    'Key $conf[\'' . $key . '\'] missing in ' . DOKU_PLUGIN . 'gitbacked/conf/default.php'
81*46859405SMarkus Hoffrogge                );
82*46859405SMarkus Hoffrogge            }
83*46859405SMarkus Hoffrogge        }
84*46859405SMarkus Hoffrogge    }
85*46859405SMarkus Hoffrogge}
86