Example #1
0
def test_guest_login(session, client):
    #try to access non configured site
    site1 = Wifisite.query.get(1)
    track = init_track(site1, guestmac=randomMAC(), apmac=randomMAC())

    #site without email_login config
    url = get_guestlogin_url('email', track.trackid)
    resp = client.get(url)

    assert '404 NOT FOUND' == resp.status, 'Email login not configured site is giving :%s instead of \
                                404 NOT FOUND' % resp.status

    #valid site
    site1.auth_methods = {'auth_email': 1}
    session.commit()
    url = get_guestlogin_url('email', track.trackid)
    resp = client.get(url)

    assert '200 OK' == resp.status, 'Email login configured site is giving :%s instead of \
                                200 OK' % resp.status
    #check if Emailconfig is created
    assert 1 == Emailconfig.query.count(
    ), 'Emailconfig is not created  the first time non configured site \
                                            is visited'

    assert '200 OK' == resp.status, 'Email login configured site is giving :%s instead of \
                                200 OK' % resp.status
    assert 1 == Emailconfig.query.count(
    ), 'Emailconfig is not only  the first time non configured site \
Example #2
0
def test_guest_login2(session, client):
    #form resubmission test of a fresh  device
    site1 = Wifisite.query.get(1)
    guestmac = randomMAC()

    track1 = init_track(site1, guestmac=guestmac, apmac=randomMAC())

    #configure site with email mandatory
    site1.auth_methods = {'auth_email': 1}
    emailconfig = Emailconfig()
    emailconfig.session_limit_control = 1
    emailconfig.data_limit = 500
    emailconfig.time_limit = 400
    emailconfig.siteid = site1.id
    emailconfig.save()

    firstname = fake.first_name()
    lastname = fake.last_name()
    email = fake.email()
    form_data = {'firstname': firstname, 'email': email, 'lastname': lastname}
    url = get_guestlogin_url('email', track1.trackid)
    #first post
    resp = client.post(url, data=form_data)
    #second post
    #simulate client visit after 10minues
    track1.timestamp = arrow.utcnow().replace(minutes=-10).naive
    track1.save()

    track2 = init_track(site1, guestmac=guestmac, apmac=randomMAC())
    assert track2.id == 2, 'Second track not created'

    url = get_guestlogin_url('email', track2.trackid)
    resp = client.get(url)
    auth_url = get_guestauth_url(site1, track2.trackid)
    assert auth_url in resp.location, 'Valid second login not leading auth URL:%s instead\
                                    goes to :%s' % (auth_url, resp.location)

    #check all values in DB

    ##---check emailauth
    emailauth = Emailauth.query.get(1)
    assert emailauth.state == LOGINAUTH_REPEATED , \
        'login state is :%s not LOGINAUTH_FIRST'%emailauth.state
    assert emailauth.data_limit == 500
    assert emailauth.time_limit == 400
    #check if startime is reset
    assert arrow.get(emailauth.starttime) < arrow.utcnow()
    assert arrow.get(emailauth.starttime) > arrow.utcnow().replace(seconds=-10)

    ##--check guesttrack
    track = Guesttrack.query.get(2)
    assert track.state == GUESTTRACK_AUTH , \
        'track state is :%s not GUESTTRACK_AUTH'%emailauth.state
    assert track.loginstat == {'num_visits': 1, 'relogin': 1 ,'auth_email':1} \
                    ,'Check loginstat'
    assert track.loginauthid == 1, 'check if track is assigned to loginauth'
