File tree Expand file tree Collapse file tree 1 file changed +46
-0
lines changed Expand file tree Collapse file tree 1 file changed +46
-0
lines changed Original file line number Diff line number Diff line change @@ -869,6 +869,52 @@ def test_uidplus_responses
869
869
end
870
870
end
871
871
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
+
872
918
private
873
919
874
920
def imaps_test
You can’t perform that action at this time.
0 commit comments