Skip to content

Commit

Permalink
test: add test for dkim header generation
Browse files Browse the repository at this point in the history
  • Loading branch information
adamcooke committed Jul 22, 2021
1 parent 3352642 commit e2409a6
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 0 deletions.
37 changes: 37 additions & 0 deletions spec/examples/dkim_signing/email.msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
domain: adamtest.viaduct.io
time: 1626973299
dkim_identifier: postal-hg3YOm
private_key: |
-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQDVebmUOjOp4WhVFdwXiHE0sIN0/pxG1lXka8b7wCcKXo7c0Bcp
2t77AUP3Lr3HOdY1OKYU8UzbLR5dahvwoodEo2QgFB6wxP9FF/koip+YdmWSscZI
9xMZBPcJYfMa3MtC2JC0aDHaKRTSlehg9/T77dJEL11pePdKJtyWZsxNlwIDAQAB
AoGAYBdWzb4VG1b3W7VnSMCGFK2Pvs4NEmXQa+2HuDKaYDSIIiUZCCIZVOsQ6OcF
TfRe074YJD0p107L6EinIv5F3HEp6pMT3gzo057mPabskohUXbDXcX3kq+0EDMYx
1HmlyRvWb6CI79hZrJavF5vOPZxSnM123Y7L0wc1WEKPxSECQQDq3iH/JNPmwDBS
DeY6KR6+q7hKGmvcfWfiPQh+PYaekE6635+au3qE8sp+xwiQDbsq9ywwj8J/8Lzt
FnvSi+/DAkEA6K7Zw8OHZpq3QwEfazTSm2A+iciD88ISl4g+71Cu6AVnaip5KdxI
yiEWE3z/3Y99NPyL1AGouohBCqHD3qOBnQJAWumRD0oaG//YtGpc67ZvCC9ALq77
gWWpiJFHcFYwfcAuOXfGOAbJ7hxs9ZXlYp1uDbuPh1yeVRfCiaNiWqWAMQJAJnuc
qoLxJugZvSw3XQy8dFQjo7gVEsCbQJKZDg2DD/6szuM9bM3w//Ue6JQ44RT1OUk3
exXXKRqV30NH2M+kBQJAJmVIeroVONXhsw/O18dtM4zSbr4glPKBHz73MVO3WK5v
ZM1TKedFNOujh8cEyYsoQRaIbGvTcnSMQfMYw7Inhw==
-----END RSA PRIVATE KEY-----
headers: date:from:to:message-id:subject:mime-version:content-type:content-transfer-encoding
bh: mvuu3b9qEfdaZCSaVxLvRSqKbMB5YN4qxRCRw5FtvuE=
b: UZgYjsed5ngc9+U/80FMsHIWLTaxj/OBc5r1l9sKbOIz0rmdRnp+X/YCFq16/AY8PWsrJh+/FgIs/zR9hWn+F2iz7dSfvnTE70zKy1q+JIyNh5cw1HegnIgZqG5S6IdliiwaiCFlxMbya790z//jUh5pJdOcm2QuA+fDOGdfU3k=
---
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adamtest.viaduct.io; s=postal-hg3YOm; t=1626973299; bh=mvuu3b9qEfdaZCSaVxLvRSqKbMB5YN4qxRCRw5FtvuE=; h=date:from:to:message-id:subject:mime-version:content-type:content-transfer-encoding; b=UZgYjsed5ngc9+U/80FMsHIWLTaxj/OBc5r1l9sKbOIz0rmdRnp+X/YCFq16/AY8PWsrJh+/FgIs/zR9hWn+F2iz7dSfvnTE70zKy1q+JIyNh5cw1HegnIgZqG5S6IdliiwaiCFlxMbya790z//jUh5pJdOcm2QuA+fDOGdfU3k=
X-Postal-MsgID: mPVbUwFRWZcU
Received: from web-ui (10.210.10.54 [10.210.10.54]) by Postal with HTTP; Thu, 22 Jul 2021 17:01:39 +0000
Date: Thu, 22 Jul 2021 18:01:39 +0100
From: [email protected]
To: [email protected]
Message-ID: <[email protected]>
Subject: Test Message at July 22, 2021 13:01
Mime-Version: 1.0
Content-Type: text/plain;
charset=UTF-8
Content-Transfer-Encoding: 7bit

This is a message to test the delivery of messages through Postal.
35 changes: 35 additions & 0 deletions spec/lib/postal/dkim_header_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# frozen_string_literal: true

require 'rails_helper'

describe Postal::DKIMHeader do

examples = Rails.root.join('spec/examples/dkim_signing/*.msg')
Dir[examples].each do |path|
contents = File.read(path)
frontmatter, email = contents.split(/^---\n/m, 2)
frontmatter = YAML.load(frontmatter)
email.strip
it "works with #{path.split('/').first}" do
mocked_time = Time.at(frontmatter['time'].to_i)
allow(Time).to receive(:now).and_return(mocked_time)

domain = instance_double('Domain')
allow(domain).to receive(:dkim_status).and_return('OK')
allow(domain).to receive(:name).and_return(frontmatter['domain'])
allow(domain).to receive(:dkim_key).and_return(OpenSSL::PKey::RSA.new(frontmatter['private_key']))
allow(domain).to receive(:dkim_identifier).and_return(frontmatter['dkim_identifier'])

expectation = "DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; " \
"d=#{frontmatter['domain']}; s=#{frontmatter['dkim_identifier']}; t=#{mocked_time.to_i}; " \
"bh=#{frontmatter['bh']}; "\
"h=#{frontmatter['headers']}; " \
"b=#{frontmatter['b']}"

header = described_class.new(domain, email)

expect(header.dkim_header).to eq expectation
end
end

end

0 comments on commit e2409a6

Please sign in to comment.