Example #3
0
def test_guest_login1(session, client):
    #form submission test of a fresh  device
    site1 = Wifisite.query.get(1)
    track = init_track(site1, guestmac=randomMAC(), apmac=randomMAC())

    #configure site with email mandatory
    site1.auth_methods = {'auth_email': 1}
    emailconfig = Emailconfig()
    emailconfig.data_limit = 500
    emailconfig.time_limit = 400
    emailconfig.siteid = site1.id
    emailconfig.save()

    #emptry post should give same page
    url = get_guestlogin_url('email', track.trackid)
    resp = client.post(url, data={})
    assert None == resp.location, ' email page submited with empty form is not giving same page '

    firstname = fake.first_name()
    lastname = fake.last_name()
    email = fake.email()
    form_data = {'firstname': firstname, 'email': email, 'lastname': lastname}
    url = get_guestlogin_url('email', track.trackid)
    resp = client.post(url, data=form_data)
    auth_url = get_guestauth_url(site1, track.trackid)
    assert auth_url in resp.location, 'Valid email form submission not leading to auth URL:%s instead\
                                    goes to :%s' % (auth_url, resp.location)

    newguest = Guest.query.get(1)
    assert firstname == newguest.firstname, "Guest firstname don't match"
    assert email == newguest.email, "Guest email don't match"
    assert site1.id == newguest.siteid, "Guest siteid don't match"

    #check all values in DB

    ##---check emailauth
    emailauth = Emailauth.query.get(1)
    assert emailauth.state == LOGINAUTH_FIRST , \
        'login state is :%s not LOGINAUTH_FIRST'%emailauth.state
    assert emailauth.data_limit == 500
    assert emailauth.time_limit == 400
    #check if startime is reset
    assert arrow.get(emailauth.starttime) < arrow.utcnow()
    assert arrow.get(emailauth.starttime) > arrow.utcnow().replace(seconds=-10)

    ##--check guesttrack
    track = Guesttrack.query.get(1)
    assert track.state == GUESTTRACK_AUTH , \
        'track state is :%s not GUESTTRACK_AUTH'%emailauth.state
    assert track.loginstat == {
        'newguest': 1,
        'num_visits': 1,
        'auth_email': 1
    }, 'Check loginstat'
    assert track.loginauthid == 1, 'check if track is assigned to loginauth'
Example #4
0
def test_handle_override1(
    session,
    client,
):
    #test all negetive cases
    site1 = Wifisite.query.get(1)
    guestmac = randomMAC()
    track = init_track(site1, guestmac=guestmac, apmac=randomMAC())

    #configure site with email mandatory
    site1.auth_methods = {'auth_email': 1}
    emailconfig = Emailconfig()
    emailconfig.data_limit = 500
    emailconfig.time_limit = 400
    emailconfig.siteid = site1.id
    emailconfig.session_limit_control = 1
    emailconfig.save()

    #try to visit the site with fresh device
    overrideurl = url_for('unifispot.modules.email.guest_override',
                          trackid=track.trackid)
    assert '404 NOT FOUND' == client.get(
        overrideurl).status, 'Fresh device not throwing 404'

    #guest visited once trying withour first login
    url = get_guestlogin_url('email', track.trackid)
    resp = client.get(url)
    assert '404 NOT FOUND' == client.get(
        overrideurl).status, 'Fresh device not throwing 404'

    #login a guest
    track2 = init_track(site1, guestmac=guestmac, apmac=randomMAC())
    track2.timestamp = arrow.utcnow().replace(days=-1).naive
    track2.save()
    firstname = fake.first_name()
    lastname = fake.last_name()
    email = fake.email()
    form_data = {'firstname': firstname, 'email': email, 'lastname': lastname}
    url = get_guestlogin_url('email', track2.trackid)
    #first post
    resp = client.post(url, data=form_data)
    #try override URL
    resp = client.get(overrideurl)
    assert '200 OK' == resp.status, \
                    'Already loggedin device not throwing 200'
    assert 'Looks like your quota have expired' in resp.data, \
                    'Quota expired message not seen'
