mirror of
https://ghfast.top/https://github.com/discourse/docker_manager.git
synced 2026-05-24 00:14:00 +08:00
Requesting /admin/docker/repos.json with a lot of plugins installed can take a lot of time because of the large number of calls to the 'git' CLI that are used to retrieve various information about the plugin (eg. branch, latest commit, remote URL, etc). This is not a problem in production because of memoization and the much lower number of installed plugins, but it is a problem in test environment where specs requesting this page can take 10+ seconds with ~100 installed plugins. This commit speeds up by stubbing the `find_all` method to return only the first few repositories.
55 lines
1.3 KiB
Ruby
55 lines
1.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
RSpec.describe DockerManager::AdminController do
|
|
describe "anonymous user" do
|
|
it "should be a 404" do
|
|
get "/admin/update"
|
|
|
|
expect(response.status).to eq(404)
|
|
end
|
|
end
|
|
|
|
describe "when user is not an admin" do
|
|
it "should 404" do
|
|
sign_in(Fabricate(:user))
|
|
|
|
get "/admin/update"
|
|
expect(response.status).to eq(404)
|
|
end
|
|
end
|
|
|
|
describe "when user is an admin" do
|
|
it "should return the right response" do
|
|
sign_in(Fabricate(:admin))
|
|
|
|
get "/admin/update"
|
|
expect(response.status).to eq(200)
|
|
end
|
|
|
|
it "should redirect to the new route" do
|
|
sign_in(Fabricate(:admin))
|
|
|
|
get "/admin/upgrade"
|
|
expect(response.status).to eq(301)
|
|
|
|
uri = URI.parse(response.headers["Location"])
|
|
expect(uri.path).to eq("/admin/update")
|
|
end
|
|
end
|
|
|
|
describe "#repos" do
|
|
before do
|
|
# Return only the first 3 repos to reduce the number of calls to 'git' CLI
|
|
repos = DockerManager::GitRepo.find_all
|
|
DockerManager::GitRepo.stubs(:find_all).returns(repos[0...3])
|
|
end
|
|
|
|
it "should return the right response" do
|
|
sign_in(Fabricate(:admin))
|
|
|
|
get "/admin/docker/repos.json"
|
|
expect(response.status).to eq(200)
|
|
expect(response.parsed_body["repos"].first["official"]).to eq(false)
|
|
end
|
|
end
|
|
end
|