11
11
12
12
use OCA \EndToEndEncryption \UserAgentManager ;
13
13
use OCP \IConfig ;
14
+ use OCP \IRequest ;
14
15
use Test \TestCase ;
15
16
16
17
class UserAgentManagerTest extends TestCase {
@@ -21,14 +22,13 @@ class UserAgentManagerTest extends TestCase {
21
22
*
22
23
* @dataProvider supportsEndToEndEncryptionDataProvider
23
24
*/
24
- public function testSupportsEndToEndEncryption (string $ client ,
25
- bool $ expected ): void {
26
- $ supportedUAs = $ this ->getSupportedUserAgents ();
27
- $ userAgentManager = $ this ->getUserAgentManager (['getSupportedUserAgents ' ]);
28
- $ userAgentManager ->expects ($ this ->once ())
29
- ->method ('getSupportedUserAgents ' )
30
- ->willReturn ($ supportedUAs );
31
-
25
+ public function testSupportsEndToEndEncryption (string $ client , bool $ expected ): void {
26
+ /** @var IRequest&\PHPUnit\Framework\MockObject\MockObject */
27
+ $ request = $ this ->createMock (IRequest::class);
28
+ $ request ->expects ($ this ->any ())
29
+ ->method ('getHeader ' )
30
+ ->willReturn ('' );
31
+ $ userAgentManager = new UserAgentManager (\OCP \Server::get (IConfig::class), $ request );
32
32
$ actual = $ userAgentManager ->supportsEndToEndEncryption ($ client );
33
33
$ this ->assertEquals ($ expected , $ actual );
34
34
}
@@ -42,9 +42,12 @@ public function supportsEndToEndEncryptionDataProvider(): array {
42
42
['Mozilla/5.0 (Android) Nextcloud-android/1.9.9 ' , false ],
43
43
['Mozilla/5.0 (Android) Nextcloud-android/2.1.3 ' , false ],
44
44
['Mozilla/5.0 (Android) Nextcloud-android/2.3.3 ' , false ],
45
- ['Mozilla/5.0 (Android) Nextcloud-android/2.3.4 ' , true ],
46
- ['Mozilla/5.0 (Android) Nextcloud-android/2.4.9 ' , true ],
47
- ['Mozilla/5.0 (Android) Nextcloud-android/3.0.0 ' , true ],
45
+ ['Mozilla/5.0 (Android) Nextcloud-android/2.3.4 ' , false ],
46
+ ['Mozilla/5.0 (Android) Nextcloud-android/2.4.9 ' , false ],
47
+ ['Mozilla/5.0 (Android) Nextcloud-android/3.0.0 ' , false ],
48
+ ['Mozilla/5.0 (Android) Nextcloud-android/3.13.0 ' , true ],
49
+ ['Mozilla/5.0 (Android) Nextcloud-android/3.13.1 ' , true ],
50
+ ['Mozilla/5.0 (Android) Nextcloud-android/3.14.0 ' , true ],
48
51
// Android without version
49
52
['Mozilla/5.0 (Android) Nextcloud-android/beta ' , false ],
50
53
['Mozilla/5.0 (Android) Nextcloud-android/ ' , false ],
@@ -53,9 +56,11 @@ public function supportsEndToEndEncryptionDataProvider(): array {
53
56
['Mozilla/5.0 (iOS) Nextcloud-iOS/1.9.9 ' , false ],
54
57
['Mozilla/5.0 (iOS) Nextcloud-iOS/2.1.3 ' , false ],
55
58
['Mozilla/5.0 (iOS) Nextcloud-iOS/2.3.3 ' , false ],
56
- ['Mozilla/5.0 (iOS) Nextcloud-iOS/2.3.4 ' , true ],
57
- ['Mozilla/5.0 (iOS) Nextcloud-iOS/2.4.9 ' , true ],
58
- ['Mozilla/5.0 (iOS) Nextcloud-iOS/3.0.0 ' , true ],
59
+ ['Mozilla/5.0 (iOS) Nextcloud-iOS/2.3.4 ' , false ],
60
+ ['Mozilla/5.0 (iOS) Nextcloud-iOS/2.4.9 ' , false ],
61
+ ['Mozilla/5.0 (iOS) Nextcloud-iOS/3.0.0 ' , false ],
62
+ ['Mozilla/5.0 (iOS) Nextcloud-iOS/3.0.5 ' , true ],
63
+ ['Mozilla/5.0 (iOS) Nextcloud-iOS/3.1.0 ' , true ],
59
64
// iOS without version
60
65
['Mozilla/5.0 (iOS) Nextcloud-iOS/beta ' , false ],
61
66
['Mozilla/5.0 (iOS) Nextcloud-iOS/ ' , false ],
@@ -64,43 +69,15 @@ public function supportsEndToEndEncryptionDataProvider(): array {
64
69
['Mozilla/5.0 (Macintosh) mirall/1.9.9stable (build 20200303) (Nextcloud) ' , false ],
65
70
['Mozilla/5.0 (Macintosh) mirall/2.1.3rc (build 20200303) ' , false ],
66
71
['Mozilla/5.0 (Macintosh) mirall/2.3.3 ' , false ],
67
- ['Mozilla/5.0 (Linux) mirall/2.3.4 ' , true ],
68
- ['Mozilla/5.0 (Macintosh) csyncoC/2.4.9RC (build 20200303) (Nextcloud) ' , true ],
72
+ ['Mozilla/5.0 (Linux) mirall/2.3.4 ' , false ],
73
+ ['Mozilla/5.0 (Macintosh) csyncoC/2.4.9RC (build 20200303) (Nextcloud) ' , false ],
69
74
['Mozilla/5.0 (Macintosh) mirall/3.0.0 (build 20200303) ' , true ],
75
+ ['Mozilla/5.0 (Macintosh) mirall/3.0.1 (build 20200303) ' , true ],
76
+ ['Mozilla/5.0 (Macintosh) mirall/3.1.1 (build 20200303) ' , true ],
70
77
// Desktop without version
71
78
['Mozilla/5.0 (Macintosh) mirall/ (build 20200303) ' , false ],
72
79
['Mozilla/5.0 (Macintosh) mirall/ ' , false ],
73
80
['Mozilla/5.0 (Macintosh) mirall ' , false ],
74
81
];
75
82
}
76
-
77
- private function getUserAgentManager (array $ mockedMethods = []) {
78
- if (empty ($ mockedMethods )) {
79
- return new UserAgentManager (\OCP \Server::get (IConfig::class));
80
- }
81
-
82
- return $ this
83
- ->getMockBuilder (UserAgentManager::class)
84
- ->setMethods ($ mockedMethods )
85
- ->disableOriginalConstructor ()
86
- ->getMock ();
87
- }
88
-
89
- /**
90
- * This function returns the user agents to test against
91
- * It keeps the original regex, but replaces the exact version
92
- * so this test suite doesn't break on a simple version bump
93
- *
94
- * @return array
95
- */
96
- private function getSupportedUserAgents (): array {
97
- $ userAgentManager = new UserAgentManager (\OCP \Server::get (IConfig::class));
98
- $ originalRules = self ::invokePrivate ($ userAgentManager , 'getSupportedUserAgents ' );
99
-
100
- foreach ($ originalRules as $ regex => $ version ) {
101
- $ originalRules [$ regex ] = '2.3.4 ' ;
102
- }
103
-
104
- return $ originalRules ;
105
- }
106
83
}
0 commit comments