Example #5
0
def test_get_loginauth_validator7(session, client, populate_monthlysessions):
    #monthly limit validation
    site1 = Wifisite.query.get(1)
    emailconfig = Emailconfig.query.get(1)
    device = Device.query.get(1)

    track2 = init_track(site1, guestmac=device.devicemac, apmac=randomMAC())
    url = get_guestlogin_url('email', track2.trackid)

    #time expired,  data expired
    emailconfig.data_limit = 500
    emailconfig.time_limit = 50
    emailconfig.save()
    resp = client.get(url)
    assert '/email/override/' in resp.location, 'Invalid 2nd login not leading override\
                            instead goes to :%s' % (resp.location)

    #time available,  data expired
    emailconfig.data_limit = 500
    emailconfig.time_limit = 500
    emailconfig.save()
    resp = client.get(url)
    assert '/email/override/' in resp.location, 'Invalid 2nd login not leading override\
                            instead goes to :%s' % (resp.location)
    #time expired,  data available
    emailconfig.data_limit = 5000
    emailconfig.time_limit = 50
    emailconfig.save()
    resp = client.get(url)
    assert '/email/override/' in resp.location, 'Invalid 2nd login not leading override\
                            instead goes to :%s' % (resp.location)

    #time unlimited,  data expired
    emailconfig.data_limit = 500
    emailconfig.time_limit = 0
    emailconfig.save()
    resp = client.get(url)
    assert '/email/override/' in resp.location, 'Invalid 2nd login not leading override\
                            instead goes to :%s' % (resp.location)
    #time expired,  data unlimited
    emailconfig.data_limit = 0
    emailconfig.time_limit = 50
    emailconfig.save()
    resp = client.get(url)
    assert '/email/override/' in resp.location, 'Invalid 2nd login not leading override\
                            instead goes to :%s' % (resp.location)

    #check DB level values
    track2 = Guesttrack.query.get(track2.id)
    assert track2.state == GUESTTRACK_PRELOGIN, 'track2 state is not GUESTTRACK_PRELOGIN but\
                        %s after redirection to override' % track2.state
Example #6
0
def test_get_loginauth_validator6(session, client, populate_dailysessions):
    site1 = Wifisite.query.get(1)
    emailconfig = Emailconfig.query.get(1)
    device = Device.query.get(1)

    #time expired,  data expired
    emailconfig.data_limit = 600
    emailconfig.time_limit = 60
    emailconfig.save()

    track2 = init_track(site1, guestmac=device.devicemac, apmac=randomMAC())
    url = get_guestlogin_url('email', track2.trackid)
    resp = client.get(url)
    assert '/email/override/' in resp.location, 'Invalid 2nd login not leading override\
                            instead goes to :%s' % (resp.location)
Example #7
0
def test_get_loginauth_validator2(session, client, populate_dailysessions):
    site1 = Wifisite.query.get(1)
    emailconfig = Emailconfig.query.get(1)
    device = Device.query.get(1)

    #both limits are unlimited
    emailconfig.data_limit = 0
    emailconfig.time_limit = 0
    emailconfig.save()

    track2 = init_track(site1, guestmac=device.devicemac, apmac=randomMAC())
    url = get_guestlogin_url('email', track2.trackid)
    resp = client.get(url)
    auth_url = get_guestauth_url(site1, track2.trackid)
    assert auth_url in resp.location, 'Valid second login not leading auth URL:%s instead\
                                    goes to :%s' % (auth_url, resp.location)
Example #8
0
def populate_monthlysessions(app, session, client):
    #login a guest and then create a bunch of sessions
    #on a day and the day before
    site1 = Wifisite.query.get(1)
    guestmac = randomMAC()

    track1 = init_track(site1, guestmac=guestmac, apmac=randomMAC())

    #configure site with email mandatory
    site1.auth_methods = {'auth_email': 1}
    emailconfig = Emailconfig()
    emailconfig.session_limit_control = 2
    emailconfig.data_limit = 500
    emailconfig.time_limit = 400
    emailconfig.siteid = site1.id
    emailconfig.save()

    firstname = fake.first_name()
    lastname = fake.last_name()
    email = fake.email()
    form_data = {'firstname': firstname, 'email': email, 'lastname': lastname}
    url = get_guestlogin_url('email', track1.trackid)
    #first post
    resp = client.post(url, data=form_data)
    #get emailauth
    emailauth = Emailauth.query.get(1)
    #create a bunch of sessions
    daytime = arrow.utcnow().floor('month').replace(days=15)  #15th of month
    track1.timestamp = daytime.replace(days=-3).naive
    track1.save()
    for i in range(10):
        #sessions at 15th 12th 9th 6th 3rd of this month
        # and 5 days last month
        time = daytime.replace(days=-(3 * i + 1)).naive
        print time
        track = init_track(site1, guestmac=guestmac, apmac=randomMAC())
        track.timestamp = time
        track.save()
        sess = Guestsession(siteid=site1.id,
                            deviceid=track.deviceid,
                            loginauthid=emailauth.id)
        sess.starttime = time
        sess.data_used = 100
        sess.duration = 10
        sess.save()