43 lines
1.2 KiB
Crystal
43 lines
1.2 KiB
Crystal
# ===================
|
|
# ©AngelaMos | 2026
|
|
# engine_spec.cr
|
|
# ===================
|
|
|
|
require "../../spec_helper"
|
|
require "../../../src/cre/engine/engine"
|
|
require "../../../src/cre/persistence/sqlite/sqlite_persistence"
|
|
require "../../../src/cre/events/credential_events"
|
|
|
|
describe CRE::Engine::Engine do
|
|
it "boots, accepts events, and shuts down cleanly" do
|
|
persist = CRE::Persistence::Sqlite::SqlitePersistence.new(":memory:")
|
|
persist.migrate!
|
|
|
|
engine = CRE::Engine::Engine.new(persist, Bytes.new(32, 0_u8))
|
|
engine.start
|
|
|
|
cred_id = UUID.random
|
|
rot_id = UUID.random
|
|
engine.bus.publish(CRE::Events::RotationCompleted.new(cred_id, rot_id))
|
|
sleep 0.1.seconds
|
|
|
|
persist.audit.latest_seq.should eq 1_i64
|
|
engine.audit_log.verify_chain.should be_true
|
|
|
|
engine.stop
|
|
ensure
|
|
persist.try(&.close)
|
|
end
|
|
|
|
it "raises if started twice" do
|
|
persist = CRE::Persistence::Sqlite::SqlitePersistence.new(":memory:")
|
|
persist.migrate!
|
|
engine = CRE::Engine::Engine.new(persist, Bytes.new(32, 0_u8))
|
|
engine.start
|
|
expect_raises(Exception, "already started") { engine.start }
|
|
engine.stop
|
|
ensure
|
|
persist.try(&.close)
|
|
end
|
|
end
|