#!/usr/bin/env python3 # -*- coding: utf-8 -*- # Copyright 2023, School of Engineering and Architecture of Fribourg # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from urllib.parse import urlencode import json import pytest __author__ = 'Michael Mader' __date__ = "2023-03-12" __version__ = "0.2" __email__ = "michael.maeder@hefr.ch" def call(client, path, params): """calling function that simulates an API webcall of a specific function/route Args: client: this is the client object used by pytest to 'simulate' the API without running the webserver path: route of the API to use params: GET parameter that are passed to the function Returns: json: the result of the client call """ url = path + '?' + urlencode(params) response = client.get(url) return json.loads(response.data.decode('utf-8')) # increment test 1 def test_plus_one1(client): result = call(client, '/inc', {'x': 2}) assert result['x'] == 3 # increment test 1 def test_plus_one2(client): result = call(client, '/inc', {'x': -2}) assert result['x'] == -1 # adding test with negative value def test_plus_y(client): result = call(client, '/add', {'x': -2, 'y': 7}) assert result['result'] == 5 # multiplication test def test_multiply(client): result = call(client, '/mul', {'x': -2, 'y': 7}) assert result['result'] == -14 # division test def test_division(client): result = call(client, '/div', {'x': 35, 'y': 7}) assert result['result'] == 5 # type tests def test_type_inc(client): result = call(client, '/inc', {'x': 'a'}) assert result["error"] == "Type error" def test_type_add(client): result = call(client, '/add', {'x': 'a', 'y': 1}) assert result["error"] == "Type error" result = call(client, '/add', {'x': 1, 'y': 'a'}) assert result["error"] == "Type error" def test_type_mul(client): result = call(client, '/mul', {'x': 'a', 'y': 1}) assert result["error"] == "Type error" result = call(client, '/mul', {'x': 1, 'y': 'a'}) assert result["error"] == "Type error" def test_type_div(client): result = call(client, '/div', {'x': 'a', 'y': 1}) assert result["error"] == "Type error" result = call(client, '/div', {'x': 1, 'y': 'a'}) assert result["error"] == "Type error"