def test_get_close_db(app): with app.app_context(): db = get_db() assert db is get_db() with pytest.raises(sqlite3.ProgrammingError) as e: db.execute('SELECT 1') assert 'closed' in str(e.value)
def update(post_id): post = get_post(post_id) if request.method == 'POST': url = post['url'] state = request.form['state'] level = request.form['level'] office = request.form['office'] profession = request.form['profession'] text = request.form["text"] error = None if not url: error = 'Url required' if error is not None: flash(error) else: db = get_db() db.execute( 'UPDATE post SET url=%s, state=%s, level=%s, office=%s, profession=%s, text=%s' ' WHERE id=%s;', (url, state, level, office, profession, text, post_id)) return redirect(url_for('application.index')) return render_template('application/update.html', post=post)
def create(): bucket = GSbucket() BUCKET = bucket.bucket BLOB = bucket.blob if request.method == 'POST': url = request.form['url'] error = None if not url: error = 'Url required' if error is not None: flash(error) else: db = get_db() CAWPwd = os.path.join(os.getcwd(), "CAWPr/CAWPspider") subprocess.run([ "scrapy", "crawl", "candidate", "-a", "url=" + url, "-a", "BUCKET_NAME=" + BUCKET, "-a", "REMOTE_BLOB_NAME=" + BLOB ], cwd=CAWPwd) text = download_blob(BUCKET, BLOB).decode('utf-8') entry = classifier(text) db.execute( 'INSERT INTO post (url, state, level, office, profession,text)' ' VALUES (%s,%s,%s,%s,%s,%s);', (url, entry['state'], entry['level'], entry['office'], entry['profession'], entry['text'])) return redirect(url_for('application.index')) return render_template('application/create.html')
def index(): db = get_db() db.execute('SELECT p.id, url, state, level, office, profession, created' ' FROM post p' ' ORDER BY created ASC') posts = db.fetchall() return render_template('application/index.html', posts=posts)
def app(): db_fd, db_path = tempfile.mkstemp() app = create_app({ 'TESTING': True, 'DATABASE': db_path, }) with app.app_context(): init_db() get_db().executescript(_data_sql) yield app os.close(db_fd) os.unlink(db_path)
def test_delete(client, auth, app): auth.login() response = client.post('/1/delete') assert response.headers['Location'] == 'http://localhost/' with app.app_context(): db = get_db() post = db.execute('SELECT * FROM post WHERE id=1').fetchone() assert post is None
def load_logged_in_user(): user_id = session.get('user_id') if user_id is None: g.user = None else: db = get_db() db.execute('SELECT * From users WHERE id = %s;', (user_id, )) g.user = db.fetchone()
def test_register(client, app): assert client.get('/auth/register').status_code == 200 response = client.post('/auth/register', data={ 'username': '******', 'password': '******' }) assert 'http://localhost/auth/login' == response.headers['Location'] with app.app_context(): assert get_db().execute( "select * from user where username='******'", ).fetchone() is not None
def get_post(post_id): db = get_db() db.execute( 'SELECT p.id, url, state, level, office, profession, text' ' FROM post p' ' WHERE p.id=%s;', (post_id, )) post = db.fetchone() if post is None: abort(404, "Post id {0} doesn't exist.".format(post_id)) return post
def test_update(client, auth, app): auth.login() assert client.get('/1/update').status_code == 200 client.post('/1/update', data={ 'url': 'http://updated.com', 'state': 'NJ', 'level': '', 'office': 'rep', 'profession': 'baker' }) with app.app_context(): db = get_db() post = db.execute('SELECT * FROM post WHERE id=1').fetchone() assert post['url'] == 'http://updated.com'
def test_create(client, auth, app): auth.login() assert client.get('/create').status_code == 200 client.post('/create', data={ 'url': 'http://candidate.com', 'state': 'NJ', 'level': '', 'office': 'senate', 'profession': '' }) with app.app_context(): db = get_db() count = db.execute('SELECT COUNT(id) FROM post').fetchone()[0] assert count == 2
def login(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] db = get_db() error = None db.execute('SELECT * FROM users WHERE username=%s;', (username, )) user = db.fetchone() if user is None: error = 'Incorrect username.' elif not check_password_hash(user['password'], password): error = 'Incorrect password.' if error is None: session.clear() session['user_id'] = user['id'] return redirect(url_for('index')) flash(error) return render_template('auth/login.html')
def register(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] db = get_db() db.execute('SELECT id from users WHERE username=%s;', (username, )) error = None if not username: error = 'Username required' elif not password: error = 'Password required' elif db.fetchone() is not None: error = 'User {} is already registered.'.format(username) if error is None: db.execute( 'INSERT INTO users (username, password) VALUES (%s,%s);', (username, generate_password_hash(password))) return redirect(url_for('auth.login')) flash(error) return render_template('auth/register.html')
def delete(post_id): get_post(post_id) db = get_db() db.execute('DELETE FROM post WHERE id = %s;', (post_id, )) return redirect(url_for('application.index'))