~fkooman/vpn-user-portal

ref: 2.3.10 vpn-user-portal/tests/Federation/ForeignKeyListFetcherTest.php -rw-r--r-- 2.3 KiB
e0bd9cc0François Kooman prepare for release 1 year, 2 months ago
                                                                                
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
<?php

/*
 * eduVPN - End-user friendly VPN.
 *
 * Copyright: 2016-2019, The Commons Conservancy eduVPN Programme
 * SPDX-License-Identifier: AGPL-3.0+
 */

namespace LC\Portal\Tests\Federation;

use Exception;
use LC\Portal\Federation\ForeignKeyListFetcher;
use PHPUnit\Framework\TestCase;

class ForeignKeyListFetcherTest extends TestCase
{
    /**
     * @return void
     */
    public function testFetch()
    {
        $tmpDir = sprintf('%s/%s', sys_get_temp_dir(), bin2hex(random_bytes(10)));
        mkdir($tmpDir);
        $foreignKeyListFetcher = new ForeignKeyListFetcher($tmpDir);
        $foreignKeyListFetcher->update(
            new TestHttpClient(),
            'https://disco.eduvpn.org/v2/server_list.json',
            [
                'RWTzeZBS1e59OQtxV7UBpG/NfCpuAeOxQQqvqLqp1zVq4rGT5Fyq2gGN',
            ]
        );
        $this->assertSame(
            [
                '07wQOlf0uFqs5PL7zkcnMY73HpH0_uP09l68pK1YgBI' => [
                    'public_key' => 'bRTz33KIuYo_w_-AbzNtdmLDqIm11_eGiHXQniojxY4',
                    'base_uri' => 'https://eduvpn.deic.dk/',
                ],
                'xGAxo6xS9R3CHXc_fYhzeYACoB1dTHCen1mXEd-vmhE' => [
                    'public_key' => 'O53DTgB956magGaWpVCKtdKIMYqywS3FMAC5fHXdFNg',
                    'base_uri' => 'https://nl.eduvpn.org/',
                ],
            ],
            $foreignKeyListFetcher->extract()
        );
    }

    /**
     * @return void
     */
    public function testFetchRollback()
    {
        try {
            $tmpDir = sprintf('%s/%s', sys_get_temp_dir(), bin2hex(random_bytes(16)));
            mkdir($tmpDir);
            // copy the v=5 file to the tmpDir
            copy(__DIR__.'/data/server_list.json', $tmpDir.'/server_list.json');
            $foreignKeyListFetcher = new ForeignKeyListFetcher($tmpDir);
            $foreignKeyListFetcher->update(
                new TestHttpClient(),
                'https://disco.eduvpn.org/v2/server_list_rollback.json',
                [
                    'RWTzeZBS1e59OQtxV7UBpG/NfCpuAeOxQQqvqLqp1zVq4rGT5Fyq2gGN',
                ]
            );
            $this->fail();
        } catch (Exception $e) {
            $this->assertSame('rollback to older version of file not allowed, we have "5", we got "4"', $e->getMessage());
        }
    }
}