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