Skip to content

Commit f9a04ac

Browse files
committed
Add PXE server credential validation endpoint.
#926
1 parent 5dacc20 commit f9a04ac

File tree

3 files changed

+36
-0
lines changed

3 files changed

+36
-0
lines changed

app/controllers/api/pxe_servers_controller.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,15 @@ def edit_resource(type, id, data)
5555
end
5656
end
5757

58+
def verify_credentials_resource(_type, id = nil, data = {})
59+
zone_name = data.delete('zone_name')
60+
data['id'] = id if id
61+
task_id = PxeServer.verify_depot_settings_queue(User.current_user.userid, zone_name, data)
62+
action_result(true, "Credentials sent for verification", :task_id => task_id)
63+
rescue => err
64+
action_result(false, err.to_s)
65+
end
66+
5867
private
5968

6069
def validate_data_for(klass, data)

config/api.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3030,6 +3030,8 @@
30303030
:identifier: pxe_server_edit
30313031
- :name: delete
30323032
:identifier: pxe_server_delete
3033+
- :name: verify_credentials
3034+
:identifier: pxe_server_new
30333035
:resource_actions:
30343036
:get:
30353037
- :name: read

spec/requests/pxe_servers_spec.rb

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,4 +267,29 @@
267267
expect(response).to have_http_status(:forbidden)
268268
end
269269
end
270+
271+
describe 'post /api/pxe_servers with verify_credentials action' do
272+
it 'queues the request to verify the credentials' do
273+
api_basic_authorize collection_action_identifier(:pxe_servers, :verify_credentials)
274+
request = {
275+
"action" => "verify_credentials",
276+
"zone_name" => "zone",
277+
"resource" => {:name => "test", :uri => "smb://tmp/foo", :username => "test", :password => "foo"}
278+
}
279+
post(api_pxe_servers_url, :params => request)
280+
expected = {
281+
"results" => a_collection_containing_exactly(
282+
a_hash_including(
283+
"message" => a_string_matching(/Credentials sent for verification/),
284+
"success" => true,
285+
"task_href" => a_string_matching(api_tasks_url),
286+
"task_id" => a_kind_of(String)
287+
)
288+
)
289+
}
290+
291+
expect(response.parsed_body).to include(expected)
292+
expect(response).to have_http_status(:ok)
293+
end
294+
end
270295
end

0 commit comments

Comments
 (0)