Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion JWT/jwt-signature-apis-challenges/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ app.post('/jwt/none', (req, res) => { //None endpoint
} else if (jwt_b64_dec.header.alg == 'none') {
secret_key = '';
}
JWT.verify(jwt_token, secret_key, { algorithms: ['none', 'HS256'], complete: true, audience: 'https://127.0.0.1/jwt/none' }, (err, decoded_token) => {
JWT.verify(jwt_token, secret_key, { algorithms: ['HS256'], complete: true, audience: 'https://127.0.0.1/jwt/none' }, (err, decoded_token) => {
if (err) {
res.status(400).json(err);
} else {
Expand Down
2 changes: 2 additions & 0 deletions Python/Flask_Book_Library/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ ENV PASSWORD=1qaz@WSX
# Instalujemy zależności
RUN pip install --no-cache-dir -r requirements.txt

RUN python -m unittest discover -v

# Ustawiamy zmienną środowiskową, aby Flask wiedział, jak uruchomić aplikację
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
Expand Down
124 changes: 124 additions & 0 deletions Python/Flask_Book_Library/project/books/testBooks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
import unittest
from project import db, app
from project.books.models import Book

class TestBookModel(unittest.TestCase):

def setUp(self):
self.app = app.test_client()
self.app_context = app.app_context()
self.app_context.push()
db.create_all()

def tearDown(self):
db.session.remove()
db.drop_all()
self.app_context.pop()

def test_new_book(self):
book = Book(name="Test Book", author="Test Author", year_published=2024, book_type="Fiction")
db.session.add(book)
db.session.commit()
self.assertIsNotNone(book.id)
self.assertEqual(book.name, "Test Book")
self.assertEqual(book.author, "Test Author")
self.assertEqual(book.year_published, 2024)
self.assertEqual(book.book_type, "Fiction")
self.assertEqual(book.status, "available")

def test_modify(self):
book = Book(name="Test Book", author="Test Author", year_published=2024, book_type="Fiction")
db.session.add(book)
db.session.commit()
book_to_update = Book.query.get(book.id)
book_to_update.name = 'New Title'
db.session.commit()
self.assertEqual(book.name, 'New Title')

def test_delete(self):
book = Book(name="Test Book", author="Test Author", year_published=2024, book_type="Fiction")
db.session.add(book)
db.session.commit()
db.session.delete(book)
db.session.commit()
self.assertIsNone(Book.query.get(book.id))

def test_invalid_title(self):
book = Book('', 'Author', 2024, 'Fiction')
with self.assertRaises(Exception):
db.session.add(book)
db.session.commit()

def test_invalid_author(self):
book = Book('Title', '', 2000, 'Fiction')
db.session.add(book)
with self.assertRaises(Exception):
db.session.commit()

def test_invalid_year(self):
book = Book('Tytul', 'Autor', 'year: 2024', 'Fiction')
db.session.add(book)
with self.assertRaises(Exception):
db.session.commit()

def test_invalid_type(self):
book = Book('Tytul', 'Autor', 2024, None)
with self.assertRaises(Exception):
db.session.add(book)
db.session.commit()

def test_duplicate(self):
book1 = Book('Title', 'Author', 2024, 'Fiction')
book2 = Book('Title', 'Author', 2024, 'Fiction')
with self.assertRaises(Exception):
db.session.add(book1)
db.session.add(book2)
db.session.commit()

def test_delete_nonexisting(self):
book1 = Book('Title', 'Author', 2024, 'Fiction')
book2 = Book('Title2', 'Author2', 2025, 'Fiction')
db.session.add(book1)
db.session.commit()
with self.assertRaises(Exception):
db.session.delete(book2)
db.session.commit()

def test_xss(self):
book = Book('Title', '<script>alert("XSS");</script>', 2024, 'Fiction')
db.session.add(book)
db.session.commit()
self.assertNotIn('<script>', book.author)

def test_sqli(self):
book = Book('Title', 'Author\'); DROP TABLE books; --', 2024, 'Fiction')
db.session.add(book)
db.session.commit()
self.assertNotIn('DROP TABLE books', book.author)

def test_long_title(self):
book = Book('T' * 200, 'Author', 2024, 'Fiction')
db.session.add(book)
with self.assertRaises(Exception):
db.session.commit()

def test_long_author(self):
book = Book('Title', 'A' * 200, 2024, 'Fiction')
db.session.add(book)
with self.assertRaises(Exception):
db.session.commit()

def test_big_year(self):
book = Book('Tytul', 'Author', 20000000, 'Fiction')
db.session.add(book)
with self.assertRaises(Exception):
db.session.commit()

def test_add_long_type(self):
book = Book('Tytul', 'Author', 2000, 't' * 100)
db.session.add(book)
with self.assertRaises(Exception):
db.session.commit()

if __name__ == '__main__':
unittest.main()