diff --git a/lib/castle/core/send_request.rb b/lib/castle/core/send_request.rb index b418ac9..9e1b9f0 100644 --- a/lib/castle/core/send_request.rb +++ b/lib/castle/core/send_request.rb @@ -27,9 +27,7 @@ def build(command, headers, config) url = "#{config.base_url.path}/#{command.path}" request_obj = Net::HTTP.const_get(command.method.to_s.capitalize).new(url, headers) - unless command.method == :get - request_obj.body = ::Castle::Utils::CleanInvalidChars.call(command.data).to_json - end + request_obj.body = ::Castle::Utils::CleanInvalidChars.call(command.data || {}).to_json Castle::Logger.call("#{url}:", request_obj.body, config) diff --git a/spec/lib/castle/core/send_request_spec.rb b/spec/lib/castle/core/send_request_spec.rb index 7568891..8140e6c 100644 --- a/spec/lib/castle/core/send_request_spec.rb +++ b/spec/lib/castle/core/send_request_spec.rb @@ -73,5 +73,29 @@ it { expect(build.to_hash).to have_key('sample-header') } it { expect(build.to_hash['sample-header']).to eql(['1']) } end + + context 'when get' do + let(:time) { Time.now.utc.iso8601(3) } + let(:command) { Castle::Commands::GetDevice.build(device_token: '1') } + let(:expected_body) { {} } + + before { allow(Castle::Utils::GetTimestamp).to receive(:call).and_return(time) } + + it { expect(build.body).to be_eql(expected_body.to_json) } + it { expect(build.method).to eql('GET') } + it { expect(build.path).to eql("/v1/#{command.path}") } + end + + context 'when put' do + let(:time) { Time.now.utc.iso8601(3) } + let(:command) { Castle::Commands::ApproveDevice.build(device_token: '1') } + let(:expected_body) { {} } + + before { allow(Castle::Utils::GetTimestamp).to receive(:call).and_return(time) } + + it { expect(build.body).to be_eql(expected_body.to_json) } + it { expect(build.method).to eql('PUT') } + it { expect(build.path).to eql("/v1/#{command.path}") } + end end end