firebase-admin 0.1.3 → 0.1.4
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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/firebase-admin/client/accounts.rb +24 -4
- data/lib/firebase-admin/error.rb +3 -0
- data/lib/firebase-admin/version.rb +1 -1
- data/spec/firebase-admin/client/accounts_spec.rb +23 -0
- data/spec/fixtures/google_credentials_invalid.json +1 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1e0160923e857a6f2bb9010287cdc66fc7f7b06f10ed9644a13d8423f06ed417
|
4
|
+
data.tar.gz: 469ed074842e19e352ec98c0e1232c85eed7dd56464e33a7b7669f6a7e35c619
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 634a6bb2e8ccb27851b527859e98460b9fa2b101ff24ec87fbcff5843474529d2fa71f0c20794659ab9938dda3e891cb6c2fda9116ffb00969c0b6ef00e2faf6
|
7
|
+
data.tar.gz: 8eb5c88f3b47ec5f0a8aff837d5c6db40d6ae890a70e39b0cfcb024b6dd443da449a6091dbcbe19091d255870a8edc3fa40240b8c7d5e07be453b8f7f3c97b67
|
data/Gemfile.lock
CHANGED
@@ -165,19 +165,39 @@ module FirebaseAdmin
|
|
165
165
|
end
|
166
166
|
|
167
167
|
def service_account_email
|
168
|
-
default_credentials.fetch('client_email') { ENV['GOOGLE_CLIENT_EMAIL'] }
|
168
|
+
email = default_credentials.fetch('client_email') { ENV['GOOGLE_CLIENT_EMAIL'] }
|
169
|
+
if email.nil? || email == ''
|
170
|
+
raise InvalidCredentials,
|
171
|
+
"No client email provided via 'GOOGLE_APPLICATION_CREDENTIALS' or 'GOOGLE_CLIENT_EMAIL'"
|
172
|
+
end
|
173
|
+
|
174
|
+
email
|
169
175
|
end
|
170
176
|
|
171
177
|
def private_key
|
172
178
|
key = default_credentials.fetch('private_key') { unescape(ENV['GOOGLE_PRIVATE_KEY']) }
|
179
|
+
if key.nil? || key == ''
|
180
|
+
raise InvalidCredentials,
|
181
|
+
"No private key provided via 'GOOGLE_APPLICATION_CREDENTIALS' or 'GOOGLE_PRIVATE_KEY'"
|
182
|
+
end
|
183
|
+
|
173
184
|
OpenSSL::PKey::RSA.new(key)
|
174
185
|
end
|
175
186
|
|
176
187
|
def default_credentials
|
177
|
-
@default_credentials ||=
|
178
|
-
|
179
|
-
|
188
|
+
@default_credentials ||= read_default_credentials
|
189
|
+
end
|
190
|
+
|
191
|
+
def read_default_credentials
|
192
|
+
credentials_path = ENV['GOOGLE_APPLICATION_CREDENTIALS']
|
193
|
+
if credentials_path && File.exist?(credentials_path)
|
194
|
+
JSON.parse(File.read(credentials_path))
|
195
|
+
else
|
196
|
+
{}
|
180
197
|
end
|
198
|
+
rescue StandardError => e
|
199
|
+
raise InvalidCredentials,
|
200
|
+
"Failed reading credentials from '#{ENV['GOOGLE_APPLICATION_CREDENTIALS']}'. Error: #{e.message}"
|
181
201
|
end
|
182
202
|
end
|
183
203
|
end
|
data/lib/firebase-admin/error.rb
CHANGED
@@ -50,11 +50,22 @@ describe FirebaseAdmin::Client do
|
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
53
|
+
context 'when GOOGLE_APPLICATION_CREDENTIALS points to an invalid file' do
|
54
|
+
before do
|
55
|
+
ENV['GOOGLE_APPLICATION_CREDENTIALS'] = fixture('google_credentials_invalid.json').path
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'raises an error' do
|
59
|
+
expect { @client.create_custom_token('user-123') }.to raise_error FirebaseAdmin::InvalidCredentials
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
53
63
|
context 'when credentials are set via GOOGLE_CLIENT_EMAIL / GOOGLE_PRIVATE_KEY' do
|
54
64
|
let(:email) { 'example@example.com' }
|
55
65
|
let(:private_key) { fixture('example_key').read }
|
56
66
|
|
57
67
|
before do
|
68
|
+
ENV['GOOGLE_APPLICATION_CREDENTIALS'] = nil
|
58
69
|
ENV['GOOGLE_CLIENT_EMAIL'] = email
|
59
70
|
ENV['GOOGLE_PRIVATE_KEY'] = private_key
|
60
71
|
end
|
@@ -65,6 +76,18 @@ describe FirebaseAdmin::Client do
|
|
65
76
|
expect(token_data['uid']).to eq('user-123')
|
66
77
|
end
|
67
78
|
end
|
79
|
+
|
80
|
+
context 'when no credentials are provided' do
|
81
|
+
before do
|
82
|
+
ENV['GOOGLE_APPLICATION_CREDENTIALS'] = nil
|
83
|
+
ENV['GOOGLE_CLIENT_EMAIL'] = nil
|
84
|
+
ENV['GOOGLE_PRIVATE_KEY'] = nil
|
85
|
+
end
|
86
|
+
|
87
|
+
it 'raises an error' do
|
88
|
+
expect { @client.create_custom_token('user-123') }.to raise_error FirebaseAdmin::InvalidCredentials
|
89
|
+
end
|
90
|
+
end
|
68
91
|
end
|
69
92
|
|
70
93
|
describe '.sign_in_for_uid' do
|
@@ -0,0 +1 @@
|
|
1
|
+
invalid
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: firebase-admin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Colin Harris
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-04-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -188,6 +188,7 @@ files:
|
|
188
188
|
- spec/fixtures/example_key
|
189
189
|
- spec/fixtures/gateway_timeout.html
|
190
190
|
- spec/fixtures/google_credentials.json
|
191
|
+
- spec/fixtures/google_credentials_invalid.json
|
191
192
|
- spec/fixtures/update_account.json
|
192
193
|
- spec/spec_helper.rb
|
193
194
|
homepage: https://github.com/col/firebase-admin
|
@@ -225,5 +226,6 @@ test_files:
|
|
225
226
|
- spec/fixtures/example_key
|
226
227
|
- spec/fixtures/gateway_timeout.html
|
227
228
|
- spec/fixtures/google_credentials.json
|
229
|
+
- spec/fixtures/google_credentials_invalid.json
|
228
230
|
- spec/fixtures/update_account.json
|
229
231
|
- spec/spec_helper.rb
|