from pydoc import cli from urllib import response from Website import create_app import json import pdb import Website from Website.db import get_db from .test_conf import client, app def test_config(): assert not create_app()["app"].testing assert create_app({'TESTING': True})["app"].testing #basic tests def test_favicon(client): response = client.get("/favicon.ico") assert response.status_code == 200 def test_index(client): response = client.get("/") assert 'window.location="/list"' in response.data.decode('utf-8') #/adduser def test_adduser(client): response = client.get('/adduser/user') assert "418" in response.data.decode('utf-8') def test_adduser_new(app, client): with app.app_context(): db = get_db() assert db is get_db() response = client.get('/adduser/user?username=test') c = db.cursor() c.execute("SELECT * FROM users WHERE username = ?", ["test"]) data = c.fetchone() assert "tag was sucsesfully added" in response.data.decode('utf-8') assert data[0] == 1 assert data[1] == "test" assert data[2] == 0 def test_adduser_allreadyexists(client): response = client.get('/adduser/user?username=test') assert "Error: 757" in response.data.decode('utf-8') #/addtag def test_addtag(client): response = client.get('/addtag') assert response.data.decode('utf-8') == "Error: 095" def test_addtag_userid_nan(client): response = client.get('/addtag?id=test') assert response.data.decode('utf-8') == "Error: 095" def test_add_tag_direktli(app): with app.app_context(): db = get_db() assert db is get_db() c = db.cursor() c.execute("INSERT INTO tags (tagid, userid) VALUES (12345678, 1)") c.execute("INSERT INTO tags (tagid, userid) VALUES (23456789, 1)") db.commit() c.execute("SELECT * FROM tags WHERE tagid = 12345678") data_1 = c.fetchone() c.execute("SELECT * FROM tags WHERE tagid = 23456789") data_2 = c.fetchone() assert data_1[0] == 12345678 assert data_1[1] == 1 assert data_2[0] == 23456789 assert data_2[1] == 1 #/api def test_api_change(client): response = client.get('/api/change') assert json.loads(response.data.decode('utf-8')) == {"mode":"error", "error":"043"} def test_api_change_wrong_user(client): response = client.get('/api/change?id=2') assert json.loads(response.data.decode('utf-8')) == {"mode":"error", "error":"043"} def test_api_change_nan(client): response = client.get('/api/change?id=1&?change=test') assert json.loads(response.data.decode('utf-8')) == {"mode":"balance", "username":"test", "balance":-1} def test_api_change_none(client): response = client.get('/api/change?id=1') assert json.loads(response.data.decode('utf-8')) == {"mode":"balance", "username":"test", "balance":-2} def test_api_change_right_positiv(app, client): response = client.get('/api/change?id=1&change=7') with app.app_context(): db = get_db() assert db is get_db() c = db.cursor() c.execute("SELECT * FROM users WHERE username = ?", ["test"]) data = c.fetchone() assert json.loads(response.data.decode('utf-8')) == {"mode":"balance", "username":"test", "balance":5} assert data[0] == 1 assert data[1] == "test" assert data[2] == 5 def test_api_change_right_negativ(app, client): response = client.get('/api/change?id=1&change=-5') with app.app_context(): db = get_db() assert db is get_db() c = db.cursor() c.execute("SELECT * FROM users WHERE username = ?", ["test"]) data = c.fetchone() assert json.loads(response.data.decode('utf-8')) == {"mode":"balance", "username":"test", "balance":0} assert data[0] == 1 assert data[1] == "test" assert data[2] == 0 def test_api_tagid(app, client): response = client.get("/api/tag_id") assert json.loads(response.data.decode('utf-8')) == {'error': '054', 'mode': 'error'} def test_api_tagid_NaN(app, client): response = client.get("/api/tag_id?id=test") assert json.loads(response.data.decode('utf-8')) == {'error': '054', 'mode': 'error'} def test_api_tagid_wrong_id(app, client): response = client.get("/api/tag_id?id=1234") assert json.loads(response.data.decode('utf-8')) == {'error': '054', 'mode': 'error'} def test_api_tagid_right_firsttag(app, client): response = client.get("/api/tag_id?id=12345678") with app.app_context(): db = get_db() assert db is get_db() c = db.cursor() c.execute("SELECT * FROM users WHERE id = 1") data = c.fetchone() assert data[0] == 1 assert data[1] == "test" assert data[2] == -1 assert json.loads(response.data.decode('utf-8')) == {'balance': -1, 'mode': 'balance', 'username': 'test'} def test_api_tagid_right_seconttag(app, client): response = client.get("/api/tag_id?id=23456789") with app.app_context(): db = get_db() assert db is get_db() c = db.cursor() c.execute("SELECT * FROM users WHERE id = 1") data = c.fetchone() assert data[0] == 1 assert data[1] == "test" assert data[2] == -2 assert json.loads(response.data.decode('utf-8')) == {'balance': -2, 'mode': 'balance', 'username': 'test'} #db def test_sqlinjektion_adduser(app, client): injektion_list = ['"', "'--"] count = 2 for i in injektion_list: with app.app_context(): db = get_db() assert db is get_db() response = client.get('/adduser/user?username={i}') c = db.cursor() c.execute("SELECT * FROM users WHERE username = ?", [i]) data = c.fetchone() assert data[0] == count assert data[1] == i assert data[2] == 0 assert "tag was sucsesfully added" in response.data.decode('utf-8') count += 1