Skip to content
This repository was archived by the owner on Jan 14, 2025. It is now read-only.

Commit c1e8971

Browse files
feat: Implement backup codes (#64)
* Add missing props related to backup codes * Add access_codes.pull_backup_access_code + test * Dont allow passing access code object instead of id
1 parent 17e12dd commit c1e8971

3 files changed

Lines changed: 35 additions & 5 deletions

File tree

lib/seam/clients/access_codes.rb

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,14 @@ def list(device_or_id = nil, access_code_ids: nil)
2525
)
2626
end
2727

28-
def create(device_id: nil, name: nil, code: nil, starts_at: nil, ends_at: nil)
28+
def create(device_id: nil, name: nil, code: nil, starts_at: nil, ends_at: nil, use_backup_access_code_pool: nil)
2929
action_attempt = request_seam_object(
3030
:post,
3131
"/access_codes/create",
3232
Seam::ActionAttempt,
3333
"action_attempt",
34-
body: {device_id: device_id, code: code, starts_at: starts_at, ends_at: ends_at, name: name}.compact
34+
body: {device_id: device_id, code: code, starts_at: starts_at, ends_at: ends_at, name: name,
35+
use_backup_access_code_pool: use_backup_access_code_pool}.compact
3536
)
3637
action_attempt.wait_until_finished
3738
# TODO: check if failed
@@ -68,6 +69,16 @@ def update(access_code_id: nil, name: nil, code: nil, starts_at: nil, ends_at: n
6869
action_attempt.wait_until_finished
6970
action_attempt
7071
end
72+
73+
def pull_backup_access_code(access_code_id)
74+
request_seam_object(
75+
:post,
76+
"/access_codes/pull_backup_access_code",
77+
Seam::AccessCode,
78+
"backup_access_code",
79+
body: {access_code_id: access_code_id}
80+
)
81+
end
7182
end
7283
end
7384
end

lib/seam/resources/access_code.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
module Seam
44
class AccessCode < BaseResource
5-
attr_reader :access_code_id, :name, :type, :code
5+
attr_reader :access_code_id, :name, :type, :code, :is_managed, :status, :device_id, :is_scheduled_on_device, :is_waiting_for_code_assignment, :pulled_backup_access_code_id, :is_backup_access_code_available, :is_backup
66

7-
date_accessor :starts_at, :ends_at
7+
date_accessor :starts_at, :ends_at, :created_at
88

99
include Seam::ResourceErrorsSupport
1010
include Seam::ResourceWarningsSupport

spec/clients/access_codes_spec.rb

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363

6464
let(:result) { client.access_codes.get(access_code_id) }
6565

66-
it "returns a Device" do
66+
it "returns an Access Code" do
6767
expect(result).to be_a(Seam::AccessCode)
6868
end
6969

@@ -155,4 +155,23 @@
155155
expect(result).to be_a(Seam::ActionAttempt)
156156
end
157157
end
158+
159+
describe "#pull_backup_access_code" do
160+
let(:access_code_id) { "access_code_id_1234" }
161+
let(:access_code_hash) { {access_code_id: access_code_id, is_backup: true} }
162+
163+
before do
164+
stub_seam_request(
165+
:post, "/access_codes/pull_backup_access_code", {backup_access_code: access_code_hash}
166+
).with do |req|
167+
req.body.source == {access_code_id: access_code_id}.to_json
168+
end
169+
end
170+
171+
let(:result) { client.access_codes.pull_backup_access_code(access_code_id) }
172+
173+
it "returns an backup Access Code" do
174+
expect(result).to be_a(Seam::AccessCode)
175+
end
176+
end
158177
end

0 commit comments

Comments
 (0)