예제 #1
0
def test_ChuteApi_get_chutes(ChuteStorage, ChuteContainer):
    update_manager = MagicMock()
    api = chute_api.ChuteApi(update_manager)

    request = MagicMock()

    container = MagicMock()
    container.getStatus.return_value = "running"
    ChuteContainer.return_value = container

    storage = MagicMock()
    ChuteStorage.return_value = storage

    chute = MagicMock()
    chute.environment = {}
    chute.name = "test"
    chute.resources = {}
    chute.version = 5
    chute.get_owner.return_value = "paradrop"

    storage.getChuteList.return_value = [chute]

    data = api.get_chutes(request)
    assert isinstance(data, basestring)

    result = json.loads(data)
    assert result[0]['name'] == chute.name
    assert result[0]['version'] == chute.version
예제 #2
0
def test_ChuteApi_get_chute(ChuteStorage, ChuteContainer):
    update_manager = MagicMock()
    api = chute_api.ChuteApi(update_manager)

    request = MagicMock()
    request.user = User.get_internal_user()

    container = MagicMock()
    container.getStatus.return_value = "running"
    ChuteContainer.return_value = container

    chute = MagicMock()
    chute.name = "test"
    chute.version = 5
    chute.environment = {}
    chute.resources = {}

    ChuteStorage.chuteList = {"test": chute}

    data = api.get_chute(request, chute.name)
    assert isinstance(data, basestring)

    result = json.loads(data)
    assert result['name'] == chute.name
    assert result['version'] == chute.version
예제 #3
0
def test_ChuteApi_get_chute_cache(ChuteStorage):
    update_manager = MagicMock()
    update_manager.assign_change_id.return_value = 1

    api = chute_api.ChuteApi(update_manager)

    chute = MagicMock()
    chute.getCacheContents.return_value = {}

    ChuteStorage.chuteList = {"test": chute}

    request = MagicMock()

    result = api.get_chute_cache(request, "test")
    assert result == "{}"
예제 #4
0
    def __init__(self):
        self.update_manager = MagicMock()
        self.update_manager.assign_change_id.return_value = 1

        self.api = chute_api.ChuteApi(self.update_manager)

        self.interface = {
            'name': 'testing',
            'netType': 'wifi',
            'internalIntf': 'wlan0',
            'externalIntf': 'vwlan0'
        }

        chute = {'name': 'test', 'web': {'port': 5000}}
        self.chute = Chute(chute)
        self.chute.setCache("externalSystemDir", "/tmp")
        self.chute.setCache("networkInterfaces", [self.interface])
예제 #5
0
def test_ChuteApi_create_chute():
    update_manager = MagicMock()
    update_manager.assign_change_id.return_value = 1

    api = chute_api.ChuteApi(update_manager)

    body = {'config': {}}

    request = MagicMock()
    request.content.read.return_value = json.dumps(body)

    data = api.create_chute(request)
    assert isinstance(data, basestring)

    result = json.loads(data)
    assert result['change_id'] == 1

    assert update_manager.add_update.called
예제 #6
0
    def __init__(self):
        self.update_manager = MagicMock()
        self.update_manager.assign_change_id.return_value = 1

        self.api = chute_api.ChuteApi(self.update_manager)

        self.interface = {
            'name': 'testing',
            'type': 'wifi',
            'internalIntf': 'wlan0',
            'externalIntf': 'vwlan0'
        }

        chute = Chute(name="test")
        chute.setCache("networkInterfaces", [self.interface])
        chute.setCache("externalSystemDir", "/tmp")
        chute.config = {"web": {"port": 5000}}

        self.chute = chute
예제 #7
0
def test_ChuteApi_get_networks(ChuteStorage):
    update_manager = MagicMock()
    update_manager.assign_change_id.return_value = 1

    api = chute_api.ChuteApi(update_manager)

    iface = {'name': 'vwlan0', 'netType': 'wifi', 'internalIntf': 'wlan0'}

    chute = Chute(dict(name="test"))
    chute.setCache("networkInterfaces", [iface])

    ChuteStorage.chuteList = {"test": chute}

    request = MagicMock()

    result = api.get_networks(request, "test")
    data = json.loads(result)
    assert len(data) == 1
    assert data[0]['name'] == iface['name']
    assert data[0]['type'] == iface['netType']
    assert data[0]['interface'] == iface['internalIntf']
예제 #8
0
def test_ChuteApi_update_chute_tarfile(extract_tarred_chute):
    update_manager = MagicMock()
    update_manager.assign_change_id.return_value = 1

    api = chute_api.ChuteApi(update_manager)

    request = MagicMock()
    request.requestHeaders.getRawHeaders.return_value = ["application/x-tar"]
    request.user = User.get_internal_user()

    # Case 1: should work normally.
    workdir = "/tmp/test"
    paradrop_yaml = {'name': 'chute'}
    extract_tarred_chute.return_value = (workdir, paradrop_yaml)

    data = api.update_chute(request, "chute")
    assert isinstance(data, basestring)
    result = json.loads(data)
    assert result['change_id'] == 1
    assert update_manager.add_update.called

    # Case 2: deprecated way of declaring name, but should still work.
    workdir = "/tmp/test"
    paradrop_yaml = {'config': {'name': 'chute'}}
    extract_tarred_chute.return_value = (workdir, paradrop_yaml)

    data = api.update_chute(request, "chute")
    assert isinstance(data, basestring)
    result = json.loads(data)
    assert result['change_id'] == 1
    assert update_manager.add_update.called

    # Case 3: missing name, should raise exception.
    workdir = "/tmp/test"
    paradrop_yaml = {}
    extract_tarred_chute.return_value = (workdir, paradrop_yaml)

    assert_raises(Exception, api.update_chute, request, "chute")
예제 #9
0
def test_ChuteApi_operations():
    update_manager = MagicMock()
    update_manager.assign_change_id.return_value = 1

    api = chute_api.ChuteApi(update_manager)

    body = {'config': {}}

    request = MagicMock()
    request.content.read.return_value = json.dumps(body)

    functions = [
        api.update_chute, api.stop_chute, api.start_chute, api.restart_chute,
        api.delete_chute
    ]
    for func in functions:
        print("Calling ChuteApi {}".format(func.__name__))

        data = func(request, "test")
        assert isinstance(data, basestring)

        result = json.loads(data)
        assert result['change_id'] == 1
예제 #10
0
def test_ChuteApi_get_network(ChuteStorage):
    update_manager = MagicMock()
    update_manager.assign_change_id.return_value = 1

    api = chute_api.ChuteApi(update_manager)

    iface = {'name': 'vwlan0', 'type': 'wifi', 'internalIntf': 'wlan0'}

    chute = Chute(name="test")
    chute.setCache("networkInterfaces", [iface])

    ChuteStorage.chuteList = {"test": chute}

    request = MagicMock()
    request.user = User.get_internal_user()

    result = api.get_network(request, "test", "nomatch")
    assert result == "{}"

    result = api.get_network(request, "test", "vwlan0")
    data = json.loads(result)
    assert data['name'] == iface['name']
    assert data['type'] == iface['type']
    assert data['interface'] == iface['internalIntf']