ruby-fs-stack 0.5.1 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/lib/ruby-fs-stack/enunciate/identity.rb +587 -137
- data/lib/ruby-fs-stack/familytree/communicator.rb +2 -1
- data/lib/ruby-fs-stack/identity/communicator.rb +11 -5
- data/ruby-fs-stack.gemspec +6 -6
- data/spec/ruby-fs-stack/familytree/communicator_spec.rb +13 -0
- data/spec/ruby-fs-stack/familytree/json/fakeweb_pedigree3.txt +13 -0
- data/spec/ruby-fs-stack/identity/communicator_spec.rb +72 -8
- data/spec/ruby-fs-stack/identity/json/login.js +1 -1
- metadata +25 -13
@@ -257,7 +257,7 @@ module FamilytreeV2
|
|
257
257
|
return familytree.persons[0]
|
258
258
|
end
|
259
259
|
|
260
|
-
def pedigree(id_or_ids)
|
260
|
+
def pedigree(id_or_ids, options = {})
|
261
261
|
if id_or_ids.kind_of? Array
|
262
262
|
multiple_ids = true
|
263
263
|
url = Base + 'pedigree/' + id_or_ids.join(',')
|
@@ -270,6 +270,7 @@ module FamilytreeV2
|
|
270
270
|
url = Base + 'pedigree/' + id
|
271
271
|
end
|
272
272
|
end
|
273
|
+
url += add_querystring(options)
|
273
274
|
# url += add_querystring(options)
|
274
275
|
response = @fs_communicator.get(url)
|
275
276
|
familytree = parse_response(response)
|
@@ -1,14 +1,20 @@
|
|
1
1
|
require 'ruby-fs-stack/fs_communicator'
|
2
|
-
module
|
2
|
+
module IdentityV2
|
3
|
+
|
4
|
+
# This method gets mixed into the FsCommunicator so that
|
5
|
+
# you can make calls on the fs_familytree_v1 module
|
6
|
+
def identity_v2
|
7
|
+
@identity_v2_com ||= Communicator.new self # self at this point refers to the FsCommunicator instance
|
8
|
+
end
|
3
9
|
|
4
10
|
# This method gets mixed into the FsCommunicator so that
|
5
11
|
# you can make calls on the fs_familytree_v1 module
|
6
12
|
def identity_v1
|
7
|
-
|
13
|
+
identity_v2
|
8
14
|
end
|
9
15
|
|
10
16
|
class Communicator
|
11
|
-
Base = '/identity/
|
17
|
+
Base = '/identity/v2/'
|
12
18
|
|
13
19
|
# ====params
|
14
20
|
# fs_communicator: FsCommunicator instance
|
@@ -22,7 +28,7 @@ module IdentityV1
|
|
22
28
|
url = Base + 'login'
|
23
29
|
response = @communicator.get(url, credentials)
|
24
30
|
if response.code == '200'
|
25
|
-
login_result = Org::Familysearch::Ws::Identity::
|
31
|
+
login_result = Org::Familysearch::Ws::Identity::V2a::Schema::Identity.from_json JSON.parse(response.body)
|
26
32
|
@communicator.session = login_result.session.id
|
27
33
|
return true
|
28
34
|
else
|
@@ -37,5 +43,5 @@ end
|
|
37
43
|
|
38
44
|
# Mix in the module so that the identity_v1 can be called
|
39
45
|
class FsCommunicator
|
40
|
-
include
|
46
|
+
include IdentityV2
|
41
47
|
end
|
data/ruby-fs-stack.gemspec
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
2
|
+
# DO NOT EDIT THIS FILE
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{ruby-fs-stack}
|
8
|
-
s.version = "0.5.
|
8
|
+
s.version = "0.5.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Jimmy Zimmerman"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-10-29}
|
13
13
|
s.description = %q{A library that enables you to read and update information with the new.familysearch.org API.}
|
14
14
|
s.email = %q{jimmy.zimmerman@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -59,6 +59,7 @@ Gem::Specification.new do |s|
|
|
59
59
|
"spec/ruby-fs-stack/familytree/json/fakeweb_contributor.txt",
|
60
60
|
"spec/ruby-fs-stack/familytree/json/fakeweb_pedigree.txt",
|
61
61
|
"spec/ruby-fs-stack/familytree/json/fakeweb_pedigree2.txt",
|
62
|
+
"spec/ruby-fs-stack/familytree/json/fakeweb_pedigree3.txt",
|
62
63
|
"spec/ruby-fs-stack/familytree/json/fakeweb_properties.txt",
|
63
64
|
"spec/ruby-fs-stack/familytree/json/match_KW3B-NNM.js",
|
64
65
|
"spec/ruby-fs-stack/familytree/json/note_create_response.js",
|
@@ -92,7 +93,7 @@ Gem::Specification.new do |s|
|
|
92
93
|
s.rdoc_options = ["--charset=UTF-8"]
|
93
94
|
s.require_paths = ["lib"]
|
94
95
|
s.requirements = ["This gem requires a json gem (json, json_pure, or json-jruby)."]
|
95
|
-
s.rubygems_version = %q{1.3.
|
96
|
+
s.rubygems_version = %q{1.3.6}
|
96
97
|
s.summary = %q{Ruby wrapper for all FamilySearch APIs.}
|
97
98
|
s.test_files = [
|
98
99
|
"spec/ruby-fs-stack/familytree/communicator_spec.rb",
|
@@ -128,4 +129,3 @@ Gem::Specification.new do |s|
|
|
128
129
|
s.add_dependency(%q<fakeweb>, [">= 0"])
|
129
130
|
end
|
130
131
|
end
|
131
|
-
|
@@ -670,6 +670,19 @@ describe FamilytreeV2::Communicator do
|
|
670
670
|
pedigree.persons.first.id.should == 'KWZF-CFW'
|
671
671
|
end
|
672
672
|
|
673
|
+
describe "sending options to pedigree read" do
|
674
|
+
before(:each) do
|
675
|
+
response = File.join(File.dirname(__FILE__),'json','fakeweb_pedigree3.txt')
|
676
|
+
FakeWeb.register_uri(:get, "https://fakeweb.familysearch.org/familytree/v2/pedigree/KWZF-CFW?ancestors=9&sessionId=SESSID&dataFormat=application/json",
|
677
|
+
:response => response)
|
678
|
+
end
|
679
|
+
|
680
|
+
it "should send the options to the querystring" do
|
681
|
+
pedigree = @com.familytree_v2.pedigree 'KWZF-CFW', :ancestors => 9
|
682
|
+
pedigree.id.should == 'ZZZZ-ZZZ'
|
683
|
+
end
|
684
|
+
end
|
685
|
+
|
673
686
|
end
|
674
687
|
|
675
688
|
describe "properties read" do
|
@@ -0,0 +1,13 @@
|
|
1
|
+
HTTP/1.1 200 OK
|
2
|
+
Date: Mon, 22 Feb 2010 14:33:41 GMT
|
3
|
+
APP_SVR_ID: -8.-87
|
4
|
+
Expires: Thu, 01 Jan 1970 00:00:00 GMT
|
5
|
+
Cache-Control: no-cache
|
6
|
+
Cache-Control: no-store
|
7
|
+
X-PROCESSING-TIME: 256
|
8
|
+
Content-Type: application/json;charset=utf-8
|
9
|
+
Content-Language: en-US
|
10
|
+
Content-Length: 7900
|
11
|
+
Via: 1.1 rl1-sigma (Juniper Networks Application Acceleration Platform - DX 5.1.8 0)
|
12
|
+
|
13
|
+
{"pedigrees":[{"id":"ZZZZ-ZZZ","persons":[{"id":"KWZF-CFW","assertions":{"names":[{"value":{"forms":[{"fullText":"Francis Moroni Zimmerman"}]}}],"genders":[{"value":{"type":"Male"}}]},"parents":[{"parents":[{"gender":"Male","id":"KW8W-RFD"},{"gender":"Female","id":"KW8W-RF8"}],"parent":[{"gender":"Male","id":"KW8W-RFD"},{"gender":"Female","id":"KW8W-RF8"}]}]},{"id":"KW8W-RFD","assertions":{"names":[{"value":{"forms":[{"fullText":"Charles Zimmerman"}]}}],"genders":[{"value":{"type":"Male"}}]},"parents":[{"parents":[{"gender":"Male","id":"KN1H-HBK"},{"gender":"Female","id":"KLYL-KPZ"}],"parent":[{"gender":"Male","id":"KN1H-HBK"},{"gender":"Female","id":"KLYL-KPZ"}]}]},{"id":"KW8W-RF8","assertions":{"names":[{"value":{"forms":[{"fullText":"Sarah Ellen Felch"}]}}],"genders":[{"value":{"type":"Female"}}]},"parents":[{"parents":[{"gender":"Male","id":"2794-46L"},{"gender":"Female","id":"279W-NDV"}],"parent":[{"gender":"Male","id":"2794-46L"},{"gender":"Female","id":"279W-NDV"}]}]},{"id":"KN1H-HBK","assertions":{"names":[{"value":{"forms":[{"fullText":"Johannes Rudolf Eman Zimmerman"}]}}],"genders":[{"value":{"type":"Male"}}]},"parents":[{"parents":[{"gender":"Male","id":"KN3F-F9B"},{"gender":"Female","id":"KN3V-9RN"}],"parent":[{"gender":"Male","id":"KN3F-F9B"},{"gender":"Female","id":"KN3V-9RN"}]}]},{"id":"KLYL-KPZ","assertions":{"names":[{"value":{"forms":[{"fullText":"Anna M. Zimmerman"}]}}],"genders":[{"value":{"type":"Female"}}]},"parents":[{"parents":[{"gender":"Male","id":"KFRD-R4F"},{"gender":"Female","id":"K6MF-LQZ"}],"parent":[{"gender":"Male","id":"KFRD-R4F"},{"gender":"Female","id":"K6MF-LQZ"}]}]},{"id":"2794-46L","assertions":{"names":[{"value":{"forms":[{"fullText":"Marshall Parker Felch"}]}}],"genders":[{"value":{"type":"Male"}}]},"parents":[{"parents":[{"gender":"Male","id":"KJ86-3VD"},{"gender":"Female","id":"279W-XKJ"}],"parent":[{"gender":"Male","id":"KJ86-3VD"},{"gender":"Female","id":"279W-XKJ"}]}]},{"id":"279W-NDV","assertions":{"names":[{"value":{"forms":[{"fullText":"Amanda Matilda Colburn"}]}}],"genders":[{"value":{"type":"Female"}}]},"parents":[{"parents":[{"gender":"Male","id":"K29J-9BD"},{"gender":"Female","id":"KCFB-WTR"}],"parent":[{"gender":"Male","id":"K29J-9BD"},{"gender":"Female","id":"KCFB-WTR"}]}]},{"id":"KN3F-F9B","assertions":{"names":[{"value":{"forms":[{"fullText":"Johann J. Zimmermen"}]}}],"genders":[{"value":{"type":"Male"}}]},"parents":[{"parents":[{"gender":"Male","id":"27H1-GGG"},{"gender":"Female","id":"2HKB-PCJ"}],"parent":[{"gender":"Male","id":"27H1-GGG"},{"gender":"Female","id":"2HKB-PCJ"}]}]},{"id":"KN3V-9RN","assertions":{"names":[{"value":{"forms":[{"fullText":"Elisabeth Wenger"}]}}],"genders":[{"value":{"type":"Female"}}]},"parents":[{"parents":[{"gender":"Male","id":"KGCF-GBV"},{"gender":"Female","id":"K4F8-J4P"}],"parent":[{"gender":"Male","id":"KGCF-GBV"},{"gender":"Female","id":"K4F8-J4P"}]}]},{"id":"KFRD-R4F","assertions":{"names":[{"value":{"forms":[{"fullText":"Christian Zimmerman"}]}}],"genders":[{"value":{"type":"Male"}}]},"parents":[{"parents":[{"gender":"Male","id":"KNQP-VBQ"},{"gender":"Female","id":"KGP8-TR7"}],"parent":[{"gender":"Male","id":"KNQP-VBQ"},{"gender":"Female","id":"KGP8-TR7"}]}]},{"id":"K6MF-LQZ","assertions":{"names":[{"value":{"forms":[{"fullText":"Mary Magdalena Weiland"}]}}],"genders":[{"value":{"type":"Female"}}]}},{"id":"KJ86-3VD","assertions":{"names":[{"value":{"forms":[{"fullText":"Parker Felch"}]}}],"genders":[{"value":{"type":"Male"}}]},"parents":[{"parents":[{"gender":"Male","id":"KJ86-3VW"},{"gender":"Female","id":"KFY6-FC8"}],"parent":[{"gender":"Male","id":"KJ86-3VW"},{"gender":"Female","id":"KFY6-FC8"}]}]},{"id":"279W-XKJ","assertions":{"names":[{"value":{"forms":[{"fullText":"Hannah Gould"}]}}],"genders":[{"value":{"type":"Female"}}]},"parents":[{"parents":[{"gender":"Male","id":"KCRJ-JJD"},{"gender":"Female","id":"KCH1-KQF"}],"parent":[{"gender":"Male","id":"KCRJ-JJD"},{"gender":"Female","id":"KCH1-KQF"}]}]},{"id":"K29J-9BD","assertions":{"names":[{"value":{"forms":[{"fullText":"Ira Coburn"}]}}],"genders":[{"value":{"type":"Male"}}]},"parents":[{"parents":[{"gender":"Male","id":"K29J-9TC"},{"gender":"Female","id":"K29J-9Y9"}],"parent":[{"gender":"Male","id":"K29J-9TC"},{"gender":"Female","id":"K29J-9Y9"}]}]},{"id":"KCFB-WTR","assertions":{"names":[{"value":{"forms":[{"fullText":"Celana Cisco"}]}}],"genders":[{"value":{"type":"Female"}}]},"parents":[{"parents":[{"gender":"Male","id":"K83T-JZ5"},{"gender":"Female","id":"KCZ3-XGW"}],"parent":[{"gender":"Male","id":"K83T-JZ5"},{"gender":"Female","id":"KCZ3-XGW"}]}]},{"id":"27H1-GGG","assertions":{"names":[{"value":{"forms":[{"fullText":"Christen Zimmermann"}]}}],"genders":[{"value":{"type":"Male"}}]},"parents":[{"parents":[{"gender":"Male","id":"KG9T-DVW"},{"gender":"Female","id":"KNSW-LY9"}],"parent":[{"gender":"Male","id":"KG9T-DVW"},{"gender":"Female","id":"KNSW-LY9"}]}]},{"id":"2HKB-PCJ","assertions":{"names":[{"value":{"forms":[{"fullText":"Susanna Saegersmann"}]}}],"genders":[{"value":{"type":"Female"}}]},"parents":[{"parents":[{"gender":"Male","id":"KGP8-TK8"},{"gender":"Female","id":"KGP8-TGY"}],"parent":[{"gender":"Male","id":"KGP8-TK8"},{"gender":"Female","id":"KGP8-TGY"}]}]},{"id":"KGCF-GBV","assertions":{"names":[{"value":{"forms":[{"fullText":"David Wenger"}]}}],"genders":[{"value":{"type":"Male"}}]},"parents":[{"parents":[{"gender":"Male","id":"K4BK-G9S"},{"gender":"Female","id":"KC4S-CG3"}],"parent":[{"gender":"Male","id":"K4BK-G9S"},{"gender":"Female","id":"KC4S-CG3"}]}]},{"id":"K4F8-J4P","assertions":{"names":[{"value":{"forms":[{"fullText":"Elisabeth Zuercher"}]}}],"genders":[{"value":{"type":"Female"}}]}},{"id":"KNQP-VBQ","assertions":{"names":[{"value":{"forms":[{"fullText":"Daniel Zimmerman"}]}}],"genders":[{"value":{"type":"Male"}}]}},{"id":"KGP8-TR7","assertions":{"names":[{"value":{"forms":[{"fullText":"Anna S Gessemann"}]}}],"genders":[{"value":{"type":"Female"}}]},"parents":[{"parents":[{"gender":"Male","id":"KGP8-TK8"},{"gender":"Female","id":"KGP8-TGY"}],"parent":[{"gender":"Male","id":"KGP8-TK8"},{"gender":"Female","id":"KGP8-TGY"}]}]},{"id":"KJ86-3VW","assertions":{"names":[{"value":{"forms":[{"fullText":"Lewis Felch"}]}}],"genders":[{"value":{"type":"Male"}}]}},{"id":"KFY6-FC8","assertions":{"names":[{"value":{"forms":[{"fullText":"Mary Smith"}]}}],"genders":[{"value":{"type":"Female"}}]}},{"id":"KCRJ-JJD","assertions":{"names":[{"value":{"forms":[{"fullText":"Amos Gould"}]}}],"genders":[{"value":{"type":"Male"}}]},"parents":[{"parents":[{"gender":"Male","id":"KHG3-V4Z"},{"gender":"Female","id":"27DZ-TRF"}],"parent":[{"gender":"Male","id":"KHG3-V4Z"},{"gender":"Female","id":"27DZ-TRF"}]}]},{"id":"KCH1-KQF","assertions":{"names":[{"value":{"forms":[{"fullText":"Rebecca Ferley"}]}}],"genders":[{"value":{"type":"Female"}}]},"parents":[{"parents":[{"gender":"Male","id":"277G-ZJN"},{"gender":"Female","id":"277L-KZG"}],"parent":[{"gender":"Male","id":"277G-ZJN"},{"gender":"Female","id":"277L-KZG"}]}]},{"id":"K29J-9TC","assertions":{"names":[{"value":{"forms":[{"fullText":"Ira Coburn"}]}}],"genders":[{"value":{"type":"Male"}}]},"parents":[{"parents":[{"gender":"Male","id":"2MKD-ZB8"},{"gender":"Female","id":"2MKD-Z1L"}],"parent":[{"gender":"Male","id":"2MKD-ZB8"},{"gender":"Female","id":"2MKD-Z1L"}]}]},{"id":"K29J-9Y9","assertions":{"names":[{"value":{"forms":[{"fullText":"Mercy Mason"}]}}],"genders":[{"value":{"type":"Female"}}]},"parents":[{"parents":[{"gender":"Male","id":"K426-LCM"}],"parent":[{"gender":"Male","id":"K426-LCM"}]}]},{"id":"K83T-JZ5","assertions":{"names":[{"value":{"forms":[{"fullText":"Richard Cisco"}]}}],"genders":[{"value":{"type":"Male"}}]}},{"id":"KCZ3-XGW","assertions":{"names":[{"value":{"forms":[{"fullText":"Celia Thomas"}]}}],"genders":[{"value":{"type":"Female"}}]}}],"requestedId":"KWZF-CFW"}],"version":"2.0.20091103.5215","statusCode":200,"statusMessage":"OK"}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
2
|
require 'ruby-fs-stack/identity'
|
3
3
|
|
4
|
-
describe
|
4
|
+
describe IdentityV2::Communicator do
|
5
5
|
include HttpCommunicatorHelper # found in the spec_helper
|
6
6
|
|
7
7
|
def do_get(url, credentials = {})
|
@@ -14,10 +14,12 @@ describe IdentityV1::Communicator do
|
|
14
14
|
end
|
15
15
|
|
16
16
|
it "should have an extended identity_v1 method on the communicator" do
|
17
|
-
@com.identity_v1.should be_instance_of(
|
17
|
+
@com.identity_v1.should be_instance_of(IdentityV2::Communicator)
|
18
18
|
end
|
19
19
|
|
20
|
-
|
20
|
+
# At this point, we're making an alias on identity_v1 to just use identity_v2 so that you don't have to make
|
21
|
+
# that many code changes in your clients
|
22
|
+
describe "authenticate (v1)" do
|
21
23
|
before(:each) do
|
22
24
|
filename = File.join(File.dirname(__FILE__),'json','login.js')
|
23
25
|
@body = File.read(filename)
|
@@ -27,8 +29,8 @@ describe IdentityV1::Communicator do
|
|
27
29
|
@request.should_receive(:[]=).with('User-Agent',@com.user_agent)
|
28
30
|
end
|
29
31
|
|
30
|
-
it "should make a call to /identity/
|
31
|
-
url = "/identity/
|
32
|
+
it "should make a call to /identity/v2/login" do
|
33
|
+
url = "/identity/v2/login?key=KEY"
|
32
34
|
Net::HTTP::Get.should_receive(:new).with(url+"&dataFormat=application/json").and_return(@request)
|
33
35
|
response = @com.identity_v1.authenticate(:username => 'user', :password => 'pass')
|
34
36
|
end
|
@@ -40,7 +42,7 @@ describe IdentityV1::Communicator do
|
|
40
42
|
|
41
43
|
it "should set the communicator's session to the logged in session" do
|
42
44
|
@com.identity_v1.authenticate(:username => 'user', :password => 'pass')
|
43
|
-
@com.session.should == '
|
45
|
+
@com.session.should == 'USYS5E027A421416AA29BA0A348A84CEA5C9_nbci-045-034'
|
44
46
|
end
|
45
47
|
|
46
48
|
it "should raise RubyFsStack::Unauthorized if the login was not successful" do
|
@@ -53,7 +55,7 @@ describe IdentityV1::Communicator do
|
|
53
55
|
|
54
56
|
describe "login" do
|
55
57
|
it "should accept the login method and behave the same way" do
|
56
|
-
url = "/identity/
|
58
|
+
url = "/identity/v2/login?key=KEY"
|
57
59
|
Net::HTTP::Get.should_receive(:new).with(url+"&dataFormat=application/json").and_return(@request)
|
58
60
|
response = @com.identity_v1.login(:username => 'user', :password => 'pass')
|
59
61
|
end
|
@@ -65,7 +67,7 @@ describe IdentityV1::Communicator do
|
|
65
67
|
|
66
68
|
it "should set the communicator's session to the logged in session" do
|
67
69
|
@com.identity_v1.login(:username => 'user', :password => 'pass')
|
68
|
-
@com.session.should == '
|
70
|
+
@com.session.should == 'USYS5E027A421416AA29BA0A348A84CEA5C9_nbci-045-034'
|
69
71
|
end
|
70
72
|
|
71
73
|
it "should raise RubyFsStack::Unauthorized if the login was not successful" do
|
@@ -79,4 +81,66 @@ describe IdentityV1::Communicator do
|
|
79
81
|
end
|
80
82
|
end
|
81
83
|
|
84
|
+
describe "authenticate (v2)" do
|
85
|
+
before(:each) do
|
86
|
+
filename = File.join(File.dirname(__FILE__),'json','login.js')
|
87
|
+
@body = File.read(filename)
|
88
|
+
@mock_response = mock('HTTP::Response', :body => @body, :code => '200')
|
89
|
+
@http.should_receive(:start).and_return(@mock_response)
|
90
|
+
@request.should_receive(:basic_auth).with('user','pass')
|
91
|
+
@request.should_receive(:[]=).with('User-Agent',@com.user_agent)
|
92
|
+
end
|
93
|
+
|
94
|
+
it "should make a call to /identity/v2/login" do
|
95
|
+
url = "/identity/v2/login?key=KEY"
|
96
|
+
Net::HTTP::Get.should_receive(:new).with(url+"&dataFormat=application/json").and_return(@request)
|
97
|
+
response = @com.identity_v2.authenticate(:username => 'user', :password => 'pass')
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should return true if successful" do
|
101
|
+
success = @com.identity_v2.authenticate(:username => 'user', :password => 'pass')
|
102
|
+
success.should == true
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should set the communicator's session to the logged in session" do
|
106
|
+
@com.identity_v2.authenticate(:username => 'user', :password => 'pass')
|
107
|
+
@com.session.should == 'USYS5E027A421416AA29BA0A348A84CEA5C9_nbci-045-034'
|
108
|
+
end
|
109
|
+
|
110
|
+
it "should raise RubyFsStack::Unauthorized if the login was not successful" do
|
111
|
+
@mock_response.stub!(:code).and_return('401')
|
112
|
+
@mock_response.stub!(:message).and_return('Invalid name or password.')
|
113
|
+
lambda{
|
114
|
+
@com.identity_v2.authenticate(:username => 'user', :password => 'pass')
|
115
|
+
}.should raise_error(RubyFsStack::Unauthorized)
|
116
|
+
end
|
117
|
+
|
118
|
+
describe "login" do
|
119
|
+
it "should accept the login method and behave the same way" do
|
120
|
+
url = "/identity/v2/login?key=KEY"
|
121
|
+
Net::HTTP::Get.should_receive(:new).with(url+"&dataFormat=application/json").and_return(@request)
|
122
|
+
response = @com.identity_v2.login(:username => 'user', :password => 'pass')
|
123
|
+
end
|
124
|
+
|
125
|
+
it "should return true if successful" do
|
126
|
+
success = @com.identity_v2.login(:username => 'user', :password => 'pass')
|
127
|
+
success.should == true
|
128
|
+
end
|
129
|
+
|
130
|
+
it "should set the communicator's session to the logged in session" do
|
131
|
+
@com.identity_v2.login(:username => 'user', :password => 'pass')
|
132
|
+
@com.session.should == 'USYS5E027A421416AA29BA0A348A84CEA5C9_nbci-045-034'
|
133
|
+
end
|
134
|
+
|
135
|
+
it "should raise RubyFsStack::Unauthorized if the login was not successful" do
|
136
|
+
@mock_response.stub!(:code).and_return('401')
|
137
|
+
@mock_response.stub!(:message).and_return('Invalid name or password.')
|
138
|
+
lambda{
|
139
|
+
@com.identity_v2.login(:username => 'user', :password => 'pass')
|
140
|
+
}.should raise_error(RubyFsStack::Unauthorized)
|
141
|
+
end
|
142
|
+
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
82
146
|
end
|
@@ -1 +1 @@
|
|
1
|
-
{"session":{"id":"
|
1
|
+
{"session":{"id":"USYS5E027A421416AA29BA0A348A84CEA5C9_nbci-045-034"},"statusCode":200,"statusMessage":"OK","version":"2.7.20100927.6249"}
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-fs-stack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 5
|
8
|
+
- 2
|
9
|
+
version: 0.5.2
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Jimmy Zimmerman
|
@@ -9,29 +14,33 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date: 2010-
|
17
|
+
date: 2010-10-29 00:00:00 -06:00
|
13
18
|
default_executable:
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
21
|
name: rspec
|
17
|
-
|
18
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
24
|
requirements:
|
21
25
|
- - ">="
|
22
26
|
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 0
|
23
29
|
version: "0"
|
24
|
-
|
30
|
+
type: :development
|
31
|
+
version_requirements: *id001
|
25
32
|
- !ruby/object:Gem::Dependency
|
26
33
|
name: fakeweb
|
27
|
-
|
28
|
-
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
34
|
+
prerelease: false
|
35
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
37
|
- - ">="
|
32
38
|
- !ruby/object:Gem::Version
|
39
|
+
segments:
|
40
|
+
- 0
|
33
41
|
version: "0"
|
34
|
-
|
42
|
+
type: :development
|
43
|
+
version_requirements: *id002
|
35
44
|
description: A library that enables you to read and update information with the new.familysearch.org API.
|
36
45
|
email: jimmy.zimmerman@gmail.com
|
37
46
|
executables: []
|
@@ -84,6 +93,7 @@ files:
|
|
84
93
|
- spec/ruby-fs-stack/familytree/json/fakeweb_contributor.txt
|
85
94
|
- spec/ruby-fs-stack/familytree/json/fakeweb_pedigree.txt
|
86
95
|
- spec/ruby-fs-stack/familytree/json/fakeweb_pedigree2.txt
|
96
|
+
- spec/ruby-fs-stack/familytree/json/fakeweb_pedigree3.txt
|
87
97
|
- spec/ruby-fs-stack/familytree/json/fakeweb_properties.txt
|
88
98
|
- spec/ruby-fs-stack/familytree/json/match_KW3B-NNM.js
|
89
99
|
- spec/ruby-fs-stack/familytree/json/note_create_response.js
|
@@ -125,18 +135,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
125
135
|
requirements:
|
126
136
|
- - ">="
|
127
137
|
- !ruby/object:Gem::Version
|
138
|
+
segments:
|
139
|
+
- 0
|
128
140
|
version: "0"
|
129
|
-
version:
|
130
141
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
142
|
requirements:
|
132
143
|
- - ">="
|
133
144
|
- !ruby/object:Gem::Version
|
145
|
+
segments:
|
146
|
+
- 0
|
134
147
|
version: "0"
|
135
|
-
version:
|
136
148
|
requirements:
|
137
149
|
- This gem requires a json gem (json, json_pure, or json-jruby).
|
138
150
|
rubyforge_project:
|
139
|
-
rubygems_version: 1.3.
|
151
|
+
rubygems_version: 1.3.6
|
140
152
|
signing_key:
|
141
153
|
specification_version: 3
|
142
154
|
summary: Ruby wrapper for all FamilySearch APIs.
|