def test_get_filter(self):
        fltr = sbf(['sha512', 'md5', 'sha1'],
                   bit_mapping=4,
                   hash_salt_path="../hash_salt/hash_salt")
        sbf_fltr = fltr.get_filter()

        self.assertEqual(np.count_nonzero(sbf_fltr), 0)
    def test_insert(self):
        fltr = sbf(['sha512', 'md5', 'sha1'],
                   bit_mapping=4,
                   hash_salt_path="../hash_salt/hash_salt")
        fltr.insert("51.8989#-8.4825", 1)

        self.assertNotEqual(np.count_nonzero(fltr.get_filter()), 0)
    def test_get_stats(self):
        fltr = sbf(['sha512', 'md5', 'sha1'],
                   bit_mapping=4,
                   hash_salt_path="../hash_salt/hash_salt")
        fltr_stats = fltr.get_stats()

        self.assertEqual(int(fltr_stats['Number of Cells']), pow(2, 4))
        self.assertEqual(ast.literal_eval(fltr_stats['Hash Family']),
                         ['sha512', 'md5', 'sha1'])
def update_hash_family():
    if request.method == 'POST':
        hash_family, hf_options = _hash_functions(request.form.getlist('hf'))

        app.my_sbf.clear_filter()
        app.my_sbf = sbf(request.form.getlist('hf'))
        _set_session()

        return render_template('edit-details.html',
                               hash_family=Markup(hash_family),
                               hf_options=Markup(hf_options))
def reset_hash_family():
    if request.method == 'POST':
        default_hash_family = ['md5', 'sha256', 'sha1']
        hash_family, hf_options = _hash_functions(default_hash_family)

        app.my_sbf.clear_filter()
        app.my_sbf = sbf(default_hash_family)
        _set_session()

        return render_template('edit-details.html',
                               hash_family=Markup(hash_family),
                               hf_options=Markup(hf_options))
def index():
    app.my_sbf = sbf(HASH_FAMILY)

    _set_session()

    return render_template(
        'index.html',
        sbf_table=Markup(session.get('sbf_table')),
        sbf_stats=Markup(session.get('sbf_stats')),
        import_message=Markup(session.get('import_message')),
        area_link=Markup(session.get('area_link')),
        check_result_table=Markup(session.get('check_result_table')),
        check_result_conclusion=Markup(session.get('check_result_conclusion')))
    def test_check(self):
        fltr = sbf(['sha512', 'md5', 'sha1'],
                   bit_mapping=4,
                   hash_salt_path="../hash_salt/hash_salt")
        fltr.insert("51.8989#-8.4825", 1)
        fltr_check_positive = fltr.check("51.8989#-8.4825")
        fltr_check_negative = fltr.check("51.8980#-8.4845")

        areas_1, areas_2 = [], []
        for i in ['sha512', 'md5', 'sha1']:
            areas_1.append(fltr_check_positive[i][1])
            areas_2.append(fltr_check_negative[i][1])

        self.assertEqual(min(int(m) for m in areas_1), 1)
        self.assertEqual(min(int(m) for m in areas_2), 0)
 def test_invalid_hash_family(self):
     with self.assertRaisesRegex(AttributeError, "Invalid hash family."):
         sbf(['sha512', 'md5', 'sha'])
 def test_hash_salt_path(self):
     with self.assertRaisesRegex(IOError, "Error opening hash salts"):
         sbf(['sha512', 'md5', 'sha1'])
 def test_invalid_bit_mapping(self):
     with self.assertRaisesRegex(AttributeError, "Invalid bit mapping."):
         sbf(['sha512', 'md5', 'sha1'], bit_mapping=65)
from flask import Flask, render_template, Markup, session, request
from scripts.layout import Layout
from scripts.sbf import sbf

app = Flask(__name__)

app.secret_key = 'spacial bloom filter'

HASH_FAMILY = ['md5', 'sha1', 'sha256']

format_layout = Layout(10)
app.my_sbf = sbf(HASH_FAMILY)


@app.route('/index')
@app.route('/')
def index():
    app.my_sbf = sbf(HASH_FAMILY)

    _set_session()

    return render_template(
        'index.html',
        sbf_table=Markup(session.get('sbf_table')),
        sbf_stats=Markup(session.get('sbf_stats')),
        import_message=Markup(session.get('import_message')),
        area_link=Markup(session.get('area_link')),
        check_result_table=Markup(session.get('check_result_table')),
        check_result_conclusion=Markup(session.get('check_result_conclusion')))