blob: c3e6c2d039e84c5955a3cd940dba87698c9788b7 [file] [log] [blame]
chrismair00dc7bd2014-05-11 21:21:28 +00001/*
2 * Copyright 2007 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.stub.command;
17
18import org.slf4j.Logger;
19import org.slf4j.LoggerFactory;
20import org.easymock.MockControl;
21import org.mockftpserver.core.command.AbstractCommandHandlerTestCase;
22import org.mockftpserver.core.command.Command;
23import org.mockftpserver.core.command.CommandNames;
24import org.mockftpserver.core.command.ReplyCodes;
25import org.mockftpserver.core.util.AssertFailedException;
26
27/**
28 * Tests for the RetrCommandHandler class
29 *
30 * @author Chris Mair
31 * @version $Revision$ - $Date$
32 */
33public final class RetrCommandHandlerTest extends AbstractCommandHandlerTestCase {
34
35 private static final Logger LOG = LoggerFactory.getLogger(RetrCommandHandlerTest.class);
36
37 private RetrCommandHandler commandHandler;
38
39 /**
40 * Test the constructor that takes a String, passing in a null
41 */
42 public void testConstructor_String_Null() {
43 try {
44 new RetrCommandHandler((String) null);
45 fail("Expected AssertFailedException");
46 }
47 catch (AssertFailedException expected) {
48 LOG.info("Expected: " + expected);
49 }
50 }
51
52 /**
53 * Test the constructor that takes a byte[], passing in a null
54 */
55 public void testConstructor_ByteArray_Null() {
56 try {
57 new RetrCommandHandler((byte[]) null);
58 fail("Expected AssertFailedException");
59 }
60 catch (AssertFailedException expected) {
61 LOG.info("Expected: " + expected);
62 }
63 }
64
65 /**
66 * Test the setFileContents(String) method, passing in a null
67 */
68 public void testSetFileContents_String_Null() {
69 try {
70 commandHandler.setFileContents((String) null);
71 fail("Expected AssertFailedException");
72 }
73 catch (AssertFailedException expected) {
74 LOG.info("Expected: " + expected);
75 }
76 }
77
78 /**
79 * Test the setFileContents(byte[]) method, passing in a null
80 */
81 public void testSetFileContents_ByteArray_Null() {
82 try {
83 commandHandler.setFileContents((byte[]) null);
84 fail("Expected AssertFailedException");
85 }
86 catch (AssertFailedException expected) {
87 LOG.info("Expected: " + expected);
88 }
89 }
90
91 /**
92 * Test the handleCommand() method
93 *
94 * @throws Exception
95 */
96 public void testHandleCommand() throws Exception {
97 final String FILE_CONTENTS = "abc_123 456";
98 commandHandler.setFileContents(FILE_CONTENTS);
99
100 session.sendReply(ReplyCodes.TRANSFER_DATA_INITIAL_OK, replyTextFor(ReplyCodes.TRANSFER_DATA_INITIAL_OK));
101 session.openDataConnection();
102 session.sendData(FILE_CONTENTS.getBytes(), FILE_CONTENTS.length());
103 control(session).setMatcher(MockControl.ARRAY_MATCHER);
104 session.closeDataConnection();
105 session.sendReply(ReplyCodes.TRANSFER_DATA_FINAL_OK, replyTextFor(ReplyCodes.TRANSFER_DATA_FINAL_OK));
106 replay(session);
107
108 Command command = new Command(CommandNames.RETR, array(FILENAME1));
109 commandHandler.handleCommand(command, session);
110 verify(session);
111
112 verifyNumberOfInvocations(commandHandler, 1);
113 verifyOneDataElement(commandHandler.getInvocation(0), RetrCommandHandler.PATHNAME_KEY, FILENAME1);
114 }
115
116 /**
117 * Test the handleCommand() method, when no pathname parameter has been specified
118 */
119 public void testHandleCommand_MissingPathnameParameter() throws Exception {
120 testHandleCommand_InvalidParameters(commandHandler, CommandNames.RETR, EMPTY);
121 }
122
123 /**
124 * Perform initialization before each test
125 *
126 * @see org.mockftpserver.core.command.AbstractCommandHandlerTestCase#setUp()
127 */
128 protected void setUp() throws Exception {
129 super.setUp();
130 commandHandler = new RetrCommandHandler();
131 commandHandler.setReplyTextBundle(replyTextBundle);
132 }
133
134}