Commit a8d32971 authored by Carlos Natalino's avatar Carlos Natalino
Browse files

Improving tests to use mocks.

parent 761449b4
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -7,3 +7,4 @@ prometheus-client
pytest
pytest-benchmark
lorem-text
redis
+17 −15
Original line number Diff line number Diff line
@@ -9,14 +9,16 @@ from webui.proto.context_pb2 import (ContextId, DeviceList, DeviceId,
from webui.service.device.forms import AddDeviceForm

device = Blueprint('device', __name__, url_prefix='/device')
context_client: ContextClient = ContextClient(CONTEXT_SERVICE_ADDRESS, CONTEXT_SERVICE_PORT)
device_client: DeviceClient = DeviceClient(DEVICE_SERVICE_ADDRESS, DEVICE_SERVICE_PORT)

@device.get('/')
def home():
    request: ContextId = ContextId()
    request.context_uuid.uuid = session['context_uuid']
    client: ContextClient = ContextClient(CONTEXT_SERVICE_ADDRESS, CONTEXT_SERVICE_PORT)
    response: DeviceList = client.ListDevices(request)
    client.close()
    context_client.connect()
    response: DeviceList = context_client.ListDevices(request)
    context_client.close()
    return render_template('device/home.html', devices=response.devices,
                                               dde=DeviceDriverEnum,
                                               dose=DeviceOperationalStatusEnum)
@@ -27,9 +29,9 @@ def add():

    request: ContextId = ContextId()
    request.context_uuid.uuid = session['context_uuid']
    client: ContextClient = ContextClient(CONTEXT_SERVICE_ADDRESS, CONTEXT_SERVICE_PORT)
    response: TopologyIdList = client.ListTopologyIds(request)
    client.close()
    context_client.connect()
    response: TopologyIdList = context_client.ListTopologyIds(request)
    context_client.close()

    # listing enum values
    form.operational_status.choices = [(-1, 'Select...')]
@@ -73,9 +75,9 @@ def add():
                continue
            device.device_drivers.extend([int(driver)])
        try:
            client: DeviceClient = DeviceClient(DEVICE_SERVICE_ADDRESS, DEVICE_SERVICE_PORT)
            response: DeviceId = client.AddDevice(device)
            client.close()
            device_client.connect()
            response: DeviceId = device_client.AddDevice(device)
            device_client.close()

            flash(f'New device was created with ID "{response.device_uuid.uuid}".', 'success')
            return redirect('/device/')
@@ -90,15 +92,14 @@ def add():
def detail(device_uuid: str):
    request: DeviceId = DeviceId()
    request.device_uuid.uuid = device_uuid
    client: ContextClient = ContextClient(CONTEXT_SERVICE_ADDRESS, CONTEXT_SERVICE_PORT)
    response: Device = client.GetDevice(request)
    client.close()
    context_client.connect()
    response: Device = context_client.GetDevice(request)
    context_client.close()
    return render_template('device/detail.html', device=response)

@device.get('<device_uuid>/delete')
def delete(device_uuid):
    try:
        client: DeviceClient = DeviceClient(DEVICE_SERVICE_ADDRESS, DEVICE_SERVICE_PORT)

        # first, check if device exists!
        # request: DeviceId = DeviceId()
@@ -108,9 +109,10 @@ def delete(device_uuid):

        request: DeviceId = DeviceId()
        request.device_uuid.uuid = device_uuid
        response = client.DeleteDevice(request)
        device_client.connect()
        response = device_client.DeleteDevice(request)

        client.close()
        device_client.close()

        flash('Device deleted successfully!', 'success')
    except Exception as e:
+15 −7
Original line number Diff line number Diff line
import pytest
from unittest import mock
from flask.app import Flask
from flask.helpers import url_for
# from device.client.DeviceClient import DeviceClient
from webui.service import create_app
from webui.proto.context_pb2 import Empty
from webui.proto.context_pb2 import Empty, DeviceId, DeviceList

# @pytest.fixture(scope='session')
# def device_client(device_service):
@@ -95,11 +96,18 @@ def test_device_add_action(client):
        'device_drivers': 0,
        'device_endpoints': [],
    }
    with mock.patch('webui.service.device.routes.device_client.AddDevice') as mocked_add:
        mocked_add.return_value = DeviceId()
        rw = client.post('/device/add', data=DEVICE_EMU, follow_redirects=True)
    assert b'success' in rw.data

# def test_device_delete_action(client):
#     with client.session_transaction() as sess:
#         sess['context_uuid'] = 'admin'
#     rw = client.get('/device/EMULATED/delete')
#     assert b'success' in rw.data
def test_device_delete_action(client):
    with client.session_transaction() as sess:
        sess['context_uuid'] = 'admin'
    with mock.patch('webui.service.device.routes.device_client.DeleteDevice') as mocked_delete,\
         mock.patch('webui.service.device.routes.context_client.ListDevices') as mocked_list:
        mocked_list.return_value = DeviceList()  # returns an empty list
        rw = client.get('/device/EMULATED/delete', follow_redirects=True)
        mocked_list.assert_called()
        mocked_delete.assert_called()
    assert b'success' in rw.data