def test_search_item_by_name(self): items_founded = SearchLogic.search_by_name('banana') self.assertTrue(items_founded[0].name == 'banana') items_founded = SearchLogic.search_by_name('milk') self.assertTrue(items_founded[0].name == 'milk') items_founded = SearchLogic.search_by_name('steak') self.assertTrue(items_founded[0].name == 'steak')
def search_shop(request): if request.method == 'GET': login = request.COOKIES.get('login_hash') topbar = loader.render_to_string('components/Topbar.html', context=None) words = [] if login is not None: username = Consumer.loggedInUsers.get(login) if username is not None: # html of a logged in user topbar = loader.render_to_string( 'components/TopbarLoggedIn.html', context={'username': username}) name = request.GET.get('name') suspect_sql_injection = LoggerLogic.identify_sql_injection( name, "SEARCH SHOP") if suspect_sql_injection: return HttpResponse(LoggerLogic.MESSAGE_SQL_INJECTION) shop = SearchLogic.search_shop(name) if shop is not False: context = {'topbar': topbar} return render(request, 'shop.html', context) else: words = SearchLogic.get_similar_words(name) words = words[:5] context = {'topbar': topbar, 'words': words} return render(request, 'ItemsNotFound.html', context)
def test_search_item_by_keywords(self): items_founded = SearchLogic.search_by_keywords('good') self.assertTrue(items_founded[0].name == 'milk') self.assertTrue(items_founded[0].category == 'diary') items_founded = SearchLogic.search_by_keywords('bad') self.assertTrue(items_founded[0].name == 'steak') self.assertTrue(items_founded[0].category == 'meat') items_founded = SearchLogic.search_by_keywords('best') self.assertTrue(items_founded[0].name == 'banana') self.assertTrue(items_founded[0].category == 'fruit')
def search_items_in_shop(request): if request.method == 'GET': login = request.COOKIES.get('login_hash') topbar = loader.render_to_string('components/Topbar.html', context=None) if login is not None: username = Consumer.loggedInUsers.get(login) if username is not None: # html of a logged in user topbar = loader.render_to_string( 'components/TopbarLoggedIn.html', context={'username': username}) shop_name = request.GET.get('shop_name') event = "SEARCH ITEMS IN SHOP" suspect_sql_injection = LoggerLogic.identify_sql_injection( shop_name, event) if suspect_sql_injection: return HttpResponse(LoggerLogic.MESSAGE_SQL_INJECTION) items = SearchLogic.search_items_in_shop(shop_name) if items is not False: context = {'topbar': topbar, 'items': items} return render(request, 'SearchView.html', context)
def get_home(request): if request.method == 'GET': login = request.COOKIES.get('login_hash') guest = request.COOKIES.get('guest_hash') items = SearchLogic.get_top_five_ranked_items() for item in items: shop_name = item.shop_name item.price = (round(item.price * item_discount(item.id, shop_name) * category_discount(item.category, shop_name), 2)) context = {'topbar': Topbar_Navbar.get_top_bar(login), 'navbar': Topbar_Navbar.get_nav_bar(login, guest), 'items': items} return render(request, 'index.html', context=context)
def test_torture2(self): # Adding Users status = UsersLogic.register( RegisteredUser('u1ser1u1ser1', 'wxde12exd12')) self.assertTrue(status) status = UsersLogic.register(RegisteredUser('u2ser2u2ser2', '34c124c1')) self.assertTrue(status) status = UsersLogic.register( RegisteredUser('u3ser3u3ser3', '1c241c24c1')) self.assertTrue(status) status = UsersLogic.register( RegisteredUser('u4ser4u4ser4', '3214v132v4132')) self.assertTrue(status) status = UsersLogic.register(RegisteredUser('u5seru5ser', '12121212')) self.assertTrue(status) # Adding System Managers status = UsersLogic.add_system_manager( SystemManager('sys1sys1', 'POWER123')) self.assertTrue(status) # Creating Shops status = ShopLogic.create_shop(Shop('myShop1', 'Active'), 'u1ser1u1ser1') self.assertTrue(status) status = ShopLogic.create_shop(Shop('myShop2', 'Active'), 'u2ser2u2ser2') self.assertTrue(status) status = UsersLogic.add_owner('u1ser1u1ser1', Owner('u3ser3u3ser3', 'myShop1', 0)) self.assertTrue(status) owner = Owners.get_owner('u1ser1u1ser1', 'myShop1') status = UsersLogic.add_manager( owner.username, StoreManager('u4ser4u4ser4', 'myShop1', 1, 1, 1, 1, 1, 1, 1, 1)) status = UsersLogic.add_manager( 'u2ser2u2ser2', StoreManager('u4ser4u4ser4', 'myShop2', 1, 1, 1, 1, 1, 1, 1, 1)) manager = StoreManagers.get_store_manager('u4ser4u4ser4', 'myShop1') self.assertEqual(manager.permission_reply_messages, 1) ItemsLogic.add_item_to_shop( Item(None, 'myShop1', 'banana', 'fruits', 'fruit;healthy;yellow', 4.90, 300, 'regular', None, 0, 0, 0), 'u4ser4u4ser4') ItemsLogic.add_item_to_shop( Item(None, 'myShop2', 'doll', 'toys', 'fun', 30, 10, 'regular', None, 0, 0, 0), 'u2ser2u2ser2') ItemsLogic.add_item_to_shop( Item(None, 'myShop1', 'soda', 'drinks', 'good', 4.90, 20, 'regular', None, 0, 0, 0), 'u1ser1u1ser1') ItemsLogic.add_item_to_shop( Item(None, 'myShop2', 'cucumber', 'vegetables', 'fun', 4.90, 300, 'regular', None, 0, 0, 0), 'u4ser4u4ser4') ItemsLogic.add_item_to_shop( Item(None, 'myShop1', 'vodka', 'drinks', 'bad;for;your;health', 70, 2, 'regular', None, 0, 0, 0), 'u3ser3u3ser3') items = SearchLogic.search_by_name('banana') self.assertEqual(items[0].quantity, 300) self.assertEqual(items[0].price, 4.90) self.assertEqual(len(items), 1) items = SearchLogic.search_by_category('drinks') self.assertEqual(items[0].quantity, 20) self.assertEqual(items[1].price, 70) self.assertEqual(len(items), 2) items = SearchLogic.search_by_keywords('fun') self.assertEqual(items[0].quantity, 10) self.assertEqual(items[1].price, 4.90) self.assertEqual(len(items), 2) items = SearchLogic.search_items_in_shop('myShop2') self.assertEqual(items[0].name, 'doll') self.assertEqual(items[1].name, 'cucumber') self.assertEqual(len(items), 2) MessagingLogic.send_message_from_shop( 'u4ser4u4ser4', Message(None, 'myShop1', 'u5seru5ser', 'Nadav is our lord and savior')) messages = MessagingLogic.get_all_messages('u5seru5ser') self.assertEqual(len(messages), 1) self.assertEqual(messages[0].content, 'Nadav is our lord and savior') MessagingLogic.send_message( Message(None, 'u5seru5ser', 'myShop1', 'Hello Shop')) messages = MessagingLogic.get_all_shop_messages( 'u4ser4u4ser4', 'myShop1') self.assertEqual(len(messages), 1) self.assertEqual(messages[0].content, 'Hello Shop') MessagingLogic.send_message_from_shop( 'u1ser1u1ser1', Message(None, 'myShop1', 'myShop2', 'Hello Shop2')) messages = MessagingLogic.get_all_shop_messages( 'u2ser2u2ser2', 'myShop2') self.assertEqual(len(messages), 1) self.assertEqual(messages[0].content, 'Hello Shop2') MessagingLogic.send_message( Message(None, 'u1ser1u1ser1', 'u3ser3u3ser3', 'Shop2 Sucks!')) messages = MessagingLogic.get_all_messages('u3ser3u3ser3') self.assertEqual(messages[0].content, 'Shop2 Sucks!') UsersLogic.close_shop('u1ser1u1ser1', 'myShop1') items = SearchLogic.search_by_name('banana') self.assertEqual(len(items), 0)
def search_item(request): if request.method == 'GET': login = request.COOKIES.get('login_hash') guest = request.COOKIES.get('guest') topbar = Topbar_Navbar.get_top_bar(login) navbar = Topbar_Navbar.get_nav_bar(login, guest) search_by = request.GET.get('searchBy') items = [] words = [] event = "SEARCH ITEM" if search_by == 'name': name = request.GET.get('name') suspect_sql_injection = LoggerLogic.identify_sql_injection( name, event) if suspect_sql_injection: return HttpResponse(LoggerLogic.MESSAGE_SQL_INJECTION) items = SearchLogic.search_by_name(name) for item in items: shop_name = item.shop_name item.price = (round( item.price * item_discount(item.id, shop_name) * category_discount(item.category, shop_name), 2)) if len(items) != 0: context = { 'topbar': topbar, 'items': items, 'navbar': navbar, 'len': len(items) } return render(request, 'SearchView.html', context) else: words = SearchLogic.get_similar_words(name) words = words[:5] items_names_that_exists = [] for each_item in words: item = SearchLogic.search_by_name(each_item) if len(item) != 0: items_names_that_exists.append(each_item) context = { 'topbar': topbar, 'items': items_names_that_exists, 'navbar': navbar, 'type': 'name' } if len(items_names_that_exists) != 0: return render(request, 'ItemsNotFound.html', context) else: return render(request, 'ItemNotFoundNoSuggestions.html', context) if search_by == 'category': category = request.GET.get('category') suspect_sql_injection = LoggerLogic.identify_sql_injection( category, event) if suspect_sql_injection: return HttpResponse(LoggerLogic.MESSAGE_SQL_INJECTION) items = SearchLogic.search_by_category(request.GET.get('category')) for item in items: shop_name = item.shop_name item.price = (round( item.price * item_discount(item.id, shop_name) * category_discount(item.category, shop_name), 2)) if len(items) != 0: context = { 'topbar': topbar, 'items': items, 'navbar': navbar, 'len': len(items) } return render(request, 'SearchView.html', context) else: words = SearchLogic.get_similar_words(category) words = words[:5] items_names_that_exists = [] for each_item in words: item = SearchLogic.search_by_category(each_item) if len(item) != 0: items_names_that_exists.append(each_item) context = { 'topbar': topbar, 'items': items_names_that_exists, 'navbar': navbar, 'type': 'category' } if len(items_names_that_exists) != 0: return render(request, 'ItemsNotFound.html', context) else: return render(request, 'ItemNotFoundNoSuggestions.html', context) if search_by == 'keywords': keywords = request.GET.get('keywords') suspect_sql_injection = LoggerLogic.identify_sql_injection( keywords, event) if suspect_sql_injection: return HttpResponse(LoggerLogic.MESSAGE_SQL_INJECTION) items = SearchLogic.search_by_keywords(keywords) for item in items: shop_name = item.shop_name item.price = (round( item.price * item_discount(item.id, shop_name) * category_discount(item.category, shop_name), 2)) if len(items) != 0: context = { 'topbar': topbar, 'items': items, 'navbar': navbar, 'len': len(items) } return render(request, 'SearchView.html', context) else: words = SearchLogic.get_similar_words(keywords) words = words[:5] items_names_that_exists = [] for each_item in words: item = SearchLogic.search_by_keywords(each_item) if len(item) != 0: items_names_that_exists.append(each_item) context = { 'topbar': topbar, 'items': items_names_that_exists, 'navbar': navbar, 'type': 'keywords' } if len(items_names_that_exists) != 0: return render(request, 'ItemsNotFound.html', context) else: return render(request, 'ItemNotFoundNoSuggestions.html', context)
def test_search_items_in_shop(self): items_founded = SearchLogic.search_items_in_shop('My Shop') self.assertEqual(len(items_founded), 4)
def test_search_item_in_shop(self): items_founded = SearchLogic.search_item_in_shop('My Shop', 'banana') self.assertTrue(items_founded.name == 'banana')