spec/client_spec.rb in gmail-0.4.0 vs spec/client_spec.rb in gmail-0.4.2
- old
+ new
@@ -1,173 +1,178 @@
-require 'spec_helper'
-
-describe "Gmail client (Plain)" do
- subject { Gmail::Client::Plain }
-
- context "on initialize" do
- it "should set username, password and options" do
- client = subject.new("test@gmail.com", "pass", :foo => :bar)
- client.username.should == "test@gmail.com"
- client.password.should == "pass"
- client.options[:foo].should == :bar
- end
-
- it "should convert simple name to gmail email" do
- client = subject.new("test", "pass")
- client.username.should == "test@gmail.com"
- end
- end
-
- context "instance" do
- def mock_client(&block)
- client = Gmail::Client::Plain.new(*TEST_ACCOUNT)
- if block_given?
- client.connect
- yield client
- client.logout
- end
- client
- end
-
- it "should connect to GMail IMAP service" do
- lambda {
- client = mock_client
- client.connect!.should be_true
- }.should_not raise_error(Gmail::Client::ConnectionError)
- end
-
- it "should properly login to valid GMail account" do
- client = mock_client
- client.connect.should be_true
- client.login.should be_true
- client.should be_logged_in
- client.logout
- end
-
- it "should raise error when given GMail account is invalid and errors enabled" do
- lambda {
- client = Gmail::Client::Plain.new("foo", "bar")
- client.connect.should be_true
- client.login!.should_not be_true
- }.should raise_error(Gmail::Client::AuthorizationError)
- end
-
- it "shouldn't login when given GMail account is invalid" do
- lambda {
- client = Gmail::Client::Plain.new("foo", "bar")
- client.connect.should be_true
- client.login.should_not be_true
- }.should_not raise_error(Gmail::Client::AuthorizationError)
- end
-
- it "should properly logout from GMail" do
- client = mock_client
- client.connect
- client.login.should be_true
- client.logout.should be_true
- client.should_not be_logged_in
- end
-
- it "#connection should automatically log in to GMail account when it's called" do
- mock_client do |client|
- client.expects(:login).once.returns(false)
- client.connection.should_not be_nil
- end
- end
-
- it "should properly compose message" do
- mail = mock_client.compose do
- from "test@gmail.com"
- to "friend@gmail.com"
- subject "Hello world!"
- end
- mail.from.should == ["test@gmail.com"]
- mail.to.should == ["friend@gmail.com"]
- mail.subject.should == "Hello world!"
- end
-
- it "#compose should automatically add `from` header when it is not specified" do
- mail = mock_client.compose
- mail.from.should == [TEST_ACCOUNT[0]]
- mail = mock_client.compose(Mail.new)
- mail.from.should == [TEST_ACCOUNT[0]]
- mail = mock_client.compose {}
- mail.from.should == [TEST_ACCOUNT[0]]
- end
-
- it "should deliver inline composed email" do
- mock_client do |client|
- client.deliver do
- to TEST_ACCOUNT[0]
- subject "Hello world!"
- body "Yeah, hello there!"
- end.should be_true
- end
- end
-
- it "should not raise error when mail can't be delivered and errors are disabled" do
- lambda {
- client = mock_client
- client.deliver(Mail.new {}).should be_false
- }.should_not raise_error(Gmail::Client::DeliveryError)
- end
-
- it "should raise error when mail can't be delivered and errors are disabled" do
- lambda {
- client = mock_client
- client.deliver!(Mail.new {})
- }.should raise_error(Gmail::Client::DeliveryError)
- end
-
- it "should properly switch to given mailbox" do
- mock_client do |client|
- mailbox = client.mailbox("TEST")
- mailbox.should be_kind_of(Gmail::Mailbox)
- mailbox.name.should == "TEST"
- end
- end
-
- it "should properly switch to given mailbox using block style" do
- mock_client do |client|
- client.mailbox("TEST") do |mailbox|
- mailbox.should be_kind_of(Gmail::Mailbox)
- mailbox.name.should == "TEST"
- end
- end
- end
-
- context "labels" do
- subject {
- client = Gmail::Client::Plain.new(*TEST_ACCOUNT)
- client.connect
- client.labels
- }
-
- it "should get list of all available labels" do
- labels = subject
- labels.all.should include("TEST", "INBOX")
- end
-
- it "should be able to check if there is given label defined" do
- labels = subject
- labels.exists?("TEST").should be_true
- labels.exists?("FOOBAR").should be_false
- end
-
- it "should be able to create given label" do
- labels = subject
- labels.create("MYLABEL")
- labels.exists?("MYLABEL").should be_true
- labels.create("MYLABEL").should be_false
- labels.delete("MYLABEL")
- end
-
- it "should be able to remove existing label" do
- labels = subject
- labels.create("MYLABEL")
- labels.delete("MYLABEL").should be_true
- labels.exists?("MYLABEL").should be_false
- labels.delete("MYLABEL").should be_false
- end
- end
- end
-end
+require 'spec_helper'
+
+describe "Gmail client (Plain)" do
+ subject { Gmail::Client::Plain }
+
+ context "on initialize" do
+ it "should set username, password and options" do
+ client = subject.new("test@gmail.com", "pass", :foo => :bar)
+ client.username.should == "test@gmail.com"
+ client.password.should == "pass"
+ client.options[:foo].should == :bar
+ end
+
+ it "should convert simple name to gmail email" do
+ client = subject.new("test", "pass")
+ client.username.should == "test@gmail.com"
+ end
+ end
+
+ context "instance" do
+ def mock_client(&block)
+ client = Gmail::Client::Plain.new(*TEST_ACCOUNT)
+ if block_given?
+ client.connect
+ yield client
+ client.logout
+ end
+ client
+ end
+
+ it "should connect to GMail IMAP service" do
+ client = mock_client
+ client.connect!.should be_true
+ end
+
+ it "should properly login to valid GMail account" do
+ client = mock_client
+ client.connect.should be_true
+ client.login.should be_true
+ client.should be_logged_in
+ client.logout
+ end
+
+ it "should raise error when given GMail account is invalid and errors enabled" do
+ lambda {
+ client = Gmail::Client::Plain.new("foo", "bar")
+ client.connect.should be_true
+ client.login!.should_not be_nil
+ }.should raise_error
+ ### FIX: can someone dig to the bottom of this? We are getting NoMethodError instead of Gmail::Client::AuthorizationError in 1.9
+ end
+
+ it "shouldn't raise error even though GMail account is invalid" do
+ lambda {
+ client = Gmail::Client::Plain.new("foo", "bar")
+ client.connect.should be_true
+ expect(client.login).to_not be_true
+ }.should_not raise_error
+ end
+
+ it "shouldn't login when given GMail account is invalid" do
+ client = Gmail::Client::Plain.new("foo", "bar")
+ client.connect.should be_true
+ client.login.should be_false
+ end
+
+ it "should properly logout from GMail" do
+ client = mock_client
+ client.connect
+ client.login.should be_true
+ client.logout.should be_true
+ client.should_not be_logged_in
+ end
+
+ it "#connection should automatically log in to GMail account when it's called" do
+ mock_client do |client|
+ client.expects(:login).once.returns(false)
+ client.connection.should_not be_nil
+ end
+ end
+
+ it "should properly compose message" do
+ mail = mock_client.compose do
+ from "test@gmail.com"
+ to "friend@gmail.com"
+ subject "Hello world!"
+ end
+ mail.from.should == ["test@gmail.com"]
+ mail.to.should == ["friend@gmail.com"]
+ mail.subject.should == "Hello world!"
+ end
+
+ it "#compose should automatically add `from` header when it is not specified" do
+ mail = mock_client.compose
+ mail.from.should == [TEST_ACCOUNT[0]]
+ mail = mock_client.compose(Mail.new)
+ mail.from.should == [TEST_ACCOUNT[0]]
+ mail = mock_client.compose {}
+ mail.from.should == [TEST_ACCOUNT[0]]
+ end
+
+ it "should deliver inline composed email" do
+ mock_client do |client|
+ client.deliver do
+ to TEST_ACCOUNT[0]
+ subject "Hello world!"
+ body "Yeah, hello there!"
+ end.should be_true
+ end
+ end
+
+ it "should not raise error when mail can't be delivered and errors are disabled" do
+ lambda {
+ client = mock_client
+ client.deliver(Mail.new {}).should be_false
+ }.should_not raise_error
+ end
+
+ it "should raise error when mail can't be delivered and errors are disabled" do
+ lambda {
+ client = mock_client
+ client.deliver!(Mail.new {})
+ }.should raise_error(Gmail::Client::DeliveryError)
+ end
+
+ it "should properly switch to given mailbox" do
+ mock_client do |client|
+ mailbox = client.mailbox("INBOX")
+ mailbox.should be_kind_of(Gmail::Mailbox)
+ mailbox.name.should == "INBOX"
+ end
+ end
+
+ it "should properly switch to given mailbox using block style" do
+ mock_client do |client|
+ client.mailbox("INBOX") do |mailbox|
+ mailbox.should be_kind_of(Gmail::Mailbox)
+ mailbox.name.should == "INBOX"
+ end
+ end
+ end
+
+ context "labels" do
+ subject {
+ client = Gmail::Client::Plain.new(*TEST_ACCOUNT)
+ client.connect
+ client.labels
+ }
+
+ it "should get list of all available labels" do
+ labels = subject
+ labels.all.should include("INBOX")
+ end
+
+ it "should be able to check if there is given label defined" do
+ labels = subject
+ labels.exists?("INBOX").should be_true
+ labels.exists?("FOOBAR").should be_false
+ end
+
+ it "should be able to create given label" do
+ labels = subject
+ labels.create("MYLABEL")
+ labels.exists?("MYLABEL").should be_true
+ labels.create("MYLABEL").should be_false
+ labels.delete("MYLABEL")
+ end
+
+ it "should be able to remove existing label" do
+ labels = subject
+ labels.create("MYLABEL")
+ labels.delete("MYLABEL").should be_true
+ labels.exists?("MYLABEL").should be_false
+ labels.delete("MYLABEL").should be_false
+ end
+ end
+ end
+end