2019-04-30 08:27:42 +08:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2016-10-14 13:05:27 +08:00
|
|
|
require 'rails_helper'
|
|
|
|
|
|
|
|
describe UserApiKey do
|
|
|
|
context "#allow?" do
|
|
|
|
it "can look up permissions correctly" do
|
|
|
|
key = UserApiKey.new(scopes: ['message_bus', 'notifications'])
|
|
|
|
|
|
|
|
expect(key.allow?("PATH_INFO" => "/random", "REQUEST_METHOD" => "GET")).to eq(false)
|
|
|
|
expect(key.allow?("PATH_INFO" => "/message-bus/1234/poll", "REQUEST_METHOD" => "POST")).to eq(true)
|
|
|
|
|
|
|
|
expect(key.allow?("action_dispatch.request.path_parameters" => { controller: "notifications", action: "mark_read" },
|
|
|
|
"PATH_INFO" => "/xyz", "REQUEST_METHOD" => "PUT")).to eq(true)
|
|
|
|
|
|
|
|
expect(key.allow?("action_dispatch.request.path_parameters" => { controller: "user_api_keys", action: "revoke" },
|
|
|
|
"PATH_INFO" => "/xyz", "REQUEST_METHOD" => "POST")).to eq(true)
|
|
|
|
|
|
|
|
end
|
|
|
|
|
2019-02-13 12:49:25 +08:00
|
|
|
it "can allow all correct scopes to write" do
|
|
|
|
|
|
|
|
key = UserApiKey.new(scopes: ["write"])
|
|
|
|
|
|
|
|
expect(key.allow?("PATH_INFO" => "/random", "REQUEST_METHOD" => "GET")).to eq(true)
|
|
|
|
expect(key.allow?("PATH_INFO" => "/random", "REQUEST_METHOD" => "PUT")).to eq(true)
|
|
|
|
expect(key.allow?("PATH_INFO" => "/random", "REQUEST_METHOD" => "PATCH")).to eq(true)
|
|
|
|
expect(key.allow?("PATH_INFO" => "/random", "REQUEST_METHOD" => "DELETE")).to eq(true)
|
|
|
|
expect(key.allow?("PATH_INFO" => "/random", "REQUEST_METHOD" => "POST")).to eq(true)
|
|
|
|
end
|
|
|
|
|
2016-10-14 13:05:27 +08:00
|
|
|
it "can allow blanket read" do
|
|
|
|
|
2019-02-13 12:49:25 +08:00
|
|
|
key = UserApiKey.new(scopes: ["read"])
|
2016-10-14 13:05:27 +08:00
|
|
|
|
|
|
|
expect(key.allow?("PATH_INFO" => "/random", "REQUEST_METHOD" => "GET")).to eq(true)
|
|
|
|
expect(key.allow?("PATH_INFO" => "/random", "REQUEST_METHOD" => "PUT")).to eq(false)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|