Skip to content

Commit 0d5bb03

Browse files
committed
TDD: Write test code for JschServer (Completed)
1 parent 2fd1083 commit 0d5bb03

File tree

2 files changed

+109
-20
lines changed

2 files changed

+109
-20
lines changed

src/main/java/root/common/server/implement/JschServer.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,10 @@
99
import com.jcraft.jsch.JSchException;
1010
import com.jcraft.jsch.Session;
1111

12-
import lombok.ToString;
1312
import lombok.extern.slf4j.Slf4j;
1413
import root.core.domain.JschConnectionInfo;
1514

1615
@Slf4j
17-
@ToString
1816
public class JschServer {
1917
private JSch jsch;
2018
private Session session;
@@ -55,6 +53,10 @@ public Session connect(Session session) throws JSchException {
5553
throw new NullPointerException("Session is null");
5654
}
5755

56+
if(session.isConnected()) {
57+
return session;
58+
}
59+
5860
try {
5961
session.connect();
6062
} catch (JSchException e) {
@@ -66,16 +68,24 @@ public Session connect(Session session) throws JSchException {
6668
}
6769

6870
public void disConnect(Session session) {
71+
if(session == null) {
72+
throw new NullPointerException("Session is null");
73+
}
74+
6975
session.disconnect();
7076
}
7177

7278
public Channel openExecChannel(Session session, String command) {
79+
if(session == null) {
80+
throw new NullPointerException("Session is null");
81+
}
82+
7383
Channel channel = null;
7484
try {
7585
channel = session.openChannel("exec");
7686
// 채널접속
7787
ChannelExec channelExec = (ChannelExec) channel; // 명령 전송 채널사용
78-
channelExec.setPty(true);
88+
// channelExec.setPty(true);
7989
channelExec.setCommand(command);
8090
} catch (JSchException e) {
8191
log.error(e.getMessage());

src/test/java/root/common/server/implement/JschServerTest.java

Lines changed: 96 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
package root.common.server.implement;
22

33
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.junit.jupiter.api.Assertions.assertFalse;
45
import static org.junit.jupiter.api.Assertions.assertNotNull;
56
import static org.junit.jupiter.api.Assertions.assertNull;
67
import static org.junit.jupiter.api.Assertions.assertThrows;
78
import static org.junit.jupiter.api.Assertions.assertTrue;
8-
import static org.junit.jupiter.api.Assertions.fail;
9+
10+
import java.io.BufferedReader;
11+
import java.io.IOException;
12+
import java.io.InputStream;
13+
import java.io.InputStreamReader;
914

1015
import org.junit.jupiter.api.BeforeAll;
1116
import org.junit.jupiter.api.Test;
1217

18+
import com.jcraft.jsch.Channel;
1319
import com.jcraft.jsch.JSchException;
1420
import com.jcraft.jsch.Session;
1521

@@ -45,37 +51,110 @@ public void testInit_Fail_InvalidConnInfo() {
4551
}
4652

4753
@Test
48-
public void testConnect_ConnectionSuccess() {
54+
public void testConnect_Success() throws JSchException {
4955
jsch.init();
5056
Session session = jsch.getSession();
51-
try {
52-
session = jsch.connect(session);
53-
} catch (JSchException e) {
54-
fail();
55-
}
57+
session = jsch.connect(session);
5658
assertTrue(session.isConnected());
5759
}
5860

5961
@Test
60-
public void testConnect_ConnectionFail_SessionIsNull() {
61-
JschServer jsch = new JschServer(new JschConnectionInfo());
62+
public void testConnect_Success_AlreadyConnection() throws JSchException {
63+
jsch.init();
64+
Session session = jsch.getSession();
65+
jsch.connect(session);
66+
jsch.connect(session);
67+
68+
assertTrue(session.isConnected());
69+
}
70+
71+
@Test
72+
public void testConnect_Fail_SessionIsNull() {
73+
NullPointerException thrown = assertThrows(NullPointerException.class, () -> jsch.connect(null));
74+
assertEquals("Session is null", thrown.getMessage());
75+
}
76+
77+
@Test
78+
public void testDisConnect_DisConnectionSuccess() throws JSchException {
79+
jsch.init();
80+
Session session = jsch.getSession();
81+
82+
session = jsch.connect(session);
83+
assertTrue(session.isConnected());
84+
85+
jsch.disConnect(session);
86+
assertFalse(session.isConnected());
87+
}
88+
89+
@Test
90+
public void testDisConnect_DisConnectionFail_SessionIsNull() {
91+
NullPointerException thrown = assertThrows(NullPointerException.class, () -> jsch.disConnect(null));
92+
assertEquals("Session is null", thrown.getMessage());
93+
}
94+
95+
@Test
96+
public void testOpenExecChannel_Success() throws JSchException {
6297
jsch.init();
6398
Session session = jsch.getSession();
64-
NullPointerException thrown = assertThrows(NullPointerException.class, () -> jsch.connect(session));
99+
jsch.connect(session);
100+
101+
Channel channel = jsch.openExecChannel(session, "echo 1");
102+
assertNotNull(channel);
103+
}
104+
105+
@Test
106+
public void testOpenExecChannel_Fail_SessionIsNull() {
107+
NullPointerException thrown = assertThrows(NullPointerException.class,
108+
() -> jsch.openExecChannel(null, "echo 1"));
65109
assertEquals("Session is null", thrown.getMessage());
66110
}
67111

68112
@Test
69-
public void testConnect_ConnectionFail_JSchException() {
113+
public void testConnectChannel_Success() throws JSchException, IOException {
70114
jsch.init();
71115
Session session = jsch.getSession();
72-
try {
73-
jsch.connect(session);
74-
} catch (JSchException e) {
75-
fail();
116+
jsch.connect(session);
117+
118+
Channel channel = jsch.openExecChannel(session, "echo 1");
119+
InputStream in = jsch.connectChannel(channel);
120+
121+
assertNotNull(in);
122+
try (BufferedReader br = new BufferedReader(new InputStreamReader(in))) {
123+
String echoLine = br.readLine();
124+
assertEquals(echoLine, "1");
76125
}
126+
}
127+
128+
@Test
129+
public void testDisConnectChannel_Success() throws JSchException {
130+
jsch.init();
131+
Session session = jsch.getSession();
132+
jsch.connect(session);
133+
134+
Channel channel = jsch.openExecChannel(session, "echo 1");
135+
jsch.connectChannel(channel);
136+
assertTrue(channel.isConnected());
77137

78-
JSchException thrown = assertThrows(JSchException.class, () -> jsch.connect(session));
79-
assertEquals("session is already connected", thrown.getMessage());
138+
jsch.disConnectChannel(channel);
139+
assertFalse(channel.isConnected());
140+
}
141+
142+
@Test
143+
public void testGetServerName() {
144+
String serverName = jsch.getServerName();
145+
assertEquals(serverName, "DKY SERVER");
146+
}
147+
148+
@Test
149+
public void testValidateConn_Valid() {
150+
jsch.init();
151+
assertTrue(JschServer.validateConn(jsch.getSession()));
152+
}
153+
154+
@Test
155+
public void testValidateConn_InValid() {
156+
JschServer jsch = new JschServer(new JschConnectionInfo());
157+
jsch.init();
158+
assertFalse(JschServer.validateConn(jsch.getSession()));
80159
}
81160
}

0 commit comments

Comments
 (0)