| Línea 32... | 
            Línea 32... | 
          
          
            | 32 | 
             * @copyright 2012, 2015 David Mudrak <david@moodle.com>
  | 
            32 | 
             * @copyright 2012, 2015 David Mudrak <david@moodle.com>
  | 
          
          
            | 33 | 
             * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  | 
            33 | 
             * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  | 
          
          
            | 34 | 
             */
  | 
            34 | 
             */
  | 
          
          
            | 35 | 
            class update_checker_test extends \advanced_testcase {
  | 
            35 | 
            class update_checker_test extends \advanced_testcase {
  | 
          
          
            | Línea 36... | 
            Línea 36... | 
          
          
            | 36 | 
             
  | 
            36 | 
             
  | 
          
          
            | 37 | 
                public function test_core_available_update() {
  | 
            37 | 
                public function test_core_available_update(): void {
  | 
          
          
            | 38 | 
                    $provider = testable_checker::instance();
  | 
            38 | 
                    $provider = testable_checker::instance();
  | 
          
          
            | Línea 39... | 
            Línea 39... | 
          
          
            | 39 | 
                    $this->assertInstanceOf('\core\update\checker', $provider);
  | 
            39 | 
                    $this->assertInstanceOf('\core\update\checker', $provider);
  | 
          
          
            | 40 | 
             
  | 
            40 | 
             
  | 
          
          
            | Línea 52... | 
            Línea 52... | 
          
          
            | 52 | 
                }
  | 
            52 | 
                }
  | 
          
          
            | Línea 53... | 
            Línea 53... | 
          
          
            | 53 | 
             
  | 
            53 | 
             
  | 
          
          
            | 54 | 
                /**
  | 
            54 | 
                /**
  | 
          
          
            | 55 | 
                 * If there are no fetched data yet, the first cron should fetch them.
  | 
            55 | 
                 * If there are no fetched data yet, the first cron should fetch them.
  | 
          
          
            | 56 | 
                 */
  | 
            56 | 
                 */
  | 
          
          
            | 57 | 
                public function test_cron_initial_fetch() {
  | 
            57 | 
                public function test_cron_initial_fetch(): void {
  | 
          
          
            | 58 | 
                    $provider = testable_checker::instance();
  | 
            58 | 
                    $provider = testable_checker::instance();
  | 
          
          
            | 59 | 
                    $provider->fakerecentfetch = null;
  | 
            59 | 
                    $provider->fakerecentfetch = null;
  | 
          
          
            | 60 | 
                    $provider->fakecurrenttimestamp = -1;
  | 
            60 | 
                    $provider->fakecurrenttimestamp = -1;
  | 
          
          
            | 61 | 
                    $this->expectException(\core\update\testable_checker_cron_executed::class);
  | 
            61 | 
                    $this->expectException(\core\update\testable_checker_cron_executed::class);
  | 
          
          
            | 62 | 
                    $provider->cron();
  | 
            62 | 
                    $provider->cron();
  | 
          
          
            | Línea 63... | 
            Línea 63... | 
          
          
            | 63 | 
                }
  | 
            63 | 
                }
  | 
          
          
            | 64 | 
             
  | 
            64 | 
             
  | 
          
          
            | 65 | 
                /**
  | 
            65 | 
                /**
  | 
          
          
            | 66 | 
                 * If there is a fresh fetch available, no cron execution is expected.
  | 
            66 | 
                 * If there is a fresh fetch available, no cron execution is expected.
  | 
          
          
            | 67 | 
                 */
  | 
            67 | 
                 */
  | 
          
          
            | 68 | 
                public function test_cron_has_fresh_fetch() {
  | 
            68 | 
                public function test_cron_has_fresh_fetch(): void {
  | 
          
          
            | 69 | 
                    $provider = testable_checker::instance();
  | 
            69 | 
                    $provider = testable_checker::instance();
  | 
          
          
            | 70 | 
                    $provider->fakerecentfetch = time() - 23 * HOURSECS; // Fetched 23 hours ago.
  | 
            70 | 
                    $provider->fakerecentfetch = time() - 23 * HOURSECS; // Fetched 23 hours ago.
  | 
          
          
            | 71 | 
                    $provider->fakecurrenttimestamp = -1;
  | 
            71 | 
                    $provider->fakecurrenttimestamp = -1;
  | 
          
          
            | 72 | 
                    $provider->cron();
  | 
            72 | 
                    $provider->cron();
  | 
          
          
            | Línea 73... | 
            Línea 73... | 
          
          
            | 73 | 
                    $this->assertTrue(true); // We should get here with no exception thrown.
  | 
            73 | 
                    $this->assertTrue(true); // We should get here with no exception thrown.
  | 
          
          
            | 74 | 
                }
  | 
            74 | 
                }
  | 
          
          
            | 75 | 
             
  | 
            75 | 
             
  | 
          
          
            | 76 | 
                /**
  | 
            76 | 
                /**
  | 
          
          
            | 77 | 
                 * If there is an outdated fetch, the cron execution is expected.
  | 
            77 | 
                 * If there is an outdated fetch, the cron execution is expected.
  | 
          
          
            | 78 | 
                 */
  | 
            78 | 
                 */
  | 
          
          
            | 79 | 
                public function test_cron_has_outdated_fetch() {
  | 
            79 | 
                public function test_cron_has_outdated_fetch(): void {
  | 
          
          
            | 80 | 
                    $provider = testable_checker::instance();
  | 
            80 | 
                    $provider = testable_checker::instance();
  | 
          
          
            | 81 | 
                    $provider->fakerecentfetch = time() - 49 * HOURSECS; // Fetched 49 hours ago.
  | 
            81 | 
                    $provider->fakerecentfetch = time() - 49 * HOURSECS; // Fetched 49 hours ago.
  | 
          
          
            | Línea 87... | 
            Línea 87... | 
          
          
            | 87 | 
                /**
  | 
            87 | 
                /**
  | 
          
          
            | 88 | 
                 * The first cron after 01:42 AM today should fetch the data.
  | 
            88 | 
                 * The first cron after 01:42 AM today should fetch the data.
  | 
          
          
            | 89 | 
                 *
  | 
            89 | 
                 *
  | 
          
          
            | 90 | 
                 * @see testable_checker::cron_execution_offset()
  | 
            90 | 
                 * @see testable_checker::cron_execution_offset()
  | 
          
          
            | 91 | 
                 */
  | 
            91 | 
                 */
  | 
          
          
            | 92 | 
                public function test_cron_offset_execution_not_yet() {
  | 
            92 | 
                public function test_cron_offset_execution_not_yet(): void {
  | 
          
          
            | 93 | 
                    $provider = testable_checker::instance();
  | 
            93 | 
                    $provider = testable_checker::instance();
  | 
          
          
            | 94 | 
                    $provider->fakecurrenttimestamp = mktime(1, 40, 02); // 01:40:02 AM today
  | 
            94 | 
                    $provider->fakecurrenttimestamp = mktime(1, 40, 02); // 01:40:02 AM today
  | 
          
          
            | 95 | 
                    $provider->fakerecentfetch = $provider->fakecurrenttimestamp - 24 * HOURSECS;
  | 
            95 | 
                    $provider->fakerecentfetch = $provider->fakecurrenttimestamp - 24 * HOURSECS;
  | 
          
          
            | 96 | 
                    $provider->cron();
  | 
            96 | 
                    $provider->cron();
  | 
          
          
            | 97 | 
                    $this->assertTrue(true); // We should get here with no exception thrown.
  | 
            97 | 
                    $this->assertTrue(true); // We should get here with no exception thrown.
  | 
          
          
            | Línea 101... | 
            Línea 101... | 
          
          
            | 101 | 
                 * The first cron after 01:42 AM today should fetch the data and then
  | 
            101 | 
                 * The first cron after 01:42 AM today should fetch the data and then
  | 
          
          
            | 102 | 
                 * it is supposed to wait next 24 hours.
  | 
            102 | 
                 * it is supposed to wait next 24 hours.
  | 
          
          
            | 103 | 
                 *
  | 
            103 | 
                 *
  | 
          
          
            | 104 | 
                 * @see testable_checker::cron_execution_offset()
  | 
            104 | 
                 * @see testable_checker::cron_execution_offset()
  | 
          
          
            | 105 | 
                 */
  | 
            105 | 
                 */
  | 
          
          
            | 106 | 
                public function test_cron_offset_execution() {
  | 
            106 | 
                public function test_cron_offset_execution(): void {
  | 
          
          
            | 107 | 
                    $provider = testable_checker::instance();
  | 
            107 | 
                    $provider = testable_checker::instance();
  | 
          
          
            | Línea 108... | 
            Línea 108... | 
          
          
            | 108 | 
             
  | 
            108 | 
             
  | 
          
          
            | 109 | 
                    // The cron at 01:45 should fetch the data.
  | 
            109 | 
                    // The cron at 01:45 should fetch the data.
  | 
          
          
            | 110 | 
                    $provider->fakecurrenttimestamp = mktime(1, 45, 02); // 01:45:02 AM today
  | 
            110 | 
                    $provider->fakecurrenttimestamp = mktime(1, 45, 02); // 01:45:02 AM today
  | 
          
          
            | Línea 137... | 
            Línea 137... | 
          
          
            | 137 | 
                        $executed = true;
  | 
            137 | 
                        $executed = true;
  | 
          
          
            | 138 | 
                    }
  | 
            138 | 
                    }
  | 
          
          
            | 139 | 
                    $this->assertTrue($executed, 'Cron should be executed the next night but it was not.');
  | 
            139 | 
                    $this->assertTrue($executed, 'Cron should be executed the next night but it was not.');
  | 
          
          
            | 140 | 
                }
  | 
            140 | 
                }
  | 
          
          
            | Línea 141... | 
            Línea 141... | 
          
          
            | 141 | 
             
  | 
            141 | 
             
  | 
          
          
            | 142 | 
                public function test_compare_responses_both_empty() {
  | 
            142 | 
                public function test_compare_responses_both_empty(): void {
  | 
          
          
            | 143 | 
                    $provider = testable_checker::instance();
  | 
            143 | 
                    $provider = testable_checker::instance();
  | 
          
          
            | 144 | 
                    $old = array();
  | 
            144 | 
                    $old = array();
  | 
          
          
            | 145 | 
                    $new = array();
  | 
            145 | 
                    $new = array();
  | 
          
          
            | 146 | 
                    $cmp = $provider->compare_responses($old, $new);
  | 
            146 | 
                    $cmp = $provider->compare_responses($old, $new);
  | 
          
          
            | 147 | 
                    $this->assertIsArray($cmp);
  | 
            147 | 
                    $this->assertIsArray($cmp);
  | 
          
          
            | 148 | 
                    $this->assertEmpty($cmp);
  | 
            148 | 
                    $this->assertEmpty($cmp);
  | 
          
          
            | Línea 149... | 
            Línea 149... | 
          
          
            | 149 | 
                }
  | 
            149 | 
                }
  | 
          
          
            | 150 | 
             
  | 
            150 | 
             
  | 
          
          
            | 151 | 
                public function test_compare_responses_old_empty() {
  | 
            151 | 
                public function test_compare_responses_old_empty(): void {
  | 
          
          
            | 152 | 
                    $provider = testable_checker::instance();
  | 
            152 | 
                    $provider = testable_checker::instance();
  | 
          
          
            | 153 | 
                    $old = array();
  | 
            153 | 
                    $old = array();
  | 
          
          
            | 154 | 
                    $new = array(
  | 
            154 | 
                    $new = array(
  | 
          
          
            | Línea 165... | 
            Línea 165... | 
          
          
            | 165 | 
                    $this->assertNotEmpty($cmp);
  | 
            165 | 
                    $this->assertNotEmpty($cmp);
  | 
          
          
            | 166 | 
                    $this->assertTrue(isset($cmp['core'][0]['version']));
  | 
            166 | 
                    $this->assertTrue(isset($cmp['core'][0]['version']));
  | 
          
          
            | 167 | 
                    $this->assertEquals(2012060103, $cmp['core'][0]['version']);
  | 
            167 | 
                    $this->assertEquals(2012060103, $cmp['core'][0]['version']);
  | 
          
          
            | 168 | 
                }
  | 
            168 | 
                }
  | 
          
          
            | Línea 169... | 
            Línea 169... | 
          
          
            | 169 | 
             
  | 
            169 | 
             
  | 
          
          
            | 170 | 
                public function test_compare_responses_no_change() {
  | 
            170 | 
                public function test_compare_responses_no_change(): void {
  | 
          
          
            | 171 | 
                    $provider = testable_checker::instance();
  | 
            171 | 
                    $provider = testable_checker::instance();
  | 
          
          
            | 172 | 
                    $old = $new = array(
  | 
            172 | 
                    $old = $new = array(
  | 
          
          
            | 173 | 
                        'updates' => array(
  | 
            173 | 
                        'updates' => array(
  | 
          
          
            | 174 | 
                            'core' => array(
  | 
            174 | 
                            'core' => array(
  | 
          
          
            | Línea 189... | 
            Línea 189... | 
          
          
            | 189 | 
                    $cmp = $provider->compare_responses($old, $new);
  | 
            189 | 
                    $cmp = $provider->compare_responses($old, $new);
  | 
          
          
            | 190 | 
                    $this->assertIsArray($cmp);
  | 
            190 | 
                    $this->assertIsArray($cmp);
  | 
          
          
            | 191 | 
                    $this->assertEmpty($cmp);
  | 
            191 | 
                    $this->assertEmpty($cmp);
  | 
          
          
            | 192 | 
                }
  | 
            192 | 
                }
  | 
          
          
            | Línea 193... | 
            Línea 193... | 
          
          
            | 193 | 
             
  | 
            193 | 
             
  | 
          
          
            | 194 | 
                public function test_compare_responses_new_and_missing_update() {
  | 
            194 | 
                public function test_compare_responses_new_and_missing_update(): void {
  | 
          
          
            | 195 | 
                    $provider = testable_checker::instance();
  | 
            195 | 
                    $provider = testable_checker::instance();
  | 
          
          
            | 196 | 
                    $old = array(
  | 
            196 | 
                    $old = array(
  | 
          
          
            | 197 | 
                        'updates' => array(
  | 
            197 | 
                        'updates' => array(
  | 
          
          
            | 198 | 
                            'core' => array(
  | 
            198 | 
                            'core' => array(
  | 
          
          
            | Línea 225... | 
            Línea 225... | 
          
          
            | 225 | 
                    $this->assertCount(1, $cmp);
  | 
            225 | 
                    $this->assertCount(1, $cmp);
  | 
          
          
            | 226 | 
                    $this->assertCount(1, $cmp['core']);
  | 
            226 | 
                    $this->assertCount(1, $cmp['core']);
  | 
          
          
            | 227 | 
                    $this->assertEquals(2012120100, $cmp['core'][0]['version']);
  | 
            227 | 
                    $this->assertEquals(2012120100, $cmp['core'][0]['version']);
  | 
          
          
            | 228 | 
                }
  | 
            228 | 
                }
  | 
          
          
            | Línea 229... | 
            Línea 229... | 
          
          
            | 229 | 
             
  | 
            229 | 
             
  | 
          
          
            | 230 | 
                public function test_compare_responses_modified_update() {
  | 
            230 | 
                public function test_compare_responses_modified_update(): void {
  | 
          
          
            | 231 | 
                    $provider = testable_checker::instance();
  | 
            231 | 
                    $provider = testable_checker::instance();
  | 
          
          
            | 232 | 
                    $old = array(
  | 
            232 | 
                    $old = array(
  | 
          
          
            | 233 | 
                        'updates' => array(
  | 
            233 | 
                        'updates' => array(
  | 
          
          
            | 234 | 
                            'mod_foo' => array(
  | 
            234 | 
                            'mod_foo' => array(
  | 
          
          
            | Línea 253... | 
            Línea 253... | 
          
          
            | 253 | 
                    $this->assertCount(1, $cmp);
  | 
            253 | 
                    $this->assertCount(1, $cmp);
  | 
          
          
            | 254 | 
                    $this->assertCount(1, $cmp['mod_foo']);
  | 
            254 | 
                    $this->assertCount(1, $cmp['mod_foo']);
  | 
          
          
            | 255 | 
                    $this->assertEquals(2011010102, $cmp['mod_foo'][0]['version']);
  | 
            255 | 
                    $this->assertEquals(2011010102, $cmp['mod_foo'][0]['version']);
  | 
          
          
            | 256 | 
                }
  | 
            256 | 
                }
  | 
          
          
            | Línea 257... | 
            Línea 257... | 
          
          
            | 257 | 
             
  | 
            257 | 
             
  | 
          
          
            | 258 | 
                public function test_compare_responses_invalid_format() {
  | 
            258 | 
                public function test_compare_responses_invalid_format(): void {
  | 
          
          
            | 259 | 
                    $provider = testable_checker::instance();
  | 
            259 | 
                    $provider = testable_checker::instance();
  | 
          
          
            | 260 | 
                    $broken = array(
  | 
            260 | 
                    $broken = array(
  | 
          
          
            | 261 | 
                        'status' => 'ERROR' // No 'updates' key here.
  | 
            261 | 
                        'status' => 'ERROR' // No 'updates' key here.
  | 
          
          
            | 262 | 
                    );
  | 
            262 | 
                    );
  | 
          
          
            | 263 | 
                    $this->expectException(\core\update\checker_exception::class);
  | 
            263 | 
                    $this->expectException(\core\update\checker_exception::class);
  | 
          
          
            | 264 | 
                    $cmp = $provider->compare_responses($broken, $broken);
  | 
            264 | 
                    $cmp = $provider->compare_responses($broken, $broken);
  | 
          
          
            | Línea 265... | 
            Línea 265... | 
          
          
            | 265 | 
                }
  | 
            265 | 
                }
  | 
          
          
            | 266 | 
             
  | 
            266 | 
             
  | 
          
          
            | 267 | 
                public function test_is_same_release_explicit() {
  | 
            267 | 
                public function test_is_same_release_explicit(): void {
  | 
          
          
            | 268 | 
                    $provider = testable_checker::instance();
  | 
            268 | 
                    $provider = testable_checker::instance();
  | 
          
          
            | 269 | 
                    $this->assertTrue($provider->is_same_release('2.3dev (Build: 20120323)', '2.3dev (Build: 20120323)'));
  | 
            269 | 
                    $this->assertTrue($provider->is_same_release('2.3dev (Build: 20120323)', '2.3dev (Build: 20120323)'));
  | 
          
          
            | 270 | 
                    $this->assertTrue($provider->is_same_release('2.3dev (Build: 20120323)', '2.3dev (Build: 20120330)'));
  | 
            270 | 
                    $this->assertTrue($provider->is_same_release('2.3dev (Build: 20120323)', '2.3dev (Build: 20120330)'));
  | 
          
          
            | Línea 276... | 
            Línea 276... | 
          
          
            | 276 | 
                    $this->assertTrue($provider->is_same_release('2.3.2 (Build: 123456)', '2.3.2+ (Build: 123457)'));
  | 
            276 | 
                    $this->assertTrue($provider->is_same_release('2.3.2 (Build: 123456)', '2.3.2+ (Build: 123457)'));
  | 
          
          
            | 277 | 
                    $this->assertFalse($provider->is_same_release('3.0 Community Edition', '3.0 Enterprise Edition'));
  | 
            277 | 
                    $this->assertFalse($provider->is_same_release('3.0 Community Edition', '3.0 Enterprise Edition'));
  | 
          
          
            | 278 | 
                    $this->assertTrue($provider->is_same_release('3.0 Community Edition', '3.0 Community Edition (Build: 20290101)'));
  | 
            278 | 
                    $this->assertTrue($provider->is_same_release('3.0 Community Edition', '3.0 Community Edition (Build: 20290101)'));
  | 
          
          
            | 279 | 
                }
  | 
            279 | 
                }
  | 
          
          
            | Línea 280... | 
            Línea 280... | 
          
          
            | 280 | 
             
  | 
            280 | 
             
  | 
          
          
            | 281 | 
                public function test_is_same_release_implicit() {
  | 
            281 | 
                public function test_is_same_release_implicit(): void {
  | 
          
          
            | 282 | 
                    $provider = testable_checker::instance();
  | 
            282 | 
                    $provider = testable_checker::instance();
  | 
          
          
            | 283 | 
                    $provider->fake_current_environment(2012060102.00, '2.3.2 (Build: 20121012)', '2.3', array());
  | 
            283 | 
                    $provider->fake_current_environment(2012060102.00, '2.3.2 (Build: 20121012)', '2.3', array());
  | 
          
          
            | 284 | 
                    $this->assertTrue($provider->is_same_release('2.3.2'));
  | 
            284 | 
                    $this->assertTrue($provider->is_same_release('2.3.2'));
  | 
          
          
            | 285 | 
                    $this->assertTrue($provider->is_same_release('2.3.2+'));
  | 
            285 | 
                    $this->assertTrue($provider->is_same_release('2.3.2+'));
  |