From 3681ba8b6b9fda064ae482090df0b75976442853 Mon Sep 17 00:00:00 2001 From: Andrii Balitskyi <10balian10@gmail.com> Date: Tue, 5 Sep 2023 16:13:09 +0200 Subject: [PATCH 1/3] Add missing props related to backup codes --- lib/seam/clients/access_codes.rb | 4 ++-- lib/seam/resources/access_code.rb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/seam/clients/access_codes.rb b/lib/seam/clients/access_codes.rb index 11fc5f3..b156b43 100644 --- a/lib/seam/clients/access_codes.rb +++ b/lib/seam/clients/access_codes.rb @@ -25,13 +25,13 @@ def list(device_or_id) ) end - def create(device_id: nil, name: nil, code: nil, starts_at: nil, ends_at: nil) + def create(device_id: nil, name: nil, code: nil, starts_at: nil, ends_at: nil, use_backup_access_code_pool: nil) action_attempt = request_seam_object( :post, "/access_codes/create", Seam::ActionAttempt, "action_attempt", - body: {device_id: device_id, code: code, starts_at: starts_at, ends_at: ends_at, name: name}.compact + body: {device_id: device_id, code: code, starts_at: starts_at, ends_at: ends_at, name: name, use_backup_access_code_pool: use_backup_access_code_pool}.compact ) action_attempt.wait_until_finished # TODO: check if failed diff --git a/lib/seam/resources/access_code.rb b/lib/seam/resources/access_code.rb index c6ebcee..0ac916c 100644 --- a/lib/seam/resources/access_code.rb +++ b/lib/seam/resources/access_code.rb @@ -2,9 +2,9 @@ module Seam class AccessCode < BaseResource - attr_reader :access_code_id, :name, :type, :code + attr_reader :access_code_id, :name, :type, :code, :is_managed, :status, :pulled_backup_access_code_id, :is_backup_access_code_available - date_accessor :starts_at, :ends_at + date_accessor :starts_at, :ends_at, :created_at include Seam::ResourceErrorsSupport include Seam::ResourceWarningsSupport From eed8904654c6d51b75f8529188bf02bbc851d2db Mon Sep 17 00:00:00 2001 From: Andrii Balitskyi <10balian10@gmail.com> Date: Tue, 5 Sep 2023 16:38:43 +0200 Subject: [PATCH 2/3] Add access_codes.pull_backup_access_code + test --- lib/seam/clients/access_codes.rb | 19 +++++++++++++++++-- lib/seam/resources/access_code.rb | 2 +- spec/clients/access_codes_spec.rb | 21 ++++++++++++++++++++- 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/lib/seam/clients/access_codes.rb b/lib/seam/clients/access_codes.rb index b156b43..c208065 100644 --- a/lib/seam/clients/access_codes.rb +++ b/lib/seam/clients/access_codes.rb @@ -3,7 +3,9 @@ module Seam module Clients class AccessCodes < BaseClient - def get(access_code_id) + def get(access_code_or_id) + access_code_id = access_code_or_id.is_a?(Seam::AccessCode) ? access_code_or_id.access_code_id : access_code_or_id + request_seam_object( :get, "/access_codes/get", @@ -31,7 +33,8 @@ def create(device_id: nil, name: nil, code: nil, starts_at: nil, ends_at: nil, u "/access_codes/create", Seam::ActionAttempt, "action_attempt", - body: {device_id: device_id, code: code, starts_at: starts_at, ends_at: ends_at, name: name, use_backup_access_code_pool: use_backup_access_code_pool}.compact + body: {device_id: device_id, code: code, starts_at: starts_at, ends_at: ends_at, name: name, + use_backup_access_code_pool: use_backup_access_code_pool}.compact ) action_attempt.wait_until_finished # TODO: check if failed @@ -67,6 +70,18 @@ def update(access_code_id: nil, name: nil, code: nil, starts_at: nil, ends_at: n action_attempt.wait_until_finished action_attempt end + + def pull_backup_access_code(access_code_or_id) + access_code_id = access_code_or_id.is_a?(Seam::AccessCode) ? access_code_or_id.access_code_id : access_code_or_id + + request_seam_object( + :post, + "/access_codes/pull_backup_access_code", + Seam::AccessCode, + "backup_access_code", + body: {access_code_id: access_code_id} + ) + end end end end diff --git a/lib/seam/resources/access_code.rb b/lib/seam/resources/access_code.rb index 0ac916c..f4804b7 100644 --- a/lib/seam/resources/access_code.rb +++ b/lib/seam/resources/access_code.rb @@ -2,7 +2,7 @@ module Seam class AccessCode < BaseResource - attr_reader :access_code_id, :name, :type, :code, :is_managed, :status, :pulled_backup_access_code_id, :is_backup_access_code_available + 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 date_accessor :starts_at, :ends_at, :created_at diff --git a/spec/clients/access_codes_spec.rb b/spec/clients/access_codes_spec.rb index eb60b6a..f7b10bd 100644 --- a/spec/clients/access_codes_spec.rb +++ b/spec/clients/access_codes_spec.rb @@ -40,7 +40,7 @@ let(:result) { client.access_codes.get(access_code_id) } - it "returns a Device" do + it "returns an Access Code" do expect(result).to be_a(Seam::AccessCode) end @@ -103,4 +103,23 @@ expect(result).to be_a(Seam::ActionAttempt) end end + + describe "#pull_backup_access_code" do + let(:access_code_id) { "access_code_id_1234" } + let(:access_code_hash) { {access_code_id: access_code_id, is_backup: true} } + + before do + stub_seam_request( + :post, "/access_codes/pull_backup_access_code", {backup_access_code: access_code_hash} + ).with do |req| + req.body.source == {access_code_id: access_code_id}.to_json + end + end + + let(:result) { client.access_codes.pull_backup_access_code(access_code_id) } + + it "returns an backup Access Code" do + expect(result).to be_a(Seam::AccessCode) + end + end end From 65b83d2c2fb7d33b84a1ecb9c9303d632a2fbd6c Mon Sep 17 00:00:00 2001 From: Andrii Balitskyi <10balian10@gmail.com> Date: Tue, 5 Sep 2023 16:50:41 +0200 Subject: [PATCH 3/3] Dont allow passing access code object instead of id --- lib/seam/clients/access_codes.rb | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/lib/seam/clients/access_codes.rb b/lib/seam/clients/access_codes.rb index c208065..4b9ba1c 100644 --- a/lib/seam/clients/access_codes.rb +++ b/lib/seam/clients/access_codes.rb @@ -3,9 +3,7 @@ module Seam module Clients class AccessCodes < BaseClient - def get(access_code_or_id) - access_code_id = access_code_or_id.is_a?(Seam::AccessCode) ? access_code_or_id.access_code_id : access_code_or_id - + def get(access_code_id) request_seam_object( :get, "/access_codes/get", @@ -71,9 +69,7 @@ def update(access_code_id: nil, name: nil, code: nil, starts_at: nil, ends_at: n action_attempt end - def pull_backup_access_code(access_code_or_id) - access_code_id = access_code_or_id.is_a?(Seam::AccessCode) ? access_code_or_id.access_code_id : access_code_or_id - + def pull_backup_access_code(access_code_id) request_seam_object( :post, "/access_codes/pull_backup_access_code",