#2084: testing webbrowser requesting database service user data via web server
This commit is contained in:
@@ -73,7 +73,8 @@ class DatabaseClient(Application):
|
|||||||
|
|
||||||
if not self.connected:
|
if not self.connected:
|
||||||
return self._connect(self.server_ip_address, self.server_password)
|
return self._connect(self.server_ip_address, self.server_password)
|
||||||
return False
|
# already connected
|
||||||
|
return True
|
||||||
|
|
||||||
def _connect(
|
def _connect(
|
||||||
self, server_ip_address: IPv4Address, password: Optional[str] = None, is_reattempt: bool = False
|
self, server_ip_address: IPv4Address, password: Optional[str] = None, is_reattempt: bool = False
|
||||||
|
|||||||
@@ -166,9 +166,9 @@ def example_network() -> Network:
|
|||||||
|
|
||||||
-------------- --------------
|
-------------- --------------
|
||||||
| client_1 |----- ----| server_1 |
|
| client_1 |----- ----| server_1 |
|
||||||
-------------- | -------------- ------------ -------------- | --------------
|
-------------- | -------------- -------------- -------------- | --------------
|
||||||
------| switch_1 |------| router |------| switch_2 |------
|
------| switch_1 |------| router_1 |------| switch_2 |------
|
||||||
-------------- | -------------- ------------ -------------- | --------------
|
-------------- | -------------- -------------- -------------- | --------------
|
||||||
| client_2 |---- ----| server_2 |
|
| client_2 |---- ----| server_2 |
|
||||||
-------------- --------------
|
-------------- --------------
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -6,7 +6,9 @@ import pytest
|
|||||||
from primaite.simulator.network.hardware.base import Link
|
from primaite.simulator.network.hardware.base import Link
|
||||||
from primaite.simulator.network.hardware.node_operating_state import NodeOperatingState
|
from primaite.simulator.network.hardware.node_operating_state import NodeOperatingState
|
||||||
from primaite.simulator.network.hardware.nodes.computer import Computer
|
from primaite.simulator.network.hardware.nodes.computer import Computer
|
||||||
|
from primaite.simulator.network.hardware.nodes.router import ACLAction, Router
|
||||||
from primaite.simulator.network.hardware.nodes.server import Server
|
from primaite.simulator.network.hardware.nodes.server import Server
|
||||||
|
from primaite.simulator.network.transmission.transport_layer import Port
|
||||||
from primaite.simulator.system.applications.database_client import DatabaseClient
|
from primaite.simulator.system.applications.database_client import DatabaseClient
|
||||||
from primaite.simulator.system.applications.web_browser import WebBrowser
|
from primaite.simulator.system.applications.web_browser import WebBrowser
|
||||||
from primaite.simulator.system.services.database.database_service import DatabaseService
|
from primaite.simulator.system.services.database.database_service import DatabaseService
|
||||||
@@ -16,31 +18,30 @@ from primaite.simulator.system.services.web_server.web_server import WebServer
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope="function")
|
@pytest.fixture(scope="function")
|
||||||
def web_client_web_server_database() -> Tuple[Computer, Server, Server]:
|
def web_client_web_server_database(example_network) -> Tuple[Computer, Server, Server]:
|
||||||
# Create Computer
|
# add rules to network router
|
||||||
computer: Computer = Computer(
|
router_1: Router = example_network.get_node_by_hostname("router_1")
|
||||||
hostname="test_computer",
|
router_1.acl.add_rule(
|
||||||
ip_address="192.168.0.1",
|
action=ACLAction.PERMIT, src_port=Port.POSTGRES_SERVER, dst_port=Port.POSTGRES_SERVER, position=0
|
||||||
subnet_mask="255.255.255.0",
|
|
||||||
default_gateway="192.168.1.1",
|
|
||||||
operating_state=NodeOperatingState.ON,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Allow DNS requests
|
||||||
|
router_1.acl.add_rule(action=ACLAction.PERMIT, src_port=Port.DNS, dst_port=Port.DNS, position=1)
|
||||||
|
|
||||||
|
# Allow FTP requests
|
||||||
|
router_1.acl.add_rule(action=ACLAction.PERMIT, src_port=Port.FTP, dst_port=Port.FTP, position=2)
|
||||||
|
|
||||||
|
# Open port 80 for web server
|
||||||
|
router_1.acl.add_rule(action=ACLAction.PERMIT, src_port=Port.HTTP, dst_port=Port.HTTP, position=3)
|
||||||
|
|
||||||
|
# Create Computer
|
||||||
|
computer: Computer = example_network.get_node_by_hostname("client_1")
|
||||||
|
|
||||||
# Create Web Server
|
# Create Web Server
|
||||||
web_server = Server(
|
web_server: Server = example_network.get_node_by_hostname("server_1")
|
||||||
hostname="web_server",
|
|
||||||
ip_address="192.168.0.2",
|
|
||||||
subnet_mask="255.255.255.0",
|
|
||||||
operating_state=NodeOperatingState.ON,
|
|
||||||
)
|
|
||||||
|
|
||||||
# Create Database Server
|
# Create Database Server
|
||||||
db_server = Server(
|
db_server = example_network.get_node_by_hostname("server_2")
|
||||||
hostname="db_server",
|
|
||||||
ip_address="192.168.0.3",
|
|
||||||
subnet_mask="255.255.255.0",
|
|
||||||
operating_state=NodeOperatingState.ON,
|
|
||||||
)
|
|
||||||
|
|
||||||
# Get the NICs
|
# Get the NICs
|
||||||
computer_nic = computer.nics[next(iter(computer.nics))]
|
computer_nic = computer.nics[next(iter(computer.nics))]
|
||||||
@@ -66,6 +67,7 @@ def web_client_web_server_database() -> Tuple[Computer, Server, Server]:
|
|||||||
# Install Web Browser on computer
|
# Install Web Browser on computer
|
||||||
computer.software_manager.install(WebBrowser)
|
computer.software_manager.install(WebBrowser)
|
||||||
web_browser: WebBrowser = computer.software_manager.software.get("WebBrowser")
|
web_browser: WebBrowser = computer.software_manager.software.get("WebBrowser")
|
||||||
|
web_browser.target_url = "http://arcd.com/users/"
|
||||||
web_browser.run()
|
web_browser.run()
|
||||||
|
|
||||||
# Install DNS Client service on computer
|
# Install DNS Client service on computer
|
||||||
@@ -92,15 +94,15 @@ def web_client_web_server_database() -> Tuple[Computer, Server, Server]:
|
|||||||
db_client: DatabaseClient = web_server.software_manager.software.get("DatabaseClient")
|
db_client: DatabaseClient = web_server.software_manager.software.get("DatabaseClient")
|
||||||
db_client.server_ip_address = IPv4Address(db_server_nic.ip_address) # set IP address of Database Server
|
db_client.server_ip_address = IPv4Address(db_server_nic.ip_address) # set IP address of Database Server
|
||||||
db_client.run()
|
db_client.run()
|
||||||
|
assert dns_client.check_domain_exists("arcd.com")
|
||||||
assert db_client.connect()
|
assert db_client.connect()
|
||||||
|
|
||||||
return computer, web_server, db_server
|
return computer, web_server, db_server
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skip(reason="waiting for a way to set this up correctly")
|
|
||||||
def test_web_client_requests_users(web_client_web_server_database):
|
def test_web_client_requests_users(web_client_web_server_database):
|
||||||
computer, web_server, db_server = web_client_web_server_database
|
computer, web_server, db_server = web_client_web_server_database
|
||||||
|
|
||||||
web_browser: WebBrowser = computer.software_manager.software.get("WebBrowser")
|
web_browser: WebBrowser = computer.software_manager.software.get("WebBrowser")
|
||||||
|
|
||||||
web_browser.get_webpage()
|
assert web_browser.get_webpage()
|
||||||
|
|||||||
Reference in New Issue
Block a user