1(* 2Module: Test_Cups 3 Provides unit tests and examples for the <Cups> lens. 4*) 5 6module Test_Cups = 7 8(* Variable: conf *) 9let conf = "# Sample configuration file for the CUPS scheduler. 10LogLevel warn 11 12# Deactivate CUPS' internal logrotating, as we provide a better one, especially 13# LogLevel debug2 gets usable now 14MaxLogSize 0 15 16# Administrator user group... 17SystemGroup lpadmin 18 19 20# Only listen for connections from the local machine. 21Listen localhost:631 22Listen /var/run/cups/cups.sock 23 24# Show shared printers on the local network. 25BrowseOrder allow,deny 26BrowseAllow all 27BrowseLocalProtocols CUPS dnssd 28BrowseAddress @LOCAL 29 30# Default authentication type, when authentication is required... 31DefaultAuthType Basic 32 33# Web interface setting... 34WebInterface Yes 35 36# Restrict access to the server... 37<Location /> 38 Order allow,deny 39</Location> 40 41# Restrict access to the admin pages... 42<Location /admin> 43 Order allow,deny 44</Location> 45 46# Restrict access to configuration files... 47<Location /admin/conf> 48 AuthType Default 49 Require user @SYSTEM 50 Order allow,deny 51</Location> 52 53# Set the default printer/job policies... 54<Policy default> 55 # Job/subscription privacy... 56 JobPrivateAccess default 57 JobPrivateValues default 58 SubscriptionPrivateAccess default 59 SubscriptionPrivateValues default 60 61 # Job-related operations must be done by the owner or an administrator... 62 <Limit Create-Job Print-Job Print-URI Validate-Job> 63 Order deny,allow 64 </Limit> 65 66 <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document> 67 Require user @OWNER @SYSTEM 68 Order deny,allow 69 </Limit> 70 71 # All administration operations require an administrator to authenticate... 72 <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default CUPS-Get-Devices> 73 AuthType Default 74 Require user @SYSTEM 75 Order deny,allow 76 </Limit> 77 78 # All printer operations require a printer operator to authenticate... 79 <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs> 80 AuthType Default 81 Require user @SYSTEM 82 Order deny,allow 83 </Limit> 84 85 # Only the owner or an administrator can cancel or authenticate a job... 86 <Limit Cancel-Job CUPS-Authenticate-Job> 87 Require user @OWNER @SYSTEM 88 Order deny,allow 89 </Limit> 90 91 <Limit All> 92 Order deny,allow 93 </Limit> 94</Policy> 95 96# Set the authenticated printer/job policies... 97<Policy authenticated> 98 # Job/subscription privacy... 99 JobPrivateAccess default 100 JobPrivateValues default 101 SubscriptionPrivateAccess default 102 SubscriptionPrivateValues default 103 104 # Job-related operations must be done by the owner or an administrator... 105 <Limit Create-Job Print-Job Print-URI Validate-Job> 106 AuthType Default 107 Order deny,allow 108 </Limit> 109 110 <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document> 111 AuthType Default 112 Require user @OWNER @SYSTEM 113 Order deny,allow 114 </Limit> 115 116 # All administration operations require an administrator to authenticate... 117 <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default> 118 AuthType Default 119 Require user @SYSTEM 120 Order deny,allow 121 </Limit> 122 123 # All printer operations require a printer operator to authenticate... 124 <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs> 125 AuthType Default 126 Require user @SYSTEM 127 Order deny,allow 128 </Limit> 129 130 # Only the owner or an administrator can cancel or authenticate a job... 131 <Limit Cancel-Job CUPS-Authenticate-Job> 132 AuthType Default 133 Require user @OWNER @SYSTEM 134 Order deny,allow 135 </Limit> 136 137 <Limit All> 138 Order deny,allow 139 </Limit> 140</Policy> 141" 142 143(* Test: Simplevars.lns *) 144test Cups.lns get conf = 145 { "#comment" = "Sample configuration file for the CUPS scheduler." } 146 { "directive" = "LogLevel" 147 { "arg" = "warn" } 148 } 149 { } 150 { "#comment" = "Deactivate CUPS' internal logrotating, as we provide a better one, especially" } 151 { "#comment" = "LogLevel debug2 gets usable now" } 152 { "directive" = "MaxLogSize" 153 { "arg" = "0" } 154 } 155 { } 156 { "#comment" = "Administrator user group..." } 157 { "directive" = "SystemGroup" 158 { "arg" = "lpadmin" } 159 } 160 { } 161 { } 162 { "#comment" = "Only listen for connections from the local machine." } 163 { "directive" = "Listen" 164 { "arg" = "localhost:631" } 165 } 166 { "directive" = "Listen" 167 { "arg" = "/var/run/cups/cups.sock" } 168 } 169 { } 170 { "#comment" = "Show shared printers on the local network." } 171 { "directive" = "BrowseOrder" 172 { "arg" = "allow,deny" } 173 } 174 { "directive" = "BrowseAllow" 175 { "arg" = "all" } 176 } 177 { "directive" = "BrowseLocalProtocols" 178 { "arg" = "CUPS" } 179 { "arg" = "dnssd" } 180 } 181 { "directive" = "BrowseAddress" 182 { "arg" = "@LOCAL" } 183 } 184 { } 185 { "#comment" = "Default authentication type, when authentication is required..." } 186 { "directive" = "DefaultAuthType" 187 { "arg" = "Basic" } 188 } 189 { } 190 { "#comment" = "Web interface setting..." } 191 { "directive" = "WebInterface" 192 { "arg" = "Yes" } 193 } 194 { } 195 { "#comment" = "Restrict access to the server..." } 196 { "Location" 197 { "arg" = "/" } 198 { "directive" = "Order" 199 { "arg" = "allow,deny" } 200 } 201 } 202 { "#comment" = "Restrict access to the admin pages..." } 203 { "Location" 204 { "arg" = "/admin" } 205 { "directive" = "Order" 206 { "arg" = "allow,deny" } 207 } 208 } 209 { "#comment" = "Restrict access to configuration files..." } 210 { "Location" 211 { "arg" = "/admin/conf" } 212 { "directive" = "AuthType" 213 { "arg" = "Default" } 214 } 215 { "directive" = "Require" 216 { "arg" = "user" } 217 { "arg" = "@SYSTEM" } 218 } 219 { "directive" = "Order" 220 { "arg" = "allow,deny" } 221 } 222 } 223 { "#comment" = "Set the default printer/job policies..." } 224 { "Policy" 225 { "arg" = "default" } 226 { "#comment" = "Job/subscription privacy..." } 227 { "directive" = "JobPrivateAccess" 228 { "arg" = "default" } 229 } 230 { "directive" = "JobPrivateValues" 231 { "arg" = "default" } 232 } 233 { "directive" = "SubscriptionPrivateAccess" 234 { "arg" = "default" } 235 } 236 { "directive" = "SubscriptionPrivateValues" 237 { "arg" = "default" } 238 } 239 { } 240 { "#comment" = "Job-related operations must be done by the owner or an administrator..." } 241 { "Limit" 242 { "arg" = "Create-Job" } 243 { "arg" = "Print-Job" } 244 { "arg" = "Print-URI" } 245 { "arg" = "Validate-Job" } 246 { "directive" = "Order" 247 { "arg" = "deny,allow" } 248 } 249 } 250 { "Limit" 251 { "arg" = "Send-Document" } 252 { "arg" = "Send-URI" } 253 { "arg" = "Hold-Job" } 254 { "arg" = "Release-Job" } 255 { "arg" = "Restart-Job" } 256 { "arg" = "Purge-Jobs" } 257 { "arg" = "Set-Job-Attributes" } 258 { "arg" = "Create-Job-Subscription" } 259 { "arg" = "Renew-Subscription" } 260 { "arg" = "Cancel-Subscription" } 261 { "arg" = "Get-Notifications" } 262 { "arg" = "Reprocess-Job" } 263 { "arg" = "Cancel-Current-Job" } 264 { "arg" = "Suspend-Current-Job" } 265 { "arg" = "Resume-Job" } 266 { "arg" = "Cancel-My-Jobs" } 267 { "arg" = "Close-Job" } 268 { "arg" = "CUPS-Move-Job" } 269 { "arg" = "CUPS-Get-Document" } 270 { "directive" = "Require" 271 { "arg" = "user" } 272 { "arg" = "@OWNER" } 273 { "arg" = "@SYSTEM" } 274 } 275 { "directive" = "Order" 276 { "arg" = "deny,allow" } 277 } 278 } 279 { "#comment" = "All administration operations require an administrator to authenticate..." } 280 { "Limit" 281 { "arg" = "CUPS-Add-Modify-Printer" } 282 { "arg" = "CUPS-Delete-Printer" } 283 { "arg" = "CUPS-Add-Modify-Class" } 284 { "arg" = "CUPS-Delete-Class" } 285 { "arg" = "CUPS-Set-Default" } 286 { "arg" = "CUPS-Get-Devices" } 287 { "directive" = "AuthType" 288 { "arg" = "Default" } 289 } 290 { "directive" = "Require" 291 { "arg" = "user" } 292 { "arg" = "@SYSTEM" } 293 } 294 { "directive" = "Order" 295 { "arg" = "deny,allow" } 296 } 297 } 298 { "#comment" = "All printer operations require a printer operator to authenticate..." } 299 { "Limit" 300 { "arg" = "Pause-Printer" } 301 { "arg" = "Resume-Printer" } 302 { "arg" = "Enable-Printer" } 303 { "arg" = "Disable-Printer" } 304 { "arg" = "Pause-Printer-After-Current-Job" } 305 { "arg" = "Hold-New-Jobs" } 306 { "arg" = "Release-Held-New-Jobs" } 307 { "arg" = "Deactivate-Printer" } 308 { "arg" = "Activate-Printer" } 309 { "arg" = "Restart-Printer" } 310 { "arg" = "Shutdown-Printer" } 311 { "arg" = "Startup-Printer" } 312 { "arg" = "Promote-Job" } 313 { "arg" = "Schedule-Job-After" } 314 { "arg" = "Cancel-Jobs" } 315 { "arg" = "CUPS-Accept-Jobs" } 316 { "arg" = "CUPS-Reject-Jobs" } 317 { "directive" = "AuthType" 318 { "arg" = "Default" } 319 } 320 { "directive" = "Require" 321 { "arg" = "user" } 322 { "arg" = "@SYSTEM" } 323 } 324 { "directive" = "Order" 325 { "arg" = "deny,allow" } 326 } 327 } 328 { "#comment" = "Only the owner or an administrator can cancel or authenticate a job..." } 329 { "Limit" 330 { "arg" = "Cancel-Job" } 331 { "arg" = "CUPS-Authenticate-Job" } 332 { "directive" = "Require" 333 { "arg" = "user" } 334 { "arg" = "@OWNER" } 335 { "arg" = "@SYSTEM" } 336 } 337 { "directive" = "Order" 338 { "arg" = "deny,allow" } 339 } 340 } 341 { "Limit" 342 { "arg" = "All" } 343 { "directive" = "Order" 344 { "arg" = "deny,allow" } 345 } 346 } 347 } 348 { "#comment" = "Set the authenticated printer/job policies..." } 349 { "Policy" 350 { "arg" = "authenticated" } 351 { "#comment" = "Job/subscription privacy..." } 352 { "directive" = "JobPrivateAccess" 353 { "arg" = "default" } 354 } 355 { "directive" = "JobPrivateValues" 356 { "arg" = "default" } 357 } 358 { "directive" = "SubscriptionPrivateAccess" 359 { "arg" = "default" } 360 } 361 { "directive" = "SubscriptionPrivateValues" 362 { "arg" = "default" } 363 } 364 { } 365 { "#comment" = "Job-related operations must be done by the owner or an administrator..." } 366 { "Limit" 367 { "arg" = "Create-Job" } 368 { "arg" = "Print-Job" } 369 { "arg" = "Print-URI" } 370 { "arg" = "Validate-Job" } 371 { "directive" = "AuthType" 372 { "arg" = "Default" } 373 } 374 { "directive" = "Order" 375 { "arg" = "deny,allow" } 376 } 377 } 378 { "Limit" 379 { "arg" = "Send-Document" } 380 { "arg" = "Send-URI" } 381 { "arg" = "Hold-Job" } 382 { "arg" = "Release-Job" } 383 { "arg" = "Restart-Job" } 384 { "arg" = "Purge-Jobs" } 385 { "arg" = "Set-Job-Attributes" } 386 { "arg" = "Create-Job-Subscription" } 387 { "arg" = "Renew-Subscription" } 388 { "arg" = "Cancel-Subscription" } 389 { "arg" = "Get-Notifications" } 390 { "arg" = "Reprocess-Job" } 391 { "arg" = "Cancel-Current-Job" } 392 { "arg" = "Suspend-Current-Job" } 393 { "arg" = "Resume-Job" } 394 { "arg" = "Cancel-My-Jobs" } 395 { "arg" = "Close-Job" } 396 { "arg" = "CUPS-Move-Job" } 397 { "arg" = "CUPS-Get-Document" } 398 { "directive" = "AuthType" 399 { "arg" = "Default" } 400 } 401 { "directive" = "Require" 402 { "arg" = "user" } 403 { "arg" = "@OWNER" } 404 { "arg" = "@SYSTEM" } 405 } 406 { "directive" = "Order" 407 { "arg" = "deny,allow" } 408 } 409 } 410 { "#comment" = "All administration operations require an administrator to authenticate..." } 411 { "Limit" 412 { "arg" = "CUPS-Add-Modify-Printer" } 413 { "arg" = "CUPS-Delete-Printer" } 414 { "arg" = "CUPS-Add-Modify-Class" } 415 { "arg" = "CUPS-Delete-Class" } 416 { "arg" = "CUPS-Set-Default" } 417 { "directive" = "AuthType" 418 { "arg" = "Default" } 419 } 420 { "directive" = "Require" 421 { "arg" = "user" } 422 { "arg" = "@SYSTEM" } 423 } 424 { "directive" = "Order" 425 { "arg" = "deny,allow" } 426 } 427 } 428 { "#comment" = "All printer operations require a printer operator to authenticate..." } 429 { "Limit" 430 { "arg" = "Pause-Printer" } 431 { "arg" = "Resume-Printer" } 432 { "arg" = "Enable-Printer" } 433 { "arg" = "Disable-Printer" } 434 { "arg" = "Pause-Printer-After-Current-Job" } 435 { "arg" = "Hold-New-Jobs" } 436 { "arg" = "Release-Held-New-Jobs" } 437 { "arg" = "Deactivate-Printer" } 438 { "arg" = "Activate-Printer" } 439 { "arg" = "Restart-Printer" } 440 { "arg" = "Shutdown-Printer" } 441 { "arg" = "Startup-Printer" } 442 { "arg" = "Promote-Job" } 443 { "arg" = "Schedule-Job-After" } 444 { "arg" = "Cancel-Jobs" } 445 { "arg" = "CUPS-Accept-Jobs" } 446 { "arg" = "CUPS-Reject-Jobs" } 447 { "directive" = "AuthType" 448 { "arg" = "Default" } 449 } 450 { "directive" = "Require" 451 { "arg" = "user" } 452 { "arg" = "@SYSTEM" } 453 } 454 { "directive" = "Order" 455 { "arg" = "deny,allow" } 456 } 457 } 458 { "#comment" = "Only the owner or an administrator can cancel or authenticate a job..." } 459 { "Limit" 460 { "arg" = "Cancel-Job" } 461 { "arg" = "CUPS-Authenticate-Job" } 462 { "directive" = "AuthType" 463 { "arg" = "Default" } 464 } 465 { "directive" = "Require" 466 { "arg" = "user" } 467 { "arg" = "@OWNER" } 468 { "arg" = "@SYSTEM" } 469 } 470 { "directive" = "Order" 471 { "arg" = "deny,allow" } 472 } 473 } 474 { "Limit" 475 { "arg" = "All" } 476 { "directive" = "Order" 477 { "arg" = "deny,allow" } 478 } 479 } 480 } 481 482