8
8
import XCTest
9
9
10
10
class ContentProtectionServiceTests : XCTestCase {
11
- func testLinks( ) {
12
- let service = TestContentProtectionService ( )
13
-
14
- XCTAssertEqual (
15
- service. links,
16
- [
17
- Link (
18
- href: " /~readium/content-protection " ,
19
- type: " application/vnd.readium.content-protection+json "
20
- ) ,
21
- Link (
22
- href: " /~readium/rights/copy{?text,peek} " ,
23
- type: " application/vnd.readium.rights.copy+json " ,
24
- templated: true
25
- ) ,
26
- Link (
27
- href: " /~readium/rights/print{?pageCount,peek} " ,
28
- type: " application/vnd.readium.rights.print+json " ,
29
- templated: true
30
- ) ,
31
- ]
32
- )
33
- }
34
-
35
- func testGetContentProtection( ) throws {
36
- let service = TestContentProtectionService (
37
- isRestricted: true ,
38
- error: Publication . OpeningError. notFound,
39
- credentials: " open sesame " ,
40
- rights: AllRestrictedUserRights ( ) ,
41
- name: . localized( [ " en " : " DRM " , " fr " : " GDN " ] )
42
- )
43
-
44
- let resource = service. get ( link: Link ( href: " /~readium/content-protection " ) )
45
-
46
- XCTAssertEqual (
47
- try resource? . readAsString ( ) . get ( ) ,
48
- """
49
- { " error " : " File not found " , " isRestricted " :true, " name " :{ " en " : " DRM " , " fr " : " GDN " }, " rights " :{ " canCopy " :false, " canPrint " :false}}
50
- """
51
- )
52
- }
53
-
54
- func testGetCopy( ) {
55
- let rights = TestUserRights ( copyCount: 10 )
56
- let service = TestContentProtectionService ( rights: rights)
57
-
58
- XCTAssertEqual ( try service. getCopy ( text: " banana " , peek: false ) . readAsString ( ) . get ( ) , " {} " )
59
- XCTAssertEqual ( rights. copyCount, 4 )
60
- XCTAssertThrowsError ( try service. getCopy ( text: " banana " , peek: false ) . readAsString ( ) . get ( ) )
61
- XCTAssertEqual ( rights. copyCount, 4 )
62
- }
63
-
64
- func testGetPeekCopy( ) {
65
- let rights = TestUserRights ( copyCount: 10 )
66
- let service = TestContentProtectionService ( rights: rights)
67
-
68
- XCTAssertEqual ( try service. getCopy ( text: " banana " , peek: true ) . readAsString ( ) . get ( ) , " {} " )
69
- XCTAssertEqual ( rights. copyCount, 10 )
70
- XCTAssertEqual ( try service. getCopy ( text: " banana " , peek: true ) . readAsString ( ) . get ( ) , " {} " )
71
- XCTAssertEqual ( rights. copyCount, 10 )
72
- }
73
-
74
- func testGetCopyBadRequest( ) {
75
- let rights = TestUserRights ( copyCount: 10 )
76
- let service = TestContentProtectionService ( rights: rights)
77
-
78
- XCTAssertThrowsError ( try service. get ( link: Link ( href: " /~readium/rights/copy?peek=query " ) ) ? . read ( ) . get ( ) )
79
- }
80
-
81
- func testGetPrint( ) {
82
- let rights = TestUserRights ( printCount: 10 )
83
- let service = TestContentProtectionService ( rights: rights)
84
-
85
- XCTAssertEqual ( try service. getPrint ( pageCount: 6 , peek: false ) . readAsString ( ) . get ( ) , " {} " )
86
- XCTAssertEqual ( rights. printCount, 4 )
87
- XCTAssertThrowsError ( try service. getPrint ( pageCount: 6 , peek: false ) . readAsString ( ) . get ( ) )
88
- XCTAssertEqual ( rights. printCount, 4 )
89
- }
90
-
91
- func testGetPeekPrint( ) {
92
- let rights = TestUserRights ( printCount: 10 )
93
- let service = TestContentProtectionService ( rights: rights)
94
-
95
- XCTAssertEqual ( try service. getPrint ( pageCount: 6 , peek: true ) . readAsString ( ) . get ( ) , " {} " )
96
- XCTAssertEqual ( rights. printCount, 10 )
97
- XCTAssertEqual ( try service. getPrint ( pageCount: 6 , peek: true ) . readAsString ( ) . get ( ) , " {} " )
98
- XCTAssertEqual ( rights. printCount, 10 )
99
- }
100
-
101
- func testGetPrintBadRequest( ) {
102
- let rights = TestUserRights ( printCount: 10 )
103
- let service = TestContentProtectionService ( rights: rights)
104
-
105
- XCTAssertThrowsError ( try service. get ( link: Link ( href: " /~readium/rights/print?peek=query " ) ) ? . read ( ) . get ( ) )
106
- }
107
-
108
11
func testGetUnknown( ) {
109
12
let service = TestContentProtectionService ( )
110
13
@@ -114,7 +17,7 @@ class ContentProtectionServiceTests: XCTestCase {
114
17
}
115
18
116
19
/// The Publication helpers will use the `ContentProtectionService` if there's one.
117
- func testPublicationHelpers( ) {
20
+ func testPublicationHelpers( ) async {
118
21
let publication = makePublication ( service: { _ in
119
22
TestContentProtectionService (
120
23
isRestricted: true ,
@@ -129,29 +32,43 @@ class ContentProtectionServiceTests: XCTestCase {
129
32
XCTAssertTrue ( publication. isRestricted)
130
33
XCTAssertNotNil ( publication. protectionError)
131
34
XCTAssertEqual ( publication. credentials, " open sesame " )
132
- XCTAssertFalse ( publication. rights. canCopy)
133
- XCTAssertFalse ( publication. rights. canCopy ( text: String ( repeating: " word " , count: 99999 ) ) )
134
- XCTAssertFalse ( publication. rights. copy ( text: String ( repeating: " word " , count: 99999 ) ) )
135
- XCTAssertFalse ( publication. rights. canPrint)
136
- XCTAssertFalse ( publication. rights. canPrint ( pageCount: 99999 ) )
137
- XCTAssertFalse ( publication. rights. print ( pageCount: 99999 ) )
35
+
36
+ let r1 = await publication. rights. canCopy ( text: String ( repeating: " word " , count: 99999 ) )
37
+ XCTAssertFalse ( r1)
38
+
39
+ let r2 = await publication. rights. copy ( text: String ( repeating: " word " , count: 99999 ) )
40
+ XCTAssertFalse ( r2)
41
+
42
+ let r3 = await publication. rights. canPrint ( pageCount: 99999 )
43
+ XCTAssertFalse ( r3)
44
+
45
+ let r4 = await publication. rights. print ( pageCount: 99999 )
46
+ XCTAssertFalse ( r4)
47
+
138
48
XCTAssertEqual ( publication. protectionLocalizedName, . localized( [ " en " : " DRM " , " fr " : " GDN " ] ) )
139
49
XCTAssertEqual ( publication. protectionName, " DRM " )
140
50
}
141
51
142
- func testPublicationHelpersFallbacks( ) {
52
+ func testPublicationHelpersFallbacks( ) async {
143
53
let publication = makePublication ( service: nil )
144
54
145
55
XCTAssertFalse ( publication. isProtected)
146
56
XCTAssertFalse ( publication. isRestricted)
147
57
XCTAssertNil ( publication. protectionError)
148
58
XCTAssertNil ( publication. credentials)
149
- XCTAssertTrue ( publication. rights. canCopy)
150
- XCTAssertTrue ( publication. rights. canCopy ( text: String ( repeating: " word " , count: 99999 ) ) )
151
- XCTAssertTrue ( publication. rights. copy ( text: String ( repeating: " word " , count: 99999 ) ) )
152
- XCTAssertTrue ( publication. rights. canPrint)
153
- XCTAssertTrue ( publication. rights. canPrint ( pageCount: 99999 ) )
154
- XCTAssertTrue ( publication. rights. print ( pageCount: 99999 ) )
59
+
60
+ let r1 = await publication. rights. canCopy ( text: String ( repeating: " word " , count: 99999 ) )
61
+ XCTAssertTrue ( r1)
62
+
63
+ let r2 = await publication. rights. copy ( text: String ( repeating: " word " , count: 99999 ) )
64
+ XCTAssertTrue ( r2)
65
+
66
+ let r3 = await publication. rights. canPrint ( pageCount: 99999 )
67
+ XCTAssertTrue ( r3)
68
+
69
+ let r4 = await publication. rights. print ( pageCount: 99999 )
70
+ XCTAssertTrue ( r4)
71
+
155
72
XCTAssertNil ( publication. protectionLocalizedName)
156
73
XCTAssertNil ( publication. protectionName)
157
74
}
0 commit comments