Skip to content

Commit 7d07e74

Browse files
committed
✅ Add a very simple test for IMAP#close
1 parent 11757d8 commit 7d07e74

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

test/net/imap/test_imap.rb

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -869,6 +869,52 @@ def test_uidplus_responses
869869
end
870870
end
871871

872+
def yields_in_test_server_thread(
873+
greeting = "* OK [CAPABILITY IMAP4rev1 AUTH=PLAIN STARTTLS] test server\r\n"
874+
)
875+
server = create_tcp_server
876+
port = server.addr[1]
877+
@threads << Thread.start do
878+
sock = server.accept
879+
gets = ->{
880+
buf = "".b
881+
buf << sock.gets until /\A([^ ]+) ([^ ]+) ?(.*)\r\n\z/mn =~ buf
882+
[$1, $2, $3]
883+
}
884+
begin
885+
sock.print(greeting)
886+
last_tag = yield sock, gets
887+
sock.print("* BYE terminating connection\r\n")
888+
sock.print("#{last_tag} OK LOGOUT completed\r\n") if last_tag
889+
ensure
890+
sock.close
891+
server.close
892+
end
893+
end
894+
port
895+
end
896+
897+
def test_close
898+
requests = Queue.new
899+
port = yields_in_test_server_thread do |sock, gets|
900+
requests.push(gets[])
901+
sock.print("RUBY0001 OK CLOSE completed\r\n")
902+
requests.push(gets[])
903+
"RUBY0002"
904+
end
905+
begin
906+
imap = Net::IMAP.new(server_addr, :port => port)
907+
resp = imap.close
908+
assert_equal(["RUBY0001", "CLOSE", ""], requests.pop)
909+
assert_equal([Net::IMAP::TaggedResponse, "RUBY0001", "OK"],
910+
[resp.class, resp.tag, resp.name])
911+
imap.logout
912+
assert_equal(["RUBY0002", "LOGOUT", ""], requests.pop)
913+
ensure
914+
imap.disconnect if imap
915+
end
916+
end
917+
872918
private
873919

874920
def imaps_test

0 commit comments

Comments
 (0)