spec/omnicontacts/importer/yahoo_spec.rb in omnicontacts-0.3.4 vs spec/omnicontacts/importer/yahoo_spec.rb in omnicontacts-0.3.5
- old
+ new
@@ -2,10 +2,23 @@
require "omnicontacts/importer/yahoo"
describe OmniContacts::Importer::Yahoo do
describe "fetch_contacts_from_token_and_verifier" do
+ let(:self_response) {
+ '{"profile":{
+ "guid":"PCLASP523T3E2R5TFMHDW9KWQQ",
+ "birthdate": "06/21",
+ "emails":[{"handle":"chrisjohnson@gmail.com", "id":10, "primary":true, "type":"HOME"}, {"handle":"xyz@xyz.com", "id":11, "type":"HOME"}],
+ "familyName": "Johnson",
+ "gender":"M",
+ "givenName":"Chris",
+ "image":{"imageUrl":"https://avatars.zenfs.com/users/23T3E2R5TFMHDW-AFE-I7lUpIsGQ==.large.png"}
+ }
+ }'
+ }
+
let(:contacts_as_json) {
'{
"contacts": {
"start":1,
"count":1,
@@ -14,55 +27,98 @@
"id":10,
"fields":[
{"id":819, "type":"email", "value":"johnny@yahoo.com"},
{"id":806,"type":"name","value":{"givenName":"John","middleName":"","familyName":"Smith"},"editedBy":"OWNER","categories":[]},
{"id":33555343,"type":"guid","value":"7ET6MYV2UQ6VR6CBSNMCLFJIVI"},
- {"id":946,"type":"birthday","value":{"day":"22","month":"2","year":"1952"},"editedBy":"OWNER","categories":[]}
+ {"id":946,"type":"birthday","value":{"day":"22","month":"2","year":"1952"},"editedBy":"OWNER","categories":[]},
+ {"id":21, "type":"address", "value":{"street":"1313 Trashview Court\nApt. 13", "city":"Nowheresville", "stateOrProvince":"OK", "postalCode":"66666", "country":"", "countryCode":""}, "editedBy":"OWNER", "flags":["HOME"], "categories":[]}
]
}
]
}
}' }
let(:yahoo) { OmniContacts::Importer::Yahoo.new({}, "consumer_key", "consumer_secret") }
+ before(:each) do
+ yahoo.instance_variable_set(:@env, {})
+ end
+
it "should request the contacts by specifying all required parameters" do
yahoo.should_receive(:fetch_access_token).and_return(["access_token", "access_token_secret", "guid"])
- yahoo.should_receive(:http_get) do |host, path, params|
+
+ yahoo.should_receive(:https_get) do |host, path, params|
params[:format].should eq("json")
params[:oauth_consumer_key].should eq("consumer_key")
params[:oauth_nonce].should_not be_nil
params[:oauth_signature_method].should eq("HMAC-SHA1")
params[:oauth_timestamp].should_not be_nil
params[:oauth_token].should eq("access_token")
params[:oauth_version].should eq("1.0")
- params[:view].should eq("compact")
+ self_response
+ end
+
+ yahoo.should_receive(:https_get) do |host, path, params|
+ params[:format].should eq("json")
+ params[:oauth_consumer_key].should eq("consumer_key")
+ params[:oauth_nonce].should_not be_nil
+ params[:oauth_signature_method].should eq("HMAC-SHA1")
+ params[:oauth_timestamp].should_not be_nil
+ params[:oauth_token].should eq("access_token")
+ params[:oauth_version].should eq("1.0")
contacts_as_json
end
yahoo.fetch_contacts_from_token_and_verifier "auth_token", "auth_token_secret", "oauth_verifier"
end
- it "should correctly parse id, name,email,gender, birthday, image source and relation" do
+ it "should correctly parse id, name,email,gender, birthday, snailmail address, image source and relation for contact and logged in user" do
yahoo.should_receive(:fetch_access_token).and_return(["access_token", "access_token_secret", "guid"])
- yahoo.should_receive(:http_get).and_return(contacts_as_json)
+ yahoo.should_receive(:https_get).and_return(self_response)
+ yahoo.should_receive(:https_get).and_return(contacts_as_json)
result = yahoo.fetch_contacts_from_token_and_verifier "auth_token", "auth_token_secret", "oauth_verifier"
+
result.size.should be(1)
result.first[:id].should eq('10')
result.first[:first_name].should eq('John')
result.first[:last_name].should eq('Smith')
result.first[:name].should eq("John Smith")
result.first[:email].should eq("johnny@yahoo.com")
result.first[:gender].should be_nil
result.first[:birthday].should eq({:day=>22, :month=>2, :year=>1952})
+ result.first[:address_1].should eq('1313 Trashview Court')
+ result.first[:address_2].should eq('Apt. 13')
+ result.first[:city].should eq('Nowheresville')
+ result.first[:region].should eq('OK')
+ result.first[:postcode].should eq('66666')
result.first[:relation].should be_nil
end
it "should return an empty list of contacts" do
empty_contacts_list = '{"contacts": {"start":0, "count":0}}'
yahoo.should_receive(:fetch_access_token).and_return(["access_token", "access_token_secret", "guid"])
- yahoo.should_receive(:http_get).and_return(empty_contacts_list)
+ yahoo.should_receive(:https_get).and_return(self_response)
+ yahoo.should_receive(:https_get).and_return(empty_contacts_list)
result = yahoo.fetch_contacts_from_token_and_verifier "auth_token", "auth_token_secret", "oauth_verifier"
+
result.should be_empty
+ end
+
+ it "should correctly parse and set logged in user information" do
+ yahoo.should_receive(:fetch_access_token).and_return(["access_token", "access_token_secret", "guid"])
+ yahoo.should_receive(:https_get).and_return(self_response)
+ yahoo.should_receive(:https_get).and_return(contacts_as_json)
+ yahoo.fetch_contacts_from_token_and_verifier "auth_token", "auth_token_secret", "oauth_verifier"
+
+ user = yahoo.instance_variable_get(:@env)["omnicontacts.user"]
+ user.should_not be_nil
+ user[:id].should eq('PCLASP523T3E2R5TFMHDW9KWQQ')
+ user[:first_name].should eq('Chris')
+ user[:last_name].should eq('Johnson')
+ user[:name].should eq('Chris Johnson')
+ user[:gender].should eq('male')
+ user[:birthday].should eq({:day=>21, :month=>06, :year=>nil})
+ user[:email].should eq('chrisjohnson@gmail.com')
+ user[:profile_picture].should eq('https://avatars.zenfs.com/users/23T3E2R5TFMHDW-AFE-I7lUpIsGQ==.large.png')
end
end
end