|
10 | 10 | def start_beef_and_hook_browser() |
11 | 11 | reset_beef_db |
12 | 12 | pid = start_beef_server_and_wait |
13 | | - beef_session = BeefTest.login |
14 | | - hooked_browser = BeefTest.new_victim |
15 | 13 |
|
16 | | - expect(hooked_browser).not_to be_nil |
17 | | - expect(hooked_browser).to be_a(Capybara::Session) |
18 | | - expect(hooked_browser).to have_content('BeEF', wait: PAGE_LOAD_TIMEOUT) |
| 14 | + begin |
| 15 | + beef_session = BeefTest.login |
| 16 | + hooked_browser = BeefTest.new_victim |
19 | 17 |
|
20 | | - expect(beef_session).not_to be_nil |
21 | | - expect(beef_session).to be_a(Capybara::Session) |
22 | | - expect(beef_session).to have_content('Hooked Browsers', wait: PAGE_LOAD_TIMEOUT) |
| 18 | + expect(hooked_browser).not_to be_nil |
| 19 | + expect(hooked_browser).to be_a(Capybara::Session) |
| 20 | + expect(hooked_browser).to have_content('BeEF', wait: PAGE_LOAD_TIMEOUT) |
23 | 21 |
|
24 | | - navigate_to_hooked_browser(beef_session) |
| 22 | + expect(beef_session).not_to be_nil |
| 23 | + expect(beef_session).to be_a(Capybara::Session) |
| 24 | + expect(beef_session).to have_content('Hooked Browsers', wait: PAGE_LOAD_TIMEOUT) |
25 | 25 |
|
26 | | - expect(beef_session).to have_content('Commands', wait: PAGE_LOAD_TIMEOUT) |
27 | | - beef_session.click_on('Commands') |
| 26 | + navigate_to_hooked_browser(beef_session) |
28 | 27 |
|
29 | | - return pid, beef_session, hooked_browser |
| 28 | + expect(beef_session).to have_content('Commands', wait: PAGE_LOAD_TIMEOUT) |
| 29 | + beef_session.click_on('Commands') |
| 30 | + |
| 31 | + return pid, beef_session, hooked_browser |
| 32 | + rescue => e |
| 33 | + # If setup fails, cleanup the server before re-raising |
| 34 | + stop_beef_server(pid) |
| 35 | + raise e |
| 36 | + end |
30 | 37 | end |
31 | 38 |
|
32 | 39 | def stop_beef_and_unhook_browser(pid, beef_session, hooked_browser) |
33 | 40 | stop_beef_server(pid) |
34 | | - beef_session.driver.browser.close |
35 | | - hooked_browser.driver.browser.close |
| 41 | + beef_session.driver.browser.close if beef_session |
| 42 | + hooked_browser.driver.browser.close if hooked_browser |
36 | 43 | end |
37 | 44 |
|
38 | 45 | def navigate_to_hooked_browser(session, hooked_browser_text = nil) |
|
0 commit comments