2019-04-30 08:27:42 +08:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2022-07-28 10:27:38 +08:00
|
|
|
RSpec.describe UnsubscribeKey do
|
2016-06-17 09:27:52 +08:00
|
|
|
describe "post unsubscribe key" do
|
|
|
|
it "can generate a correct url" do
|
|
|
|
post = Fabricate(:post)
|
|
|
|
url = post.unsubscribe_url(post.user)
|
|
|
|
|
|
|
|
route = Rails.application.routes.recognize_path(url)
|
|
|
|
|
|
|
|
key = UnsubscribeKey.find_by(key: route[:key])
|
|
|
|
|
|
|
|
expect(key.post_id).to eq(post.id)
|
|
|
|
expect(key.topic_id).to eq(post.topic_id)
|
|
|
|
expect(key.unsubscribe_key_type).to eq("topic")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "key" do
|
2019-05-07 11:12:20 +08:00
|
|
|
fab!(:user) { Fabricate(:user) }
|
2022-06-22 02:49:47 +08:00
|
|
|
let!(:key) { UnsubscribeKey.create_key_for(user, UnsubscribeKey::DIGEST_TYPE) }
|
2016-06-17 09:27:52 +08:00
|
|
|
|
|
|
|
it "has a temporary key" do
|
|
|
|
expect(key).to be_present
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "#user_for_key" do
|
|
|
|
it "can be used to find the user" do
|
|
|
|
expect(UnsubscribeKey.user_for_key(key)).to eq(user)
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns nil with an invalid key" do
|
|
|
|
expect(UnsubscribeKey.user_for_key("asdfasdf")).to be_blank
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|