blob: 343df87ccf262cc7e130cda433ef96104285ed80 [file] [log] [blame]
chrismair00dc7bd2014-05-11 21:21:28 +00001/*
2 * Copyright 2008 the original author or authors.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.mockftpserver.fake.filesystem
17
18import org.mockftpserver.test.AbstractGroovyTestCase
19
20/**
21 * Tests for the Permissions class
22 *
23 * @version $Revision$ - $Date$
24 *
25 * @author Chris Mair
26 */
27class PermissionsTest extends AbstractGroovyTestCase {
28
29 void testConstructor() {
30 testConstructorWithValidString('rwxrwxrwx')
31 testConstructorWithValidString('rwxr--r--')
32 testConstructorWithValidString('---------')
33 }
34
35 void testConstructor_InvalidString() {
36 testConstructorWithInvalidString('')
37 testConstructorWithInvalidString('------')
38 testConstructorWithInvalidString('-')
39 testConstructorWithInvalidString('r')
40 testConstructorWithInvalidString('rwx')
41 testConstructorWithInvalidString('rwxrwxrw')
42 testConstructorWithInvalidString('123456789')
43 testConstructorWithInvalidString('rwxrZxrwx')
44 testConstructorWithInvalidString('--------Z')
45 }
46
47 void testCanReadWriteExecute() {
48 testCanReadWriteExecute('rwxrwxrwx', true, true, true, true, true, true, true, true, true)
49 testCanReadWriteExecute('r--r--r--', true, false, false, true, false, false, true, false, false)
50 testCanReadWriteExecute('-w-r----x', false, true, false, true, false, false, false, false, true)
51 testCanReadWriteExecute('---------', false, false, false, false, false, false, false, false, false)
52 }
53
54 void testHashCode() {
55 assert new Permissions('rwxrwxrwx').hashCode() == Permissions.DEFAULT.hashCode()
56 assert new Permissions('---------').hashCode() == Permissions.NONE.hashCode()
57 }
58
59 void testEquals() {
60 assert new Permissions('rwxrwxrwx').equals(Permissions.DEFAULT)
61 assert new Permissions('---------').equals(Permissions.NONE)
62 assert Permissions.NONE.equals(Permissions.NONE)
63
64 assert !(new Permissions('------rwx').equals(Permissions.NONE))
65 assert !Permissions.NONE.equals(null)
66 assert !Permissions.NONE.equals(123)
67 }
68
69 //--------------------------------------------------------------------------
70 // Helper Methods
71 //--------------------------------------------------------------------------
72
73 private testCanReadWriteExecute(rwxString,
74 canUserRead, canUserWrite, canUserExecute,
75 canGroupRead, canGroupWrite, canGroupExecute,
76 canWorldRead, canWorldWrite, canWorldExecute) {
77
78 def permissions = new Permissions(rwxString)
79 LOG.info("Testing can read/write/execute for $permissions")
80 assert permissions.canUserRead() == canUserRead
81 assert permissions.canUserWrite() == canUserWrite
82 assert permissions.canUserExecute() == canUserExecute
83 assert permissions.canGroupRead() == canGroupRead
84 assert permissions.canGroupWrite() == canGroupWrite
85 assert permissions.canGroupExecute() == canGroupExecute
86 assert permissions.canWorldRead() == canWorldRead
87 assert permissions.canWorldWrite() == canWorldWrite
88 assert permissions.canWorldExecute() == canWorldExecute
89 }
90
91 private testConstructorWithInvalidString(String string) {
92 LOG.info("Verifying invalid: [$string]")
93 shouldFail { new Permissions(string) }
94 }
95
96 private testConstructorWithValidString(String string) {
97 LOG.info("Verifying valid: [$string]")
98 def permissions = new Permissions(string)
99 LOG.info(permissions.toString())
100 assert permissions.asRwxString() == string
101 }
102}