Files
openfoodnetwork/spec/services/vine/jwt_service_spec.rb
Gaetan Craig-Riou 0569b30e0d Refactor Vine related services
Move them under Vine module to keep the code nicely organised
2024-11-28 13:35:01 +01:00

53 lines
1.2 KiB
Ruby

# frozen_string_literal: true
require "spec_helper"
RSpec.describe Vine::JwtService do
describe "#generate_token" do
subject { described_class.new(secret: vine_secret) }
let(:vine_secret) { "some_secret" }
it "generate a jwt token" do
expect(subject.generate_token).to be_a String
end
it "includes issuing body" do
token = subject.generate_token
payload = decode(token, vine_secret)
expect(payload["iss"]).to eq("openfoodnetwork")
end
it "includes issuing time" do
generate_time = Time.zone.now
Timecop.freeze(generate_time) do
token = subject.generate_token
payload = decode(token, vine_secret)
expect(payload["iat"].to_i).to eq(generate_time.to_i)
end
end
it "includes expirations time" do
generate_time = Time.zone.now
Timecop.freeze(generate_time) do
token = subject.generate_token
payload = decode(token, vine_secret)
expect(payload["exp"].to_i).to eq((generate_time + 1.minute).to_i)
end
end
end
def decode(token, secret)
JWT.decode(
token,
secret,
true, { algorithm: "HS256" }
).first
end
end