MCPcopy Create free account
hub / github.com/GH05TCREW/MetasploitMCP / TestPayloadGeneration

Class TestPayloadGeneration

tests/test_tools_integration.py:236–312  ·  view source on GitHub ↗

Test payload generation functionality.

Source from the content-addressed store, hash-verified

234
235
236class TestPayloadGeneration:
237 """Test payload generation functionality."""
238
239 @pytest.fixture
240 def mock_client_and_module(self):
241 """Fixture providing mocked client and module."""
242 client = MockMsfRpcClient()
243 module = MockMsfModule('payload/windows/meterpreter/reverse_tcp')
244
245 with patch('MetasploitMCP.get_msf_client', return_value=client):
246 with patch('MetasploitMCP._get_module_object', return_value=module):
247 with patch('MetasploitMCP.PAYLOAD_SAVE_DIR', '/tmp/test'):
248 with patch('os.makedirs'):
249 with patch('builtins.open', create=True) as mock_open:
250 mock_open.return_value.__enter__.return_value.write = Mock()
251 yield client, module
252
253 @pytest.mark.asyncio
254 async def test_generate_payload_dict_options(self, mock_client_and_module):
255 """Test payload generation with dictionary options."""
256 client, module = mock_client_and_module
257
258 options = {"LHOST": "192.168.1.100", "LPORT": 4444}
259 result = await generate_payload(
260 payload_type="windows/meterpreter/reverse_tcp",
261 format_type="exe",
262 options=options
263 )
264
265 assert result["status"] == "success"
266 assert "server_save_path" in result
267 assert result["payload_size"] == len(b"test_payload_bytes")
268
269 @pytest.mark.asyncio
270 async def test_generate_payload_string_options(self, mock_client_and_module):
271 """Test payload generation with string options."""
272 client, module = mock_client_and_module
273
274 options = "LHOST=192.168.1.100,LPORT=4444"
275 result = await generate_payload(
276 payload_type="windows/meterpreter/reverse_tcp",
277 format_type="exe",
278 options=options
279 )
280
281 assert result["status"] == "success"
282 # Verify the options were parsed correctly
283 assert module.options["LHOST"] == "192.168.1.100"
284 assert module.options["LPORT"] == 4444
285
286 @pytest.mark.asyncio
287 async def test_generate_payload_empty_options(self, mock_client_and_module):
288 """Test payload generation with empty options."""
289 client, module = mock_client_and_module
290
291 result = await generate_payload(
292 payload_type="windows/meterpreter/reverse_tcp",
293 format_type="exe",

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected