DEV: Add integration tests for group endpoints
This commit is contained in:
parent
c2afc8a27c
commit
3a282084a0
1 changed files with 102 additions and 0 deletions
102
spec/integration/groups_spec.rb
Normal file
102
spec/integration/groups_spec.rb
Normal file
|
@ -0,0 +1,102 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
describe "Group SCIM endpoints" do
|
||||
before do
|
||||
SiteSetting.chat_enabled = true
|
||||
SiteSetting.chat_allowed_groups = Group::AUTO_GROUPS[:everyone]
|
||||
end
|
||||
|
||||
fab!(:admin)
|
||||
|
||||
let(:scim_api_key) do
|
||||
key = ApiKey.create!
|
||||
ApiKeyScope.create!(resource: "scim", action: "access_scim_endpoints", api_key_id: key.id)
|
||||
key
|
||||
end
|
||||
|
||||
def create_group
|
||||
post "/scim_v2/Groups",
|
||||
headers: {
|
||||
"Authorization" => "Bearer " + scim_api_key.key,
|
||||
"Content-Type" => "application/scim+json"
|
||||
},
|
||||
params: {
|
||||
schemas: [
|
||||
"urn:ietf:params:scim:schemas:core:2.0:Group"
|
||||
],
|
||||
displayName: "TestGroup",
|
||||
members: [
|
||||
{ "value": "1"}
|
||||
]
|
||||
},
|
||||
as: :json
|
||||
end
|
||||
|
||||
it "can create a group" do
|
||||
expect {
|
||||
create_group
|
||||
}.to change { Group.count }.by(1)
|
||||
expect(response.status).to eq(201)
|
||||
end
|
||||
|
||||
it "can query a group" do
|
||||
create_group
|
||||
response_content = JSON.parse(response.body)
|
||||
get "/scim_v2/Groups/#{response_content["id"]}",
|
||||
headers: {
|
||||
"Authorization" => "Bearer " + scim_api_key.key,
|
||||
"Content-Type" => "application/scim+json"
|
||||
},
|
||||
as: :json
|
||||
expect(response.status).to eq(200)
|
||||
response_content = JSON.parse(response.body)
|
||||
expect(response_content["displayName"]).to eq("TestGroup")
|
||||
end
|
||||
|
||||
it "can modify a group" do
|
||||
create_group
|
||||
response_content = JSON.parse(response.body)
|
||||
patch "/scim_v2/Groups/#{response_content["id"]}",
|
||||
headers: {
|
||||
"Authorization" => "Bearer " + scim_api_key.key,
|
||||
"Content-Type" => "application/scim+json"
|
||||
},
|
||||
params: {
|
||||
schemas: [
|
||||
"urn:ietf:params:scim:schemas:core:2.0:PatchOp"
|
||||
],
|
||||
Operations: [
|
||||
{
|
||||
op: "replace",
|
||||
value: {
|
||||
displayName: "ChangedName"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
as: :json
|
||||
expect(response.status).to eq(200)
|
||||
|
||||
get "/scim_v2/Groups/#{response_content["id"]}",
|
||||
headers: {
|
||||
"Authorization" => "Bearer " + scim_api_key.key,
|
||||
"Content-Type" => "application/scim+json"
|
||||
},
|
||||
as: :json
|
||||
expect(response.status).to eq(200)
|
||||
response_content = JSON.parse(response.body)
|
||||
expect(response_content["displayName"]).to eq("ChangedName")
|
||||
end
|
||||
|
||||
it "can delete a group" do
|
||||
create_group
|
||||
response_content = JSON.parse(response.body)
|
||||
delete "/scim_v2/Groups/#{response_content["id"]}",
|
||||
headers: {
|
||||
"Authorization" => "Bearer " + scim_api_key.key,
|
||||
"Content-Type" => "application/scim+json"
|
||||
},
|
||||
as: :json
|
||||
expect(response.status).to eq(204)
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue