mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-14 03:01:39 -05:00
* Address number of photos related issues * Fix minor stuff * Update integrations page layout
165 lines
4 KiB
Ruby
165 lines
4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'rails_helper'
|
|
|
|
RSpec.describe Immich::ResponseAnalyzer do
|
|
subject(:analyzer) { described_class.new(response) }
|
|
|
|
describe '#permission_error?' do
|
|
context 'with 403 response containing asset.view permission error' do
|
|
let(:response) do
|
|
instance_double(
|
|
HTTParty::Response,
|
|
code: 403,
|
|
body: { 'message' => 'Missing permission: asset.view' }.to_json
|
|
)
|
|
end
|
|
|
|
it 'returns true' do
|
|
expect(analyzer.permission_error?).to be true
|
|
end
|
|
end
|
|
|
|
context 'with 403 response containing different permission error' do
|
|
let(:response) do
|
|
instance_double(
|
|
HTTParty::Response,
|
|
code: 403,
|
|
body: { 'message' => 'Missing permission: album.read' }.to_json
|
|
)
|
|
end
|
|
|
|
it 'returns false' do
|
|
expect(analyzer.permission_error?).to be false
|
|
end
|
|
end
|
|
|
|
context 'with 403 response but no asset.view in message' do
|
|
let(:response) do
|
|
instance_double(
|
|
HTTParty::Response,
|
|
code: 403,
|
|
body: { 'message' => 'Forbidden' }.to_json
|
|
)
|
|
end
|
|
|
|
it 'returns false' do
|
|
expect(analyzer.permission_error?).to be false
|
|
end
|
|
end
|
|
|
|
context 'with 403 response but malformed JSON' do
|
|
let(:response) do
|
|
instance_double(
|
|
HTTParty::Response,
|
|
code: 403,
|
|
body: 'invalid json'
|
|
)
|
|
end
|
|
|
|
it 'returns false' do
|
|
expect(analyzer.permission_error?).to be false
|
|
end
|
|
end
|
|
|
|
context 'with 403 response but no message field' do
|
|
let(:response) do
|
|
instance_double(
|
|
HTTParty::Response,
|
|
code: 403,
|
|
body: { 'error' => 'Forbidden' }.to_json
|
|
)
|
|
end
|
|
|
|
it 'returns false' do
|
|
expect(analyzer.permission_error?).to be false
|
|
end
|
|
end
|
|
|
|
context 'with non-403 response' do
|
|
let(:response) do
|
|
instance_double(
|
|
HTTParty::Response,
|
|
code: 401,
|
|
body: { 'message' => 'Unauthorized' }.to_json
|
|
)
|
|
end
|
|
|
|
it 'returns false' do
|
|
expect(analyzer.permission_error?).to be false
|
|
end
|
|
end
|
|
|
|
context 'with 200 success response' do
|
|
let(:response) do
|
|
instance_double(
|
|
HTTParty::Response,
|
|
code: 200,
|
|
body: { 'data' => 'some data' }.to_json
|
|
)
|
|
end
|
|
|
|
it 'returns false' do
|
|
expect(analyzer.permission_error?).to be false
|
|
end
|
|
end
|
|
|
|
context 'with string code instead of integer' do
|
|
let(:response) do
|
|
instance_double(
|
|
HTTParty::Response,
|
|
code: '403',
|
|
body: { 'message' => 'Missing permission: asset.view' }.to_json
|
|
)
|
|
end
|
|
|
|
it 'returns true' do
|
|
expect(analyzer.permission_error?).to be true
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#error_message' do
|
|
context 'when permission_error? is true' do
|
|
let(:response) do
|
|
instance_double(
|
|
HTTParty::Response,
|
|
code: 403,
|
|
body: { 'message' => 'Missing permission: asset.view' }.to_json
|
|
)
|
|
end
|
|
|
|
it 'returns specific permission error message' do
|
|
expect(analyzer.error_message).to eq('Immich API key missing permission: asset.view')
|
|
end
|
|
end
|
|
|
|
context 'when permission_error? is false' do
|
|
let(:response) do
|
|
instance_double(
|
|
HTTParty::Response,
|
|
code: 401,
|
|
body: { 'message' => 'Unauthorized' }.to_json
|
|
)
|
|
end
|
|
|
|
it 'returns generic error message' do
|
|
expect(analyzer.error_message).to eq('Failed to fetch thumbnail')
|
|
end
|
|
end
|
|
|
|
context 'with 500 error' do
|
|
let(:response) do
|
|
instance_double(
|
|
HTTParty::Response,
|
|
code: 500,
|
|
body: { 'error' => 'Internal Server Error' }.to_json
|
|
)
|
|
end
|
|
|
|
it 'returns generic error message' do
|
|
expect(analyzer.error_message).to eq('Failed to fetch thumbnail')
|
|
end
|
|
end
|
|
end
|
|
end
|