Sha256: 36b68024004ccef9be62b87921dd84cd9818ea558ebf7eb1b0b3e899688c0a7f

Contents?: true

Size: 1.46 KB

Versions: 5

Compression:

Stored size: 1.46 KB

Contents

require "spec_helper"
require "json/jwt"

RSpec.describe CanvasSync::Api::V1::LiveEventsController, type: :controller do
  routes { CanvasSync::Engine.routes }

  let(:event) {
    {
      "metadata" => {
        event_name: "user_created",
      },
      "payload" => {
        user_id: 42660000000000001,
      },
    }.with_indifferent_access
  }

  describe "#transform_ids!" do
    it "transforms sharded IDs to local IDs" do
      controller.send(:transform_ids!, event)
      expect(event[:payload][:user_id]).to eql 1
      expect(event[:payload][:sharded_user_id]).to eql 42660000000000001
    end

    xit "it does not transform cross-shard IDs" do
      # TODO
    end
  end

  describe "#process_dataservices_event" do
    let(:private_key) { OpenSSL::PKey::RSA.new(2048) }
    let(:jwk) { JSON::JWK.new(private_key) }
    let(:jwks) { JSON::JWK::Set.new([jwk]) }

    before :each do
      allow(controller).to receive(:dataservices_jwks).and_return(jwks)
    end

    let(:event_data) { event.to_json }

    it "triggers a background job" do
      expect(controller).to receive(:dispatch_event)
      expect(controller).to receive(:validate_tenant!)
      post :process_event, body: JSON::JWT.new(event).sign(jwk).to_s
      expect(response).to be_successful
    end

    it "does not allow unsigned events" do
      expect(controller).to_not receive(:validate_tenant!)
      post :process_event, body: event.to_json
      expect(response).to_not be_successful
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
canvas_sync-0.21.0.beta5 spec/canvas_sync/live_events/live_events_controller_spec.rb
canvas_sync-0.21.0.beta4 spec/canvas_sync/live_events/live_events_controller_spec.rb
canvas_sync-0.21.0.beta3 spec/canvas_sync/live_events/live_events_controller_spec.rb
canvas_sync-0.21.0.beta2 spec/canvas_sync/live_events/live_events_controller_spec.rb
canvas_sync-0.21.0.beta1 spec/canvas_sync/live_events/live_events_controller_spec.rb