18F/identity-idp

View on GitHub
app/services/event_disavowal/find_disavowed_event.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
# frozen_string_literal: true

module EventDisavowal
  class FindDisavowedEvent
    attr_reader :disavowal_token

    def initialize(disavowal_token)
      @disavowal_token = disavowal_token
    end

    def call
      event
    end

    private

    def event
      return @event if defined?(@event)
      @event = Event.find_by(disavowal_token_fingerprint: disavowal_token_fingerprints)
    end

    def disavowal_token_fingerprints
      old_keys = IdentityConfig.store.hmac_fingerprinter_key_queue
      previous_key_fingerprints = old_keys.map do |key|
        Pii::Fingerprinter.fingerprint(disavowal_token, key)
      end
      [Pii::Fingerprinter.fingerprint(disavowal_token)] + previous_key_fingerprints
    end
  end
end