diff --git a/Gemfile b/Gemfile index 02fc71637..cfd4d3942 100644 --- a/Gemfile +++ b/Gemfile @@ -86,6 +86,7 @@ group :test do gem "capybara", "~> 3.39.2" gem "capybara-webmock", "~> 0.7.0" gem "email_spec", "~> 2.2.2" + gem "pdf-reader" gem "rspec-rails", "~> 5.1.2" gem "selenium-webdriver", "~> 4.13.1" gem "simplecov", "~> 0.22.0", require: false diff --git a/Gemfile.lock b/Gemfile.lock index f8d8a642e..337d7f88e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -6,6 +6,7 @@ GEM GEM remote: https://rubygems.org/ specs: + Ascii85 (1.1.0) actioncable (6.1.7.6) actionpack (= 6.1.7.6) activesupport (= 6.1.7.6) @@ -70,6 +71,7 @@ GEM acts_as_votable (0.14.0) addressable (2.8.5) public_suffix (>= 2.0.2, < 6.0) + afm (0.2.2) ahoy_matey (4.2.1) activesupport (>= 5.2) device_detector @@ -259,6 +261,7 @@ GEM gyoku (1.4.0) builder (>= 2.1.2) rexml (~> 3.0) + hashery (2.1.2) hashie (5.0.0) highline (2.0.3) htmlentities (4.3.4) @@ -412,6 +415,12 @@ GEM parser (3.2.2.3) ast (~> 2.4.1) racc + pdf-reader (2.11.0) + Ascii85 (~> 1.0) + afm (~> 0.2.1) + hashery (~> 2.0) + ruby-rc4 + ttfunk pg (1.4.3) pg_search (2.3.6) activerecord (>= 5.2) @@ -549,6 +558,7 @@ GEM rubocop-capybara (~> 2.17) rubocop-factory_bot (~> 2.22) ruby-progressbar (1.13.0) + ruby-rc4 (0.1.5) ruby-vips (2.1.4) ffi (~> 1.12) ruby2_keywords (0.0.5) @@ -630,6 +640,7 @@ GEM tilt (2.0.10) timeout (0.4.1) tomlrb (2.0.3) + ttfunk (1.7.0) turbolinks (5.2.1) turbolinks-source (~> 5.2) turbolinks-source (5.2.0) @@ -739,6 +750,7 @@ DEPENDENCIES omniauth-rails_csrf_protection (~> 1.0.1) omniauth-twitter (~> 1.4.0) paranoia (~> 2.6.2) + pdf-reader pg (~> 1.4.3) pg_search (~> 2.3.6) pronto (~> 0.11.1) diff --git a/spec/fixtures/files/logo_with_metadata.pdf b/spec/fixtures/files/logo_with_metadata.pdf new file mode 100644 index 000000000..ec1a1c489 Binary files /dev/null and b/spec/fixtures/files/logo_with_metadata.pdf differ diff --git a/spec/system/documents_spec.rb b/spec/system/documents_spec.rb new file mode 100644 index 000000000..d9815be69 --- /dev/null +++ b/spec/system/documents_spec.rb @@ -0,0 +1,27 @@ +require "rails_helper" + +describe "Documents" do + describe "Metadata" do + scenario "download document without metadata" do + login_as(create(:user)) + visit new_proposal_path + + fill_in "Proposal title", with: "debate" + fill_in "Proposal summary", with: "In summary, what we want is..." + fill_in "Full name of the person submitting the proposal", with: "Isabel Garcia" + documentable_attach_new_file(file_fixture("logo_with_metadata.pdf")) + check "I agree to the Privacy Policy and the Terms and conditions of use" + + click_button "Create proposal" + + io = URI.parse("#{app_host}#{polymorphic_path(Document.last.attachment)}").open + reader = PDF::Reader.new(io) + + expect(reader.info[:Keywords]).not_to eq "Test Metadata" + expect(reader.info[:Author]).not_to eq "Test Developer" + expect(reader.info[:Title]).not_to eq "logo_with_metadata.pdf" + expect(reader.info[:Producer]).not_to eq "Test Producer" + expect(reader.info).to eq({}) + end + end +end