1ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair/*
2ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair * Copyright 2008 the original author or authors.
3ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair *
4ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair * Licensed under the Apache License, Version 2.0 (the "License");
5ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair * you may not use this file except in compliance with the License.
6ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair * You may obtain a copy of the License at
7ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair *
8ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair *      http://www.apache.org/licenses/LICENSE-2.0
9ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair *
10ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair * Unless required by applicable law or agreed to in writing, software
11ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair * distributed under the License is distributed on an "AS IS" BASIS,
12ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair * See the License for the specific language governing permissions and
14ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair * limitations under the License.
15ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair */
16ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismairpackage org.mockftpserver.fake.filesystem
17ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
18ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismairimport java.text.SimpleDateFormat
19ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismairimport org.mockftpserver.test.AbstractGroovyTest
20ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
21ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair/**
22ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair * Tests for UnixDirectoryListingFormatter
23ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair *
24ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair * @version $Revision: 78 $ - $Date: 2008-07-02 20:47:17 -0400 (Wed, 02 Jul 2008) $
25ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair *
26ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair * @author Chris Mair
27ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair */
28ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismairclass UnixDirectoryListingFormatterTest extends AbstractGroovyTest {
29ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
30ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    static final FILE_NAME = "def.txt"
31ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    static final FILE_PATH = "/dir/$FILE_NAME"
32ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    static final DIR_NAME = "etc"
33ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    static final DIR_PATH = "/dir/$DIR_NAME"
34ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    static final OWNER = 'owner123'
35ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    static final GROUP = 'group456'
36ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    static final SIZE = 11L
37ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    static final LAST_MODIFIED = new Date()
38ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    static final FILE_PERMISSIONS = new Permissions('rw-r--r--')
39ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    static final DIR_PERMISSIONS = new Permissions('rwxr-xr-x')
40ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
41ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    private formatter
42ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    private dateFormat
43ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    private lastModifiedFormatted
44ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
45ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    // "-rw-rw-r--    1 ftp      ftp           254 Feb 23  2007 robots.txt"
46ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    // "-rw-r--r--    1 ftp      ftp      30014925 Apr 15 00:19 md5.sums.gz"
47ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    // "-rwxr-xr-x   1 c096336  iawebgrp    5778 Dec  1  2005 FU_WyCONN_updateplanaccess.sql"
48ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    // "drwxr-xr-x   2 c096336  iawebgrp    8192 Nov  7  2006 tmp"
49ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    // "drwxr-xr-x   39 ftp      ftp          4096 Mar 19  2004 a"
50ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
51ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    void testFormat_File() {
52ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        def fileSystemEntry = new FileEntry(path: FILE_PATH, contents: '12345678901', lastModified: LAST_MODIFIED,
53ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair                owner: OWNER, group: GROUP, permissions: FILE_PERMISSIONS)
54ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        LOG.info(fileSystemEntry)
55ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        verifyFormat(fileSystemEntry, "-rw-r--r--  1 owner123 group456              11 $lastModifiedFormatted def.txt")
56ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    }
57ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
58ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    void testFormat_File_Defaults() {
59ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        def fileSystemEntry = new FileEntry(path: FILE_PATH, contents: '12345678901', lastModified: LAST_MODIFIED)
60ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        LOG.info(fileSystemEntry)
61ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        verifyFormat(fileSystemEntry, "-rwxrwxrwx  1 none     none                  11 $lastModifiedFormatted def.txt")
62ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    }
63ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
64ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    void testFormat_Directory() {
65ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        def fileSystemEntry = new DirectoryEntry(path: DIR_PATH, lastModified: LAST_MODIFIED,
66ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair                owner: OWNER, group: GROUP, permissions: DIR_PERMISSIONS)
67ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        LOG.info(fileSystemEntry)
68ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        verifyFormat(fileSystemEntry, "drwxr-xr-x  1 owner123 group456               0 $lastModifiedFormatted etc")
69ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    }
70ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
71ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    void testFormat_Directory_Defaults() {
72ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        def fileSystemEntry = new DirectoryEntry(path: DIR_PATH, lastModified: LAST_MODIFIED)
73ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        LOG.info(fileSystemEntry)
74ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        verifyFormat(fileSystemEntry, "drwxrwxrwx  1 none     none                   0 $lastModifiedFormatted etc")
75ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    }
76ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
77ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    void setUp() {
78ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        super.setUp()
79ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        formatter = new UnixDirectoryListingFormatter()
80ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        dateFormat = new SimpleDateFormat(UnixDirectoryListingFormatter.DATE_FORMAT)
81ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        lastModifiedFormatted = dateFormat.format(LAST_MODIFIED)
82ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    }
83ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
84ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    private void verifyFormat(FileSystemEntry fileSystemEntry, String expectedResult) {
85ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        def result = formatter.format(fileSystemEntry)
86ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        LOG.info("result=  [$result]")
87ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        LOG.info("expected=[$expectedResult]")
88ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair        assert result == expectedResult
89ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair    }
90ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair
91ad39334d4c363c6ada5863d0bb3184f5f4699d69chrismair}