diff --git a/app/models/purl.rb b/app/models/purl.rb index 0c78f210..c9a64fe8 100644 --- a/app/models/purl.rb +++ b/app/models/purl.rb @@ -11,19 +11,7 @@ def self.instance end class << self - delegate :public_xml, :public_json, :files, to: :instance - end - - # TODO: was etag a valid key? - def public_xml(druid) - Rails.cache.fetch("purl/#{druid}/public_xml", expires_in: 10.minutes) do - benchmark "Fetching public xml for #{druid}" do - response = Faraday.get(public_xml_url(druid)) - raise Purl::Exception, response.status unless response.success? - - response.body - end - end + delegate :public_json, :files, to: :instance end def public_json(druid) @@ -56,10 +44,6 @@ def files_from_json(druid) private - def public_xml_url(druid) - Settings.purl.url + "#{druid}.xml" - end - def public_json_url(druid) "#{Settings.purl.url}#{druid}.json" end diff --git a/spec/controllers/object_controller_spec.rb b/spec/controllers/object_controller_spec.rb index 2948d766..fff45b96 100644 --- a/spec/controllers/object_controller_spec.rb +++ b/spec/controllers/object_controller_spec.rb @@ -15,9 +15,6 @@ let(:druid) { 'foo' } it 'returns a 404 Not Found' do - allow(Faraday).to receive(:get).with('https://purl.stanford.edu/foo.xml').and_return( - instance_double(Faraday::Response, status: 404, success?: false) - ) allow(Faraday).to receive(:get).with('https://purl.stanford.edu/foo.json').and_return( instance_double(Faraday::Response, status: 404, success?: false) ) @@ -27,42 +24,6 @@ end context "with downloadable files" do - let(:xml) do - <<-EOXML - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - EOXML - end let(:json) do { 'structural' => { @@ -127,8 +88,6 @@ end before do - allow(Faraday).to receive(:get).with('https://purl.stanford.edu/fd063dh3727.xml') - .and_return(instance_double(Faraday::Response, success?: true, body: xml)) allow(Faraday).to receive(:get).with('https://purl.stanford.edu/fd063dh3727.json') .and_return(instance_double(Faraday::Response, success?: true, body: json)) end @@ -141,44 +100,6 @@ end context "with a stanford access file" do - let(:xml) do - <<-EOXML - - - - - - - - - - - - - - - - - - - - - - - stanford - - - - bb142ws0723_program.pdf - - - - - - - EOXML - end - let(:json) do { 'structural' => { @@ -222,8 +143,6 @@ end before do - allow(Faraday).to receive(:get).with('https://purl.stanford.edu/bb142ws0723.xml') - .and_return(instance_double(Faraday::Response, success?: true, body: xml)) allow(Faraday).to receive(:get).with('https://purl.stanford.edu/bb142ws0723.json') .and_return(instance_double(Faraday::Response, success?: true, body: json)) end @@ -244,43 +163,6 @@ end context "with a stanford access file" do - let(:xml) do - <<-EOXML - - - - - - - - - - - - - - - - - - - - - - - stanford - - - - bb142ws0723_program.pdf - - - - - - - EOXML - end let(:json) do { 'structural' => { @@ -324,8 +206,6 @@ end before do - allow(Faraday).to receive(:get).with('https://purl.stanford.edu/bb142ws0723.xml') - .and_return(instance_double(Faraday::Response, success?: true, body: xml)) allow(Faraday).to receive(:get).with('https://purl.stanford.edu/bb142ws0723.json') .and_return(instance_double(Faraday::Response, success?: true, body: json)) end diff --git a/spec/models/purl_spec.rb b/spec/models/purl_spec.rb index 938f7d36..de913616 100644 --- a/spec/models/purl_spec.rb +++ b/spec/models/purl_spec.rb @@ -7,40 +7,7 @@ Rails.cache.clear end - describe '.public_xml' do - it 'fetches the public xml' do - allow(Faraday).to receive(:get).with('https://purl.stanford.edu/abc.xml').and_return( - double(body: '', success?: true) - ) - - described_class.public_xml('abc') - - expect(Faraday).to have_received(:get).with('https://purl.stanford.edu/abc.xml') - end - end - describe '.files' do - let(:xml) do - <<-EOXML - - - - - - - - - - - - - - - - - EOXML - end - let(:json) do { 'structural' => { @@ -77,8 +44,6 @@ end before do - allow(Faraday).to receive(:get).with('https://purl.stanford.edu/abc.xml') - .and_return(double(success?: true, body: xml)) allow(Faraday).to receive(:get).with('https://purl.stanford.edu/abc.json') .and_return(double(success?: true, body: json)) end diff --git a/spec/requests/file_auth_request_spec.rb b/spec/requests/file_auth_request_spec.rb index 88cb55ec..53992b68 100644 --- a/spec/requests/file_auth_request_spec.rb +++ b/spec/requests/file_auth_request_spec.rb @@ -21,46 +21,6 @@ end describe "#show" do - let(:group_rights) do - <<-EOF - - - - - Stanford - - - - - EOF - end - let(:location_rights) do - <<-EOF - - - - - location1 - - - - - EOF - end - let(:location_other_rights) do - <<-EOF - - - - - location-other - - - - - EOF - end - # NOTE: stanford only + location rights tested under location context context 'stanford only (no location qualifications)' do let(:public_json) do @@ -88,21 +48,18 @@ context 'webauthed user' do it 'allows when user webauthed and authorized' do allow_any_instance_of(FileController).to receive(:current_user).and_return(user_webauth_stanford_no_loc) - allow(Purl).to receive(:public_xml).and_return(group_rights) expect_any_instance_of(FileController).to receive(:send_file).with(sf.path, disposition: :inline).and_call_original get "/file/#{druid}/#{file_name}" end it 'blocks when user webauthed but NOT authorized' do allow_any_instance_of(FileController).to receive(:current_user).and_return(user_webauth_no_stanford_no_loc) - allow(Purl).to receive(:public_xml).and_return(group_rights) get "/file/#{druid}/#{file_name}" expect(response).to have_http_status(:forbidden) end end it "prompts for webauth when user not webauthed" do allow_any_instance_of(FileController).to receive(:current_user).and_return(user_no_loc_no_webauth) - allow(Purl).to receive(:public_xml).and_return(group_rights) get "/file/#{druid}/#{file_name}" expect(response).to redirect_to(auth_file_url(id: druid, file_name:)) end @@ -134,14 +91,12 @@ it 'allows when user in location' do allow_any_instance_of(FileController).to receive(:current_user).and_return(user_loc_no_webauth) - allow(Purl).to receive(:public_xml).and_return(location_rights) expect_any_instance_of(FileController).to receive(:send_file).with(sf.path, disposition: :inline).and_call_original get "/file/#{druid}/#{file_name}" end it 'blocks when user not in location' do allow_any_instance_of(FileController).to receive(:current_user).and_return(user_no_loc_no_webauth) - allow(Purl).to receive(:public_xml).and_return(location_other_rights) get "/file/#{druid}/#{file_name}" expect(response).to have_http_status(:forbidden) end diff --git a/spec/requests/file_spec.rb b/spec/requests/file_spec.rb index d4c665a2..ff17b8ee 100644 --- a/spec/requests/file_spec.rb +++ b/spec/requests/file_spec.rb @@ -4,7 +4,7 @@ RSpec.describe "File requests" do before do - allow(Purl).to receive_messages(public_xml: '', public_json:) + allow(Purl).to receive_messages(public_json:) end let(:druid) { 'nr349ct7889' } @@ -43,19 +43,6 @@ describe 'GET file with slashes in filename' do let(:file_name) { 'path/to/image.jp2' } let(:stacks_file) { StacksFile.new(id: druid, file_name:) } - let(:world_rights) do - <<-EOF - - - - - - - - - - EOF - end let(:public_json) do { 'structural' => { @@ -82,7 +69,6 @@ allow(StacksFile).to receive(:new).and_return(stacks_file) allow(stacks_file).to receive(:path) allow_any_instance_of(FileController).to receive(:send_file).with(stacks_file.path, disposition: :inline) - allow(Purl).to receive(:public_xml).and_return(world_rights) end it 'returns a successful HTTP response' do diff --git a/spec/requests/iiif/auth/v2/probe_service_spec.rb b/spec/requests/iiif/auth/v2/probe_service_spec.rb index 718753b7..e2cb0307 100644 --- a/spec/requests/iiif/auth/v2/probe_service_spec.rb +++ b/spec/requests/iiif/auth/v2/probe_service_spec.rb @@ -303,17 +303,6 @@ } } end - let(:rights_xml) do - <<~EOF - - - - #{xml_location} - - - - EOF - end before do get "/iiif/auth/v2/probe?id=#{stacks_uri_param}" @@ -321,7 +310,6 @@ context 'when special collections' do let(:location) { 'spec' } - let(:xml_location) { 'spec' } it 'returns a not authorized response' do expect(response).to have_http_status :ok @@ -339,7 +327,6 @@ context 'when media & microtext' do let(:location) { 'm&m' } - let(:xml_location) { 'm&m' } it 'returns a not authorized response' do expect(response).to have_http_status :ok @@ -383,18 +370,6 @@ } } end - let(:rights_xml) do - <<~EOF - - - - 2099-05-15 - stanford - - - - EOF - end before do get "/iiif/auth/v2/probe?id=#{stacks_uri_param}" @@ -442,17 +417,6 @@ } } end - let(:rights_xml) do - <<~EOF - - - - 2099-05-15 - - - - EOF - end before do get "/iiif/auth/v2/probe?id=#{stacks_uri_param}" diff --git a/spec/requests/iiif_spec.rb b/spec/requests/iiif_spec.rb index 7f435381..15b05133 100644 --- a/spec/requests/iiif_spec.rb +++ b/spec/requests/iiif_spec.rb @@ -197,7 +197,7 @@ end end - context 'rights xml where no one can download' do + context 'where no one can download' do let(:public_json) do { 'structural' => { @@ -233,7 +233,7 @@ end end - context 'rights xml where stanford only no download' do + context 'where stanford only no download rights' do let(:public_json) do { 'structural' => { diff --git a/spec/requests/media_auth_request_spec.rb b/spec/requests/media_auth_request_spec.rb index cbb74c43..f3399f01 100644 --- a/spec/requests/media_auth_request_spec.rb +++ b/spec/requests/media_auth_request_spec.rb @@ -4,27 +4,7 @@ RSpec.describe "Authentication for Media requests" do let(:druid) { 'bb582xs1304' } - let(:format) { 'mp4' } - let(:public_xml) do - <<-XML - - #{rights_xml} - - XML - end - - let(:rights_xml) do - <<~EOF - - - - Stanford - - - - EOF - end let(:public_json) do { @@ -49,9 +29,7 @@ end let(:mock_media) do - sms = StacksMediaStream.new(id: 'bb582xs1304', file_name: 'file') - allow(Purl).to receive(:public_xml).with('bb582xs1304').and_return(public_xml) - sms + StacksMediaStream.new(id: 'bb582xs1304', file_name: 'file') end before do @@ -86,17 +64,6 @@ end context 'location restricted' do - let(:rights_xml) do - <<~EOF - - - - spec - - - - EOF - end let(:public_json) do { 'structural' => { @@ -131,19 +98,6 @@ end context 'when the file is embargoed or stanford restricted' do - let(:rights_xml) do - <<~EOF - - - - 2099-05-15 - stanford - - - - EOF - end - let(:public_json) do { 'access' => { @@ -182,17 +136,6 @@ end context 'when the file is embargoed' do - let(:rights_xml) do - <<~EOF - - - - 2099-05-15 - - - - EOF - end let(:public_json) do { 'access' => {