Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1441 ariadna 1
<?php
2
// This file is part of Moodle - http://moodle.org/
3
//
4
// Moodle is free software: you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation, either version 3 of the License, or
7
// (at your option) any later version.
8
//
9
// Moodle is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
// GNU General Public License for more details.
13
//
14
// You should have received a copy of the GNU General Public License
15
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
16
 
17
declare(strict_types=1);
18
 
19
namespace core_badges;
20
 
21
/**
22
 * Unit tests for backpack_api class.
23
 *
24
 * @package     core_badges
25
 * @copyright   2025 Sara Arjona <sara@moodle.com>
26
 * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
27
 */
28
#[\PHPUnit\Framework\Attributes\CoversClass(backpack_api::class)]
29
final class backpack_api_test extends \advanced_testcase {
30
    /**
31
     * Test get_providers function.
32
     */
33
    public function test_get_providers(): void {
34
        global $CFG;
35
 
36
        $providers = backpack_api::get_providers();
37
        $this->assertCount(2, $providers);
38
        $this->assertArrayHasKey(backpack_api::PROVIDER_CANVAS_CREDENTIALS, $providers);
39
        $this->assertArrayHasKey(backpack_api::PROVIDER_OTHER, $providers);
40
    }
41
 
42
    /**
43
     * Test get_regions function.
44
     */
45
    public function test_get_regions(): void {
46
        global $CFG;
47
 
48
        $this->resetAfterTest();
49
 
50
        // Default: 5 regions (Canvas Credentials).
51
        $regions = backpack_api::get_regions();
52
        $this->assertCount(5, $regions);
53
 
54
        // No regions.
55
        $CFG->badges_canvasregions = '';
56
        $regions = backpack_api::get_regions();
57
        $this->assertEmpty($regions);
58
 
59
        // One region.
60
        $CFG->badges_canvasregions = 'Australia|https://au.badgr.io|https://api.au.badgr.io/v2';
61
        $regions = backpack_api::get_regions();
62
        $this->assertCount(1, $regions);
63
        $this->assertEquals('Australia', $regions[0]['name']);
64
        $this->assertEquals('https://au.badgr.io', $regions[0]['url']);
65
        $this->assertEquals('https://api.au.badgr.io/v2', $regions[0]['apiurl']);
66
 
67
        // Two regions + empty lines + invalid line.
68
        $CFG->badges_canvasregions = "\nUnited States|https://badgr.io|https://api.badgr.io/v2\ninvalidline\n" .
69
                                     'Europe|https://eu.badgr.io|https://api.eu.badgr.io/v2' . "\n";
70
        $regions = backpack_api::get_regions();
71
        $this->assertCount(2, $regions);
72
        $expected = [
73
            [
74
                'name' => 'United States',
75
                'url' => 'https://badgr.io',
76
                'apiurl' => 'https://api.badgr.io/v2',
77
            ],
78
            [
79
                'name' => 'Europe',
80
                'url' => 'https://eu.badgr.io',
81
                'apiurl' => 'https://api.eu.badgr.io/v2',
82
            ],
83
        ];
84
        $this->assertEquals($expected, $regions);
85
    }
86
 
87
    /**
88
     * Test display_canvas_credentials_fields function.
89
     */
90
    public function test_display_canvas_credentials_fields(): void {
91
        global $CFG;
92
 
93
        $this->resetAfterTest();
94
 
95
        // By default, the fields should be displayed (5 regions).
96
        $this->assertTrue(backpack_api::display_canvas_credentials_fields());
97
 
98
        // No regions configured, fields should not be displayed.
99
        $CFG->badges_canvasregions = '';
100
        $this->assertFalse(backpack_api::display_canvas_credentials_fields());
101
 
102
        // One region configured, fields should be displayed.
103
        $CFG->badges_canvasregions = 'Australia|https://au.badgr.io|https://api.au.badgr.io/v2';
104
        $this->assertTrue(backpack_api::display_canvas_credentials_fields());
105
    }
106
 
107
    /**
108
     * Test get_region_url and get_region_api_url functions.
109
     */
110
    public function test_get_region_urls(): void {
111
        global $CFG;
112
 
113
        $this->resetAfterTest();
114
 
115
        // Default: 5 regions (Canvas Credentials).
116
        $regions = backpack_api::get_regions();
117
        $this->assertCount(5, $regions);
118
        $this->assertEquals('https://au.badgr.io', backpack_api::get_region_url(0));
119
        $this->assertEquals('https://ca.badgr.io', backpack_api::get_region_url(1));
120
        $this->assertEquals('https://eu.badgr.io', backpack_api::get_region_url(2));
121
        $this->assertEquals('https://sg.badgr.io', backpack_api::get_region_url(3));
122
        $this->assertEquals('https://badgr.io', backpack_api::get_region_url(4));
123
        $this->assertEquals('https://api.au.badgr.io/v2', backpack_api::get_region_api_url(0));
124
        $this->assertEquals('https://api.ca.badgr.io/v2', backpack_api::get_region_api_url(1));
125
        $this->assertEquals('https://api.eu.badgr.io/v2', backpack_api::get_region_api_url(2));
126
        $this->assertEquals('https://api.sg.badgr.io/v2', backpack_api::get_region_api_url(3));
127
        $this->assertEquals('https://api.badgr.io/v2', backpack_api::get_region_api_url(4));
128
 
129
        // Wrong index.
130
        $this->assertNull(backpack_api::get_region_url(10));
131
        $this->assertNull(backpack_api::get_region_api_url(10));
132
 
133
        // No regions.
134
        $CFG->badges_canvasregions = '';
135
        $this->assertNull(backpack_api::get_region_url(0));
136
        $this->assertNull(backpack_api::get_region_api_url(0));
137
    }
138
 
139
    /**
140
     * Test get_regionid_from_url function.
141
     */
142
    public function test_get_regionid_from_url(): void {
143
        global $CFG;
144
 
145
        $this->resetAfterTest();
146
 
147
        // Default: 5 regions (Canvas Credentials).
148
        $regions = backpack_api::get_regions();
149
        $this->assertCount(5, $regions);
150
        $this->assertEquals(0, backpack_api::get_regionid_from_url('https://au.badgr.io'));
151
        $this->assertEquals(1, backpack_api::get_regionid_from_url('https://ca.badgr.io'));
152
        $this->assertEquals(2, backpack_api::get_regionid_from_url('https://eu.badgr.io'));
153
        $this->assertEquals(3, backpack_api::get_regionid_from_url('https://sg.badgr.io'));
154
        $this->assertEquals(4, backpack_api::get_regionid_from_url('https://badgr.io'));
155
        // Test with trailing slash.
156
        $this->assertEquals(0, backpack_api::get_regionid_from_url('https://au.badgr.io/'));
157
 
158
        // Wrong URL.
159
        $this->assertEquals(4, backpack_api::get_regionid_from_url('https://unknown.badgr.io'));
160
 
161
        // One region.
162
        $CFG->badges_canvasregions = 'Australia|https://au.badgr.io|https://api.au.badgr.io/v2';
163
        $regions = backpack_api::get_regions();
164
        $this->assertEquals(0, backpack_api::get_regionid_from_url('https://au.badgr.io'));
165
 
166
        // No regions.
167
        $CFG->badges_canvasregions = '';
168
        $this->assertEquals(backpack_api::REGION_EMPTY, backpack_api::get_regionid_from_url('https://au.badgr.io'));
169
    }
170
 
171
    /**
172
     * Test is_canvas_credentials_region function.
173
     */
174
    public function test_is_canvas_credentials_region(): void {
175
        global $CFG;
176
 
177
        $this->resetAfterTest();
178
 
179
        // Default: 5 regions (Canvas Credentials).
180
        $regions = backpack_api::get_regions();
181
        $this->assertCount(5, $regions);
182
        $this->assertTrue(backpack_api::is_canvas_credentials_region('https://au.badgr.io'));
183
        $this->assertTrue(backpack_api::is_canvas_credentials_region('https://ca.badgr.io'));
184
        $this->assertTrue(backpack_api::is_canvas_credentials_region('https://eu.badgr.io'));
185
        $this->assertTrue(backpack_api::is_canvas_credentials_region('https://sg.badgr.io'));
186
        $this->assertTrue(backpack_api::is_canvas_credentials_region('https://badgr.io'));
187
 
188
        // Non Canvas URL.
189
        $this->assertFalse(backpack_api::is_canvas_credentials_region('https://unknown.badgr.io'));
190
 
191
        // No regions.
192
        $CFG->badges_canvasregions = '';
193
        $this->assertFalse(backpack_api::is_canvas_credentials_region('https://au.badgr.io'));
194
    }
195
}