firebase 0.2.6 → 0.2.7
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.
- checksums.yaml +5 -5
- data/CHANGELOG.md +5 -1
- data/LICENSE.txt +0 -0
- data/README.md +19 -5
- data/lib/firebase.rb +26 -4
- data/lib/firebase/response.rb +0 -0
- metadata +17 -13
- data/.document +0 -5
- data/.rspec +0 -1
- data/.travis.yml +0 -8
- data/Gemfile +0 -19
- data/Gemfile.lock +0 -73
- data/Rakefile +0 -52
- data/VERSION +0 -1
- data/firebase.gemspec +0 -69
- data/spec/firebase_spec.rb +0 -132
- data/spec/spec_helper.rb +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: d72f4bd9c17f8c7d7839cbb1defd919299ca5d32b62c44b31c98f877f5e8b8b9
|
4
|
+
data.tar.gz: 7b0edc9268116110902f07912f5e2f06830e202a651a375c0b800506c17d64db
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b8c9c29aeccf96d90d88ee18448f29b8ea3d2f269d31230ea8ee8851fb4ae6035f9953351fe1cd430b87a7d03e47a8ab6fec6835568add43f6869a2b56a6faf6
|
7
|
+
data.tar.gz: 821ec1fa4f8279d908356344146452b3e7515242dc936f4077c412adf5084dda4c077ed9b697a753e43888e353fca70b8e9a329dcdfbe277b0ec9373edd41917
|
data/CHANGELOG.md
CHANGED
@@ -1,12 +1,16 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 0.2.7
|
4
|
+
|
5
|
+
* Support newer Firebase [authentication method](https://github.com/oscardelben/firebase-ruby/pull/81)
|
6
|
+
|
3
7
|
## 0.2.5
|
4
8
|
|
5
9
|
* [Refactor to remove Request proxy class, expose http client](https://github.com/oscardelben/firebase-ruby/commit/138b1e1461ff33da506b0d7992b42e3544be9cf1)
|
6
10
|
|
7
11
|
## 0.2.4
|
8
12
|
|
9
|
-
* Add support for server timestamp.
|
13
|
+
* Add support for server timestamp.
|
10
14
|
|
11
15
|
## 0.2.3
|
12
16
|
|
data/LICENSE.txt
CHANGED
File without changes
|
data/README.md
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
# firebase [](https://travis-ci.org/oscardelben/firebase-ruby)
|
1
|
+
# firebase [](https://travis-ci.org/oscardelben/firebase-ruby) [](https://rubygems.org/gems/firebase)
|
2
|
+
|
2
3
|
|
3
4
|
Ruby wrapper for the [Firebase REST API](https://www.firebase.com/docs/rest/api/).
|
4
5
|
|
@@ -19,18 +20,21 @@ base_uri = 'https://<your-firebase>.firebaseio.com/'
|
|
19
20
|
|
20
21
|
firebase = Firebase::Client.new(base_uri)
|
21
22
|
|
22
|
-
response = firebase.push("todos", { :name => 'Pick the milk', :priority => 1 })
|
23
|
+
response = firebase.push("todos", { :name => 'Pick the milk', :'.priority' => 1 })
|
23
24
|
response.success? # => true
|
24
25
|
response.code # => 200
|
25
26
|
response.body # => { 'name' => "-INOQPH-aV_psbk3ZXEX" }
|
26
27
|
response.raw_body # => '{"name":"-INOQPH-aV_psbk3ZXEX"}'
|
27
28
|
```
|
28
29
|
|
29
|
-
If you have a read-only namespace,
|
30
|
+
If you have a read-only namespace, you need to authenticate your Firebase client. `firebase-ruby` will attempt to determine if you are using the old or new [authentication method](https://firebase.google.com/docs/database/rest/auth) by whether your auth string is a valid JSON string or not.
|
31
|
+
|
30
32
|
```ruby
|
31
|
-
|
33
|
+
# Using Firebase Admin SDK private key
|
34
|
+
firebase = Firebase::Client.new(base_uri, private_key_json_string)
|
32
35
|
|
33
|
-
|
36
|
+
# Using Firebase Database Secret (deprecated)
|
37
|
+
firebase = Firebase::Client.new(base_uri, db_secret)
|
34
38
|
```
|
35
39
|
|
36
40
|
You can now pass custom query options to firebase:
|
@@ -48,6 +52,16 @@ response = firebase.push("todos", {
|
|
48
52
|
})
|
49
53
|
```
|
50
54
|
|
55
|
+
To update multiple values that are not direct descendants, supply their paths as keys in the payload to update:
|
56
|
+
|
57
|
+
```ruby
|
58
|
+
# note the empty path string here as the first argument
|
59
|
+
firebase.update('', {
|
60
|
+
"users/posts/#{postID}" => true,
|
61
|
+
"posts/#{postID}" => text
|
62
|
+
})
|
63
|
+
```
|
64
|
+
|
51
65
|
So far, supported methods are:
|
52
66
|
|
53
67
|
```ruby
|
data/lib/firebase.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'firebase/response'
|
2
2
|
require 'firebase/server_value'
|
3
|
+
require 'googleauth'
|
3
4
|
require 'httpclient'
|
4
5
|
require 'json'
|
5
6
|
require 'uri'
|
@@ -13,13 +14,22 @@ module Firebase
|
|
13
14
|
raise ArgumentError.new('base_uri must be a valid https uri')
|
14
15
|
end
|
15
16
|
base_uri += '/' unless base_uri.end_with?('/')
|
17
|
+
default_header = {
|
18
|
+
'Content-Type' => 'application/json'
|
19
|
+
}
|
20
|
+
if auth && valid_json?(auth)
|
21
|
+
# Using Admin SDK private key
|
22
|
+
scopes = %w(https://www.googleapis.com/auth/firebase.database https://www.googleapis.com/auth/userinfo.email)
|
23
|
+
credentials = Google::Auth::DefaultCredentials.make_creds(json_key_io: StringIO.new(auth), scope: scopes)
|
24
|
+
default_header = credentials.apply(default_header)
|
25
|
+
else
|
26
|
+
# Using deprecated Database Secret
|
27
|
+
@auth = auth
|
28
|
+
end
|
16
29
|
@request = HTTPClient.new({
|
17
30
|
:base_url => base_uri,
|
18
|
-
:default_header =>
|
19
|
-
'Content-Type' => 'application/json'
|
20
|
-
}
|
31
|
+
:default_header => default_header
|
21
32
|
})
|
22
|
-
@auth = auth
|
23
33
|
end
|
24
34
|
|
25
35
|
# Writes and returns the data
|
@@ -53,11 +63,23 @@ module Firebase
|
|
53
63
|
private
|
54
64
|
|
55
65
|
def process(verb, path, data=nil, query={})
|
66
|
+
if path[0] == '/'
|
67
|
+
raise(ArgumentError.new("Invalid path: #{path}. Path must be relative"))
|
68
|
+
end
|
56
69
|
Firebase::Response.new @request.request(verb, "#{path}.json", {
|
57
70
|
:body => (data && data.to_json),
|
58
71
|
:query => (@auth ? { :auth => @auth }.merge(query) : query),
|
59
72
|
:follow_redirect => true
|
60
73
|
})
|
61
74
|
end
|
75
|
+
|
76
|
+
def valid_json?(json)
|
77
|
+
begin
|
78
|
+
JSON.parse(json)
|
79
|
+
return true
|
80
|
+
rescue JSON::ParserError
|
81
|
+
return false
|
82
|
+
end
|
83
|
+
end
|
62
84
|
end
|
63
85
|
end
|
data/lib/firebase/response.rb
CHANGED
File without changes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: firebase
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oscar Del Ben
|
@@ -12,6 +12,20 @@ date: 2015-11-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httpclient
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.5.3
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.5.3
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: json
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
16
30
|
requirements:
|
17
31
|
- - ">="
|
@@ -25,7 +39,7 @@ dependencies:
|
|
25
39
|
- !ruby/object:Gem::Version
|
26
40
|
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
42
|
+
name: googleauth
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
45
|
- - ">="
|
@@ -89,22 +103,12 @@ extra_rdoc_files:
|
|
89
103
|
- LICENSE.txt
|
90
104
|
- README.md
|
91
105
|
files:
|
92
|
-
- ".document"
|
93
|
-
- ".rspec"
|
94
|
-
- ".travis.yml"
|
95
106
|
- CHANGELOG.md
|
96
|
-
- Gemfile
|
97
|
-
- Gemfile.lock
|
98
107
|
- LICENSE.txt
|
99
108
|
- README.md
|
100
|
-
- Rakefile
|
101
|
-
- VERSION
|
102
|
-
- firebase.gemspec
|
103
109
|
- lib/firebase.rb
|
104
110
|
- lib/firebase/response.rb
|
105
111
|
- lib/firebase/server_value.rb
|
106
|
-
- spec/firebase_spec.rb
|
107
|
-
- spec/spec_helper.rb
|
108
112
|
homepage: http://github.com/oscardelben/firebase-ruby
|
109
113
|
licenses:
|
110
114
|
- MIT
|
@@ -125,7 +129,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
125
129
|
version: '0'
|
126
130
|
requirements: []
|
127
131
|
rubyforge_project:
|
128
|
-
rubygems_version: 2.
|
132
|
+
rubygems_version: 2.7.3
|
129
133
|
signing_key:
|
130
134
|
specification_version: 4
|
131
135
|
summary: Firebase wrapper for Ruby
|
data/.document
DELETED
data/.rspec
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
--color
|
data/.travis.yml
DELETED
data/Gemfile
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
source "http://rubygems.org"
|
2
|
-
# Add dependencies required to use your gem here.
|
3
|
-
# Example:
|
4
|
-
# gem "activesupport", ">= 2.3.5"
|
5
|
-
|
6
|
-
gem 'httpclient'
|
7
|
-
gem 'json'
|
8
|
-
|
9
|
-
# Add dependencies to develop your gem here.
|
10
|
-
# Include everything needed to run rake, tests, features, etc.
|
11
|
-
group :development do
|
12
|
-
gem 'rake'
|
13
|
-
gem 'rdoc'
|
14
|
-
gem 'rspec'
|
15
|
-
end
|
16
|
-
|
17
|
-
group :utility do
|
18
|
-
gem 'jeweler'
|
19
|
-
end
|
data/Gemfile.lock
DELETED
@@ -1,73 +0,0 @@
|
|
1
|
-
GEM
|
2
|
-
remote: http://rubygems.org/
|
3
|
-
specs:
|
4
|
-
addressable (2.3.8)
|
5
|
-
builder (3.2.2)
|
6
|
-
descendants_tracker (0.0.4)
|
7
|
-
thread_safe (~> 0.3, >= 0.3.1)
|
8
|
-
diff-lcs (1.2.5)
|
9
|
-
faraday (0.9.2)
|
10
|
-
multipart-post (>= 1.2, < 3)
|
11
|
-
git (1.2.9.1)
|
12
|
-
github_api (0.13.0)
|
13
|
-
addressable (~> 2.3)
|
14
|
-
descendants_tracker (~> 0.0.4)
|
15
|
-
faraday (~> 0.8, < 0.10)
|
16
|
-
hashie (>= 3.4)
|
17
|
-
multi_json (>= 1.7.5, < 2.0)
|
18
|
-
nokogiri (~> 1.6.6)
|
19
|
-
oauth2
|
20
|
-
hashie (3.4.3)
|
21
|
-
highline (1.7.8)
|
22
|
-
httpclient (2.7.0.1)
|
23
|
-
jeweler (2.0.1)
|
24
|
-
builder
|
25
|
-
bundler (>= 1.0)
|
26
|
-
git (>= 1.2.5)
|
27
|
-
github_api
|
28
|
-
highline (>= 1.6.15)
|
29
|
-
nokogiri (>= 1.5.10)
|
30
|
-
rake
|
31
|
-
rdoc
|
32
|
-
json (1.8.3)
|
33
|
-
jwt (1.5.2)
|
34
|
-
mini_portile (0.6.2)
|
35
|
-
multi_json (1.11.2)
|
36
|
-
multi_xml (0.5.5)
|
37
|
-
multipart-post (2.0.0)
|
38
|
-
nokogiri (1.6.6.4)
|
39
|
-
mini_portile (~> 0.6.0)
|
40
|
-
oauth2 (1.0.0)
|
41
|
-
faraday (>= 0.8, < 0.10)
|
42
|
-
jwt (~> 1.0)
|
43
|
-
multi_json (~> 1.3)
|
44
|
-
multi_xml (~> 0.5)
|
45
|
-
rack (~> 1.2)
|
46
|
-
rack (1.6.4)
|
47
|
-
rake (10.4.2)
|
48
|
-
rdoc (4.2.0)
|
49
|
-
rspec (3.4.0)
|
50
|
-
rspec-core (~> 3.4.0)
|
51
|
-
rspec-expectations (~> 3.4.0)
|
52
|
-
rspec-mocks (~> 3.4.0)
|
53
|
-
rspec-core (3.4.1)
|
54
|
-
rspec-support (~> 3.4.0)
|
55
|
-
rspec-expectations (3.4.0)
|
56
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
57
|
-
rspec-support (~> 3.4.0)
|
58
|
-
rspec-mocks (3.4.0)
|
59
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
60
|
-
rspec-support (~> 3.4.0)
|
61
|
-
rspec-support (3.4.1)
|
62
|
-
thread_safe (0.3.5)
|
63
|
-
|
64
|
-
PLATFORMS
|
65
|
-
ruby
|
66
|
-
|
67
|
-
DEPENDENCIES
|
68
|
-
httpclient
|
69
|
-
jeweler
|
70
|
-
json
|
71
|
-
rake
|
72
|
-
rdoc
|
73
|
-
rspec
|
data/Rakefile
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'rubygems'
|
4
|
-
require 'bundler'
|
5
|
-
begin
|
6
|
-
Bundler.setup(:default, :development)
|
7
|
-
rescue Bundler::BundlerError => e
|
8
|
-
$stderr.puts e.message
|
9
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
-
exit e.status_code
|
11
|
-
end
|
12
|
-
require 'rake'
|
13
|
-
|
14
|
-
begin
|
15
|
-
require 'jeweler'
|
16
|
-
Jeweler::Tasks.new do |gem|
|
17
|
-
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
18
|
-
gem.name = "firebase"
|
19
|
-
gem.homepage = "http://github.com/oscardelben/firebase-ruby"
|
20
|
-
gem.license = "MIT"
|
21
|
-
gem.summary = %Q{Firebase wrapper for Ruby}
|
22
|
-
gem.description = %Q{Firebase wrapper for Ruby}
|
23
|
-
gem.email = "info@oscardelben.com"
|
24
|
-
gem.authors = ["Oscar Del Ben"]
|
25
|
-
# dependencies defined in Gemfile
|
26
|
-
end
|
27
|
-
Jeweler::RubygemsDotOrgTasks.new
|
28
|
-
rescue LoadError
|
29
|
-
end
|
30
|
-
|
31
|
-
require 'rspec/core'
|
32
|
-
require 'rspec/core/rake_task'
|
33
|
-
RSpec::Core::RakeTask.new(:spec) do |spec|
|
34
|
-
spec.pattern = FileList['spec/**/*_spec.rb']
|
35
|
-
end
|
36
|
-
|
37
|
-
RSpec::Core::RakeTask.new(:rcov) do |spec|
|
38
|
-
spec.pattern = 'spec/**/*_spec.rb'
|
39
|
-
spec.rcov = true
|
40
|
-
end
|
41
|
-
|
42
|
-
task :default => :spec
|
43
|
-
|
44
|
-
require 'rdoc/task'
|
45
|
-
Rake::RDocTask.new do |rdoc|
|
46
|
-
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
47
|
-
|
48
|
-
rdoc.rdoc_dir = 'rdoc'
|
49
|
-
rdoc.title = "firebase #{version}"
|
50
|
-
rdoc.rdoc_files.include('README*')
|
51
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
52
|
-
end
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.2.6
|
data/firebase.gemspec
DELETED
@@ -1,69 +0,0 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
-
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: firebase 0.2.6 ruby lib
|
6
|
-
|
7
|
-
Gem::Specification.new do |s|
|
8
|
-
s.name = "firebase"
|
9
|
-
s.version = "0.2.6"
|
10
|
-
|
11
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
-
s.require_paths = ["lib"]
|
13
|
-
s.authors = ["Oscar Del Ben"]
|
14
|
-
s.date = "2015-11-26"
|
15
|
-
s.description = "Firebase wrapper for Ruby"
|
16
|
-
s.email = "info@oscardelben.com"
|
17
|
-
s.extra_rdoc_files = [
|
18
|
-
"CHANGELOG.md",
|
19
|
-
"LICENSE.txt",
|
20
|
-
"README.md"
|
21
|
-
]
|
22
|
-
s.files = [
|
23
|
-
".document",
|
24
|
-
".rspec",
|
25
|
-
".travis.yml",
|
26
|
-
"CHANGELOG.md",
|
27
|
-
"Gemfile",
|
28
|
-
"Gemfile.lock",
|
29
|
-
"LICENSE.txt",
|
30
|
-
"README.md",
|
31
|
-
"Rakefile",
|
32
|
-
"VERSION",
|
33
|
-
"firebase.gemspec",
|
34
|
-
"lib/firebase.rb",
|
35
|
-
"lib/firebase/response.rb",
|
36
|
-
"lib/firebase/server_value.rb",
|
37
|
-
"spec/firebase_spec.rb",
|
38
|
-
"spec/spec_helper.rb"
|
39
|
-
]
|
40
|
-
s.homepage = "http://github.com/oscardelben/firebase-ruby"
|
41
|
-
s.licenses = ["MIT"]
|
42
|
-
s.rubygems_version = "2.4.5"
|
43
|
-
s.summary = "Firebase wrapper for Ruby"
|
44
|
-
|
45
|
-
if s.respond_to? :specification_version then
|
46
|
-
s.specification_version = 4
|
47
|
-
|
48
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
49
|
-
s.add_runtime_dependency(%q<httpclient>, [">= 0"])
|
50
|
-
s.add_runtime_dependency(%q<json>, [">= 0"])
|
51
|
-
s.add_development_dependency(%q<rake>, [">= 0"])
|
52
|
-
s.add_development_dependency(%q<rdoc>, [">= 0"])
|
53
|
-
s.add_development_dependency(%q<rspec>, [">= 0"])
|
54
|
-
else
|
55
|
-
s.add_dependency(%q<httpclient>, [">= 0"])
|
56
|
-
s.add_dependency(%q<json>, [">= 0"])
|
57
|
-
s.add_dependency(%q<rake>, [">= 0"])
|
58
|
-
s.add_dependency(%q<rdoc>, [">= 0"])
|
59
|
-
s.add_dependency(%q<rspec>, [">= 0"])
|
60
|
-
end
|
61
|
-
else
|
62
|
-
s.add_dependency(%q<httpclient>, [">= 0"])
|
63
|
-
s.add_dependency(%q<json>, [">= 0"])
|
64
|
-
s.add_dependency(%q<rake>, [">= 0"])
|
65
|
-
s.add_dependency(%q<rdoc>, [">= 0"])
|
66
|
-
s.add_dependency(%q<rspec>, [">= 0"])
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
data/spec/firebase_spec.rb
DELETED
@@ -1,132 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "Firebase" do
|
4
|
-
let (:data) do
|
5
|
-
{ 'name' => 'Oscar' }
|
6
|
-
end
|
7
|
-
|
8
|
-
describe "invalid uri" do
|
9
|
-
it "should raise on http" do
|
10
|
-
expect{ Firebase::Client.new('http://test.firebaseio.com') }.to raise_error(ArgumentError)
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'should raise on empty' do
|
14
|
-
expect{ Firebase::Client.new('') }.to raise_error(ArgumentError)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
before do
|
19
|
-
@firebase = Firebase::Client.new('https://test.firebaseio.com')
|
20
|
-
end
|
21
|
-
|
22
|
-
describe "set" do
|
23
|
-
it "writes and returns the data" do
|
24
|
-
expect(@firebase).to receive(:process).with(:put, 'users/info', data, {})
|
25
|
-
@firebase.set('users/info', data)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
describe "get" do
|
30
|
-
it "returns the data" do
|
31
|
-
expect(@firebase).to receive(:process).with(:get, 'users/info', nil, {})
|
32
|
-
@firebase.get('users/info')
|
33
|
-
end
|
34
|
-
|
35
|
-
it "correctly passes custom ordering params" do
|
36
|
-
params = {
|
37
|
-
:orderBy => '"$key"',
|
38
|
-
:startAt => '"A1"'
|
39
|
-
}
|
40
|
-
expect(@firebase).to receive(:process).with(:get, 'users/info', nil, params)
|
41
|
-
@firebase.get('users/info', params)
|
42
|
-
end
|
43
|
-
|
44
|
-
it "works when run against real Firebase dataset" do
|
45
|
-
firebase = Firebase::Client.new 'https://dinosaur-facts.firebaseio.com'
|
46
|
-
response = firebase.get 'dinosaurs', :orderBy => '"$key"', :startAt => '"a"', :endAt => '"m"'
|
47
|
-
expect(response.body).to eq({
|
48
|
-
"bruhathkayosaurus" => {
|
49
|
-
"appeared" => -70000000,
|
50
|
-
"height" => 25,
|
51
|
-
"length" => 44,
|
52
|
-
"order" => "saurischia",
|
53
|
-
"vanished" => -70000000,
|
54
|
-
"weight" => 135000
|
55
|
-
},
|
56
|
-
"lambeosaurus" => {
|
57
|
-
"appeared" => -76000000,
|
58
|
-
"height" => 2.1,
|
59
|
-
"length" => 12.5,
|
60
|
-
"order" => "ornithischia",
|
61
|
-
"vanished" => -75000000,
|
62
|
-
"weight" => 5000
|
63
|
-
},
|
64
|
-
"linhenykus" => {
|
65
|
-
"appeared" => -85000000,
|
66
|
-
"height" => 0.6,
|
67
|
-
"length" => 1,
|
68
|
-
"order" => "theropoda",
|
69
|
-
"vanished" => -75000000,
|
70
|
-
"weight" => 3
|
71
|
-
}
|
72
|
-
})
|
73
|
-
end
|
74
|
-
|
75
|
-
it "return nil if response body contains 'null'" do
|
76
|
-
mock_response = double(:body => 'null')
|
77
|
-
response = Firebase::Response.new(mock_response)
|
78
|
-
expect { response.body }.to_not raise_error
|
79
|
-
end
|
80
|
-
|
81
|
-
it "return true if response body contains 'true'" do
|
82
|
-
mock_response = double(:body => 'true')
|
83
|
-
response = Firebase::Response.new(mock_response)
|
84
|
-
expect(response.body).to eq(true)
|
85
|
-
end
|
86
|
-
|
87
|
-
it "return false if response body contains 'false'" do
|
88
|
-
mock_response = double(:body => 'false')
|
89
|
-
response = Firebase::Response.new(mock_response)
|
90
|
-
expect(response.body).to eq(false)
|
91
|
-
end
|
92
|
-
|
93
|
-
it "raises JSON::ParserError if response body contains invalid JSON" do
|
94
|
-
mock_response = double(:body => '{"this is wrong"')
|
95
|
-
response = Firebase::Response.new(mock_response)
|
96
|
-
expect { response.body }.to raise_error(JSON::ParserError)
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
describe "push" do
|
101
|
-
it "writes the data" do
|
102
|
-
expect(@firebase).to receive(:process).with(:post, 'users', data, {})
|
103
|
-
@firebase.push('users', data)
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
describe "delete" do
|
108
|
-
it "returns true" do
|
109
|
-
expect(@firebase).to receive(:process).with(:delete, 'users/info', nil, {})
|
110
|
-
@firebase.delete('users/info')
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
describe "update" do
|
115
|
-
it "updates and returns the data" do
|
116
|
-
expect(@firebase).to receive(:process).with(:patch, 'users/info', data, {})
|
117
|
-
@firebase.update('users/info', data)
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
describe "http processing" do
|
122
|
-
it "sends custom auth" do
|
123
|
-
firebase = Firebase::Client.new('https://test.firebaseio.com', 'secret')
|
124
|
-
expect(firebase.request).to receive(:request).with(:get, "todos.json", {
|
125
|
-
:body => nil,
|
126
|
-
:query => {:auth => "secret", :foo => 'bar'},
|
127
|
-
:follow_redirect => true
|
128
|
-
})
|
129
|
-
firebase.get('todos', :foo => 'bar')
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|
data/spec/spec_helper.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
|
-
require 'rspec'
|
4
|
-
require 'firebase'
|
5
|
-
|
6
|
-
# Requires supporting files with custom matchers and macros, etc,
|
7
|
-
# in ./support/ and its subdirectories.
|
8
|
-
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
9
|
-
|
10
|
-
RSpec.configure do |config|
|
11
|
-
|
12
|
-
end
|