This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git

commit 0369902c8d3a121edf9d99d4adb59bc76ba3e3e9
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Sun Feb 7 18:49:03 2021 -0500

    Partial but changed application of PR
    https://github.com/apache/commons-vfs/pull/82
    
    FTP tests can be configured with a custom FTP server command factory.
    
    These tests pass but have no main changes. Therefore, better tests are
    needed.
---
 .../vfs2/provider/ftp/FtpProviderMdtmTestCase.java | 31 +++++++++++
 .../provider/ftp/FtpProviderNoMdtmTestCase.java    | 65 ++++++++++++++++++++++
 2 files changed, 96 insertions(+)

diff --git 
a/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/ftp/FtpProviderMdtmTestCase.java
 
b/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/ftp/FtpProviderMdtmTestCase.java
new file mode 100644
index 0000000..dbdba5f
--- /dev/null
+++ 
b/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/ftp/FtpProviderMdtmTestCase.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.vfs2.provider.ftp;
+
+import org.apache.commons.vfs2.LastModifiedTests;
+
+import junit.framework.Test;
+
+public class FtpProviderMdtmTestCase extends FtpProviderTestCase {
+
+    /**
+     * MDTM is supported by default for underlying Apache MINA FTP server.
+     */
+    public static Test suite() throws Exception {
+        return suite(new FtpProviderTestCase(), LastModifiedTests.class);
+    }
+}
diff --git 
a/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/ftp/FtpProviderNoMdtmTestCase.java
 
b/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/ftp/FtpProviderNoMdtmTestCase.java
new file mode 100644
index 0000000..1efb2d4
--- /dev/null
+++ 
b/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/ftp/FtpProviderNoMdtmTestCase.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.vfs2.provider.ftp;
+
+import java.io.IOException;
+
+import org.apache.commons.vfs2.LastModifiedTests;
+import org.apache.ftpserver.command.Command;
+import org.apache.ftpserver.command.CommandFactory;
+import org.apache.ftpserver.command.CommandFactoryFactory;
+import org.apache.ftpserver.ftplet.FtpException;
+import org.apache.ftpserver.ftplet.FtpReply;
+import org.apache.ftpserver.ftplet.FtpRequest;
+import org.apache.ftpserver.impl.FtpIoSession;
+import org.apache.ftpserver.impl.FtpReplyTranslator;
+import org.apache.ftpserver.impl.FtpServerContext;
+import org.apache.ftpserver.impl.LocalizedFtpReply;
+
+import junit.framework.Test;
+
+public class FtpProviderNoMdtmTestCase extends FtpProviderTestCase {
+
+    public static Test suite() throws Exception {
+        return suite(new FtpProviderNoMdtmTestCase(), LastModifiedTests.class);
+    }
+
+    /**
+     * Explicitly remove MDTM feature from underlying Apache MINA FTP server 
so we can fallback to LIST timestamp
+     * (existing default behavior).
+     */
+    @Override
+    protected CommandFactory getCommandFactory() {
+        final CommandFactoryFactory factory = new CommandFactoryFactory();
+        factory.addCommand("FEAT", new Command() {
+
+            @Override
+            public void execute(FtpIoSession session, FtpServerContext 
context, FtpRequest request)
+                throws IOException, FtpException {
+                session.resetState();
+
+                final String replyMsg = 
FtpReplyTranslator.translateMessage(session, request, context,
+                    FtpReply.REPLY_211_SYSTEM_STATUS_REPLY, "FEAT", null);
+                final LocalizedFtpReply reply = new 
LocalizedFtpReply(FtpReply.REPLY_211_SYSTEM_STATUS_REPLY,
+                    replyMsg.replaceFirst(" MDTM\\n", ""));
+
+                session.write(reply);
+            }
+        });
+        return factory.createCommandFactory();
+    }
+}

Reply via email to