blob: c4a8e5057c779bd7c75ec67d2bf085ae97860f28 [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.core.command;
17
18import org.slf4j.Logger;
19import org.slf4j.LoggerFactory;
20import org.easymock.MockControl;
21import org.mockftpserver.core.session.Session;
22import org.mockftpserver.core.util.AssertFailedException;
23import org.mockftpserver.test.AbstractTestCase;
24
25import java.util.ListResourceBundle;
26import java.util.ResourceBundle;
27
28/**
29 * Tests for the AbstractStaticReplyCommandHandler class. The class name is prefixed with an underscore
30 * so that it is not filtered out by Maven's Surefire test plugin.
31 *
32 * @version $Revision$ - $Date$
33 *
34 * @author Chris Mair
35 */
36public final class _AbstractStaticReplyCommandHandlerTest extends AbstractTestCase {
37
38 private static final Logger LOG = LoggerFactory.getLogger(_AbstractStaticReplyCommandHandlerTest.class);
39 private static final int REPLY_CODE1 = 777;
40 private static final int REPLY_CODE2 = 888;
41 private static final String REPLY_TEXT1 = "reply1 ... abcdef";
42 private static final String REPLY_TEXT2 = "abc {0} def";
43 private static final String REPLY_TEXT2_FORMATTED = "abc 123 def";
44 private static final String MESSAGE_KEY = "key.123";
45 private static final String MESSAGE_TEXT = "message.123";
46 private static final String OVERRIDE_REPLY_TEXT = "overridden reply ... abcdef";
47 private static final Object ARG = "123";
48
49 private AbstractStaticReplyCommandHandler commandHandler;
50 private Session session;
51
52 /**
53 * Test the sendReply(Session) method
54 */
55 public void testSendReply() {
56 session.sendReply(REPLY_CODE1, REPLY_TEXT1);
57 replay(session);
58
59 commandHandler.setReplyCode(REPLY_CODE1);
60 commandHandler.sendReply(session);
61 verify(session);
62 }
63
64 /**
65 * Test the sendReply(Session) method, when the replyText has been set
66 */
67 public void testSendReply_SetReplyText() {
68 session.sendReply(REPLY_CODE1, OVERRIDE_REPLY_TEXT);
69 replay(session);
70
71 commandHandler.setReplyCode(REPLY_CODE1);
72 commandHandler.setReplyText(OVERRIDE_REPLY_TEXT);
73 commandHandler.sendReply(session);
74 verify(session);
75 }
76
77 /**
78 * Test the sendReply(Session) method, when the replyMessageKey has been set
79 */
80 public void testSendReply_SetReplyMessageKey() {
81 session.sendReply(REPLY_CODE1, REPLY_TEXT2);
82 replay(session);
83
84 commandHandler.setReplyCode(REPLY_CODE1);
85 commandHandler.setReplyMessageKey(Integer.toString(REPLY_CODE2));
86 commandHandler.sendReply(session);
87 verify(session);
88 }
89
90 /**
91 * Test the sendReply(Session) method, when the replyCode has not been set
92 */
93 public void testSendReply_ReplyCodeNotSet() {
94 try {
95 commandHandler.sendReply(session);
96 fail("Expected AssertFailedException");
97 }
98 catch (AssertFailedException expected) {
99 LOG.info("Expected: " + expected);
100 }
101 }
102
103 /**
104 * Test the sendReply(Session,Object) method
105 */
106 public void testSendReply_MessageParameter() {
107 session.sendReply(REPLY_CODE2, REPLY_TEXT2);
108 session.sendReply(REPLY_CODE2, REPLY_TEXT2_FORMATTED);
109 replay(session);
110
111 commandHandler.setReplyCode(REPLY_CODE2);
112 commandHandler.sendReply(session);
113 commandHandler.sendReply(session, ARG);
114 verify(session);
115 }
116
117 /**
118 * Test the setReplyCode() method, passing in an invalid value
119 */
120 public void testSetReplyCode_Invalid() {
121 try {
122 commandHandler.setReplyCode(0);
123 fail("Expected AssertFailedException");
124 }
125 catch (AssertFailedException expected) {
126 LOG.info("Expected: " + expected);
127 }
128 }
129
130 //-------------------------------------------------------------------------
131 // Test setup
132 //-------------------------------------------------------------------------
133
134 /**
135 * Perform initialization before each test
136 * @see org.mockftpserver.test.AbstractTestCase#setUp()
137 */
138 protected void setUp() throws Exception {
139 super.setUp();
140 session = (Session) createMock(Session.class);
141 control(session).setDefaultMatcher(MockControl.ARRAY_MATCHER);
142 commandHandler = new AbstractStaticReplyCommandHandler() {
143 public void handleCommand(Command command, Session session, InvocationRecord invocationRecord) throws Exception {
144 }
145 };
146 ResourceBundle replyTextBundle = new ListResourceBundle() {
147 protected Object[][] getContents() {
148 return new Object[][]{
149 {Integer.toString(REPLY_CODE1), REPLY_TEXT1},
150 {Integer.toString(REPLY_CODE2), REPLY_TEXT2},
151 {MESSAGE_KEY, MESSAGE_TEXT}
152 };
153 }
154 };
155 commandHandler.setReplyTextBundle(replyTextBundle);
156 }
157
158}