Esempio n. 1
0
 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')
Esempio n. 2
0
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)
Esempio n. 3
0
 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')
Esempio n. 4
0
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)
Esempio n. 5
0
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)
Esempio n. 6
0
    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)
Esempio n. 7
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)
Esempio n. 8
0
 def test_search_items_in_shop(self):
     items_founded = SearchLogic.search_items_in_shop('My Shop')
     self.assertEqual(len(items_founded), 4)
Esempio n. 9
0
 def test_search_item_in_shop(self):
     items_founded = SearchLogic.search_item_in_shop('My Shop', 'banana')
     self.assertTrue(items_founded.name == 'banana')