forked from hexgnu/linkedin
-
Notifications
You must be signed in to change notification settings - Fork 0
/
api_spec.rb
92 lines (75 loc) · 4 KB
/
api_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
require 'helper'
describe LinkedIn::Api do
before do
LinkedIn.default_profile_fields = nil
client.stub(:consumer).and_return(consumer)
client.authorize_from_access('atoken', 'asecret')
end
let(:client){LinkedIn::Client.new('token', 'secret')}
let(:consumer){OAuth::Consumer.new('token', 'secret', {:site => 'https://api.linkedin.com'})}
it "should be able to view the account profile" do
stub_request(:get, "https://api.linkedin.com/v1/people/~").to_return(:body => "{}")
client.profile.should be_an_instance_of(LinkedIn::Mash)
end
it "should be able to view public profiles" do
stub_request(:get, "https://api.linkedin.com/v1/people/id=123").to_return(:body => "{}")
client.profile(:id => 123).should be_an_instance_of(LinkedIn::Mash)
end
it "should be able to view connections" do
stub_request(:get, "https://api.linkedin.com/v1/people/~/connections").to_return(:body => "{}")
client.connections.should be_an_instance_of(LinkedIn::Mash)
end
it "should be able to view network_updates" do
stub_request(:get, "https://api.linkedin.com/v1/people/~/network/updates").to_return(:body => "{}")
client.network_updates.should be_an_instance_of(LinkedIn::Mash)
end
it "should be able to search with a keyword if given a String" do
stub_request(:get, "https://api.linkedin.com/v1/people-search?keywords=business").to_return(:body => "{}")
client.search("business").should be_an_instance_of(LinkedIn::Mash)
end
it "should be able to search with an option" do
stub_request(:get, "https://api.linkedin.com/v1/people-search?first-name=Javan").to_return(:body => "{}")
client.search(:first_name => "Javan").should be_an_instance_of(LinkedIn::Mash)
end
it "should be able to search with an option and fetch specific fields" do
stub_request(:get, "https://api.linkedin.com/v1/people-search:(num-results,total)?first-name=Javan").to_return(:body => "{}")
client.search(:first_name => "Javan", :fields => ["num_results", "total"]).should be_an_instance_of(LinkedIn::Mash)
end
it "should be able to share a new status" do
stub_request(:post, "https://api.linkedin.com/v1/people/~/shares").to_return(:body => "", :status => 201)
response = client.add_share(:comment => "Testing, 1, 2, 3")
response.body.should == ""
response.code.should == "201"
end
context "Company API" do
use_vcr_cassette
it "should be able to view a company profile" do
stub_request(:get, "https://api.linkedin.com/v1/companies/id=1586").to_return(:body => "{}")
client.company(:id => 1586).should be_an_instance_of(LinkedIn::Mash)
end
it "should be able to view a company by universal name" do
stub_request(:get, "https://api.linkedin.com/v1/companies/universal-name=acme").to_return(:body => "{}")
client.company(:name => 'acme').should be_an_instance_of(LinkedIn::Mash)
end
it "should be able to view a company by e-mail domain" do
stub_request(:get, "https://api.linkedin.com/v1/companies/email-domain=acme.com").to_return(:body => "{}")
client.company(:domain => 'acme.com').should be_an_instance_of(LinkedIn::Mash)
end
it "should load correct company data" do
client.company(:id => 1586).name.should == "Amazon"
data = client.company(:id => 1586, :fields => %w{ id name industry locations:(address:(city state country-code) is-headquarters) employee-count-range })
data.id.should == 1586
data.name.should == "Amazon"
data.employee_count_range.name.should == "10001+"
data.industry.should == "Internet"
data.locations.all[0].address.city.should == "Seattle"
data.locations.all[0].is_headquarters.should == true
end
end
context "Errors" do
it "should raise AccessDeniedError when LinkedIn returns 403 status code" do
stub_request(:get, "https://api.linkedin.com/v1/people-search?first-name=Javan").to_return(:body => "{}", :status => 403)
expect{ client.search(:first_name => "Javan") }.to raise_error(LinkedIn::Errors::AccessDeniedError)
end
end
end