diff --git a/app/models/claim.rb b/app/models/claim.rb index 2a93401d..d6081637 100644 --- a/app/models/claim.rb +++ b/app/models/claim.rb @@ -260,6 +260,9 @@ def collect_data(options = {}) # missing data raise errors # return OpenStruct.new(body: { "errors" => [{ "title" => "Missing data" }] }) if work.data.nil? + # orcid_token has expired + return OpenStruct.new(body: { "errors" => [{ "status" => 401, "title" => "token has expired." }] }) if user.orcid_expires_at < Date.today + # validate data return OpenStruct.new(body: { "errors" => work.validation_errors.map { |error| { "title" => error } } }) if work.validation_errors.present? diff --git a/spec/models/claim_spec.rb b/spec/models/claim_spec.rb index 2732ceee..28e50d2a 100644 --- a/spec/models/claim_spec.rb +++ b/spec/models/claim_spec.rb @@ -58,6 +58,13 @@ expect(response.body).to eq("reason" => "No user and/or ORCID token", "skip" => true) end + it "expired token" do + user = FactoryBot.create(:valid_user, orcid_expires_at: Time.zone.now - 7.days) + subject = FactoryBot.create(:claim, user: user, orcid: "0000-0001-6528-2027", doi: "10.14454/v6e2-yc93", source_id: "orcid_update") + response = subject.collect_data + expect(response.body).to eq("errors"=>[{"status"=>401, "title"=>"token has expired."}]) + end + # TODO # it "invalid token" do # user = FactoryBot.create(:invalid_user, orcid_token: "123")