def test_guest_portal3(session): """Same user visiting multiple sites """ site1 = Wifisite.query.filter_by(unifi_id="site1").first() site2 = Wifisite.query.filter_by(unifi_id="site2").first() site3 = Wifisite.query.filter_by(unifi_id="site3").first() site1.auth_method = AUTH_TYPE_SOCIAL + AUTH_TYPE_SMS + AUTH_TYPE_EMAIL + AUTH_TYPE_VOUCHER site2.auth_method = AUTH_TYPE_SOCIAL + AUTH_TYPE_SMS + AUTH_TYPE_EMAIL + AUTH_TYPE_VOUCHER site3.auth_method = AUTH_TYPE_SOCIAL + AUTH_TYPE_SMS + AUTH_TYPE_EMAIL + AUTH_TYPE_VOUCHER mac = randomMAC() ap_mac1 = randomMAC() ap_mac2 = randomMAC() ap_mac3 = randomMAC() url1 = get_guest_url(site1, mac, ap_mac1, demo=0) url2 = get_guest_url(site2, mac, ap_mac2, demo=0) url3 = get_guest_url(site3, mac, ap_mac3, demo=0) check_multi_login_page(url1) check_multi_login_page(url1) check_multi_login_page(url2) check_multi_login_page(url2) check_multi_login_page(url3) check_multi_login_page(url3) assert ( 2 == Guesttrack.query.filter_by(site_id=site1.id).count() ), "Same device visiting 3 sites twice, 2 Guesttrack PER SITE needed" assert ( 2 == Guesttrack.query.filter_by(site_id=site2.id).count() ), "Same device visiting 3 sites twice, 2 Guesttrack PER SITE needed" assert ( 2 == Guesttrack.query.filter_by(site_id=site3.id).count() ), "Same device visiting 3 sites twice, 2 Guesttrack PER SITE needed" assert 3 == Device.query.count(), "Same device visiting 3 sites, 3 Device needed"
def test_guest_portal3(session): '''Same user visiting multiple sites ''' site1 = Wifisite.query.filter_by(unifi_id='site1').first() site2 = Wifisite.query.filter_by(unifi_id='site2').first() site3 = Wifisite.query.filter_by(unifi_id='site3').first() site1.auth_method = AUTH_TYPE_SOCIAL + AUTH_TYPE_SMS + AUTH_TYPE_EMAIL +AUTH_TYPE_VOUCHER site2.auth_method = AUTH_TYPE_SOCIAL + AUTH_TYPE_SMS + AUTH_TYPE_EMAIL +AUTH_TYPE_VOUCHER site3.auth_method = AUTH_TYPE_SOCIAL + AUTH_TYPE_SMS + AUTH_TYPE_EMAIL +AUTH_TYPE_VOUCHER mac = randomMAC() ap_mac1 = randomMAC() ap_mac2 = randomMAC() ap_mac3 = randomMAC() url1 = get_guest_url(site1,mac,ap_mac1,demo=0) url2 = get_guest_url(site2,mac,ap_mac2,demo=0) url3 = get_guest_url(site3,mac,ap_mac3,demo=0) check_multi_login_page(url1) check_multi_login_page(url1) check_multi_login_page(url2) check_multi_login_page(url2) check_multi_login_page(url3) check_multi_login_page(url3) assert 2 == Guesttrack.query.filter_by(site_id=site1.id).count(), "Same device visiting 3 sites twice, 2 Guesttrack PER SITE needed" assert 2 == Guesttrack.query.filter_by(site_id=site2.id).count(), "Same device visiting 3 sites twice, 2 Guesttrack PER SITE needed" assert 2 == Guesttrack.query.filter_by(site_id=site3.id).count(), "Same device visiting 3 sites twice, 2 Guesttrack PER SITE needed" assert 3 == Device.query.count(), "Same device visiting 3 sites, 3 Device needed"
def test_guest_portal1(session): '''Check if configuring different auth_methods gives out proper landing pages''' site1 = Wifisite.query.filter_by(id=1).first() mac = randomMAC() ap_mac = randomMAC() site1.auth_method = AUTH_TYPE_SOCIAL + AUTH_TYPE_SMS + AUTH_TYPE_EMAIL +AUTH_TYPE_VOUCHER db.session.commit() url = get_guest_url(site1,mac,ap_mac,demo=0) check_multi_login_page(url) site1.auth_method = AUTH_TYPE_SOCIAL db.session.commit() url = get_guest_url(site1,mac,ap_mac,demo=0) check_facebook_login_page(url) site1.auth_method = AUTH_TYPE_SMS db.session.commit() url = get_guest_url(site1,mac,ap_mac,demo=0) check_phone_login_page(url) site1.auth_method = AUTH_TYPE_EMAIL db.session.commit() url = get_guest_url(site1,mac,ap_mac,demo=0) check_email_login_page(url) site1.auth_method = AUTH_TYPE_VOUCHER db.session.commit() url = get_guest_url(site1,mac,ap_mac,demo=0) check_voucher_login_page(url)
def test_guest_portal1(session): """Check if configuring different auth_methods gives out proper landing pages""" site1 = Wifisite.query.filter_by(id=1).first() mac = randomMAC() ap_mac = randomMAC() site1.auth_method = AUTH_TYPE_SOCIAL + AUTH_TYPE_SMS + AUTH_TYPE_EMAIL + AUTH_TYPE_VOUCHER db.session.commit() url = get_guest_url(site1, mac, ap_mac, demo=0) check_multi_login_page(url) site1.auth_method = AUTH_TYPE_SOCIAL db.session.commit() url = get_guest_url(site1, mac, ap_mac, demo=0) check_facebook_login_page(url) site1.auth_method = AUTH_TYPE_SMS db.session.commit() url = get_guest_url(site1, mac, ap_mac, demo=0) check_phone_login_page(url) site1.auth_method = AUTH_TYPE_EMAIL db.session.commit() url = get_guest_url(site1, mac, ap_mac, demo=0) check_email_login_page(url) site1.auth_method = AUTH_TYPE_VOUCHER db.session.commit() url = get_guest_url(site1, mac, ap_mac, demo=0) check_voucher_login_page(url)
def test_facebook_login1(session): '''Test facebook_login view with in valid parameters ''' site1 = Wifisite.query.filter_by(unifi_id='site1').first() site1.auth_method = AUTH_TYPE_SOCIAL mac = randomMAC() ap_mac1 = randomMAC() url1 = get_guest_url(site1,mac,ap_mac1,1) #invalid guestrack id check_404(url_for('guest.facebook_login',track_id=str(uuid.uuid4()))) #test valid trackid but no session track_id = str(uuid.uuid4()) guest_track = Guesttrack(ap_mac=ap_mac1,device_mac=mac,site=site1,state=GUESTRACK_INIT,orig_url='',track_id=track_id) db.session.add(guest_track) db.session.commit() check_404(url_for('guest.facebook_login',track_id=track_id)) #Create device guest_device = Device(mac=mac,site=site1,state=DEVICE_INIT) site1.devices.append(guest_device) db.session.add(guest_device) db.session.commit() check_facebook_login_page(url_for('guest.facebook_login',track_id=track_id))
def test_authorize_guest1(session): ''' authorize_guest with invalid parameters ''' site1 = Wifisite.query.filter_by(unifi_id='site1').first() site1.auth_method = AUTH_TYPE_SOCIAL + AUTH_TYPE_SMS + AUTH_TYPE_EMAIL +AUTH_TYPE_VOUCHER mac = randomMAC() ap_mac1 = randomMAC() url1 = get_guest_url(site1,mac,ap_mac1,1) #invalid guestrack id check_404(url_for('guest.authorize_guest',track_id=str(uuid.uuid4()))) #test valid trackid but no device track_id = str(uuid.uuid4()) guest_track = Guesttrack(ap_mac=ap_mac1,device_mac=mac,site=site1,state=GUESTRACK_INIT,orig_url='',track_id=track_id) db.session.add(guest_track) db.session.commit() check_404(url_for('guest.authorize_guest',track_id=track_id)) #Create device but not authorized guest_device = Device(mac=mac,site=site1,state=DEVICE_INIT) site1.devices.append(guest_device) db.session.add(guest_device) guest_track.state = GUESTRACK_NO_AUTH guest_device.state = DEVICE_AUTH db.session.commit() check_404(url_for('guest.authorize_guest',track_id=track_id)) #ensure that no sessions are created assert 0 == Guestsession.query.count(),"Guestsessions are created even though authorize_guest is not called properly"
def test_facebook_login1(session): """Test facebook_login view with in valid parameters """ site1 = Wifisite.query.filter_by(unifi_id="site1").first() site1.auth_method = AUTH_TYPE_SOCIAL mac = randomMAC() ap_mac1 = randomMAC() url1 = get_guest_url(site1, mac, ap_mac1, 1) # invalid guestrack id check_404(url_for("guest.facebook_login", track_id=str(uuid.uuid4()))) # test valid trackid but no session track_id = str(uuid.uuid4()) guest_track = Guesttrack( ap_mac=ap_mac1, device_mac=mac, site=site1, state=GUESTRACK_INIT, orig_url="", track_id=track_id ) db.session.add(guest_track) db.session.commit() check_404(url_for("guest.facebook_login", track_id=track_id)) # Create device guest_device = Device(mac=mac, site=site1, state=DEVICE_INIT) site1.devices.append(guest_device) db.session.add(guest_device) db.session.commit() check_facebook_login_page(url_for("guest.facebook_login", track_id=track_id))
def test_social_login1(session): """Test social_login view with in valid parameters and non authorized device """ site1 = Wifisite.query.filter_by(unifi_id="site1").first() site1.auth_method = AUTH_TYPE_SOCIAL mac = randomMAC() ap_mac1 = randomMAC() url1 = get_guest_url(site1, mac, ap_mac1, 1) # invalid guestrack id check_404(url_for("guest.social_login", track_id=str(uuid.uuid4()))) # test valid trackid but no session track_id = str(uuid.uuid4()) guest_track = Guesttrack( ap_mac=ap_mac1, device_mac=mac, site=site1, state=GUESTRACK_INIT, orig_url="", track_id=track_id ) db.session.add(guest_track) db.session.commit() check_404(url_for("guest.social_login", track_id=track_id)) # Create device guest_device = Device(mac=mac, site=site1, state=DEVICE_INIT) site1.devices.append(guest_device) db.session.add(guest_device) db.session.commit() check_url_responce(url_for("guest.social_login", track_id=track_id), "Login Using Facebook") # validate guesttrack guest_track = Guesttrack.query.first() assert GUESTRACK_SOCIAL_PREAUTH == guest_track.state, "Guesttrack state is not GUESTRACK_SOCIAL_PREAUTH"
def test_authorize_guest2(session): """ authorize_guest check if parameters are correctly configured """ # create a guest visitor site1 = Wifisite.query.filter_by(id=1).first() mac = randomMAC() ap_mac = randomMAC() site1.auth_method = AUTH_TYPE_SOCIAL + AUTH_TYPE_SMS + AUTH_TYPE_EMAIL + AUTH_TYPE_VOUCHER db.session.commit() url = get_guest_url(site1, mac, ap_mac, demo=0) check_multi_login_page(url) guest_track = Guesttrack.query.first() # authorize session guest_track.state = GUESTRACK_SOCIAL_AUTH auth_url = url_for("guest.authorize_guest", track_id=guest_track.track_id) result = current_app.test_client().get(auth_url, follow_redirects=True) assert "200 OK" == result.status, "authorize_guest getting:%s instead of 200 OK while trying to View URL:%s" % ( result.status, url, ) # check if guest_session is created guest_session = Guestsession.query.first() assert isinstance(guest_session, Guestsession), "Guestsession is not created when calling authorize_guest" assert guest_session.state == GUESTRACK_SOCIAL_AUTH, " guest_session state is not GUESTRACK_SOCIAL_AUTH"
def test_authorize_guest1(session): """ authorize_guest with invalid parameters """ site1 = Wifisite.query.filter_by(unifi_id="site1").first() site1.auth_method = AUTH_TYPE_SOCIAL + AUTH_TYPE_SMS + AUTH_TYPE_EMAIL + AUTH_TYPE_VOUCHER mac = randomMAC() ap_mac1 = randomMAC() url1 = get_guest_url(site1, mac, ap_mac1, 1) # invalid guestrack id check_404(url_for("guest.authorize_guest", track_id=str(uuid.uuid4()))) # test valid trackid but no device track_id = str(uuid.uuid4()) guest_track = Guesttrack( ap_mac=ap_mac1, device_mac=mac, site=site1, state=GUESTRACK_INIT, orig_url="", track_id=track_id ) db.session.add(guest_track) db.session.commit() check_404(url_for("guest.authorize_guest", track_id=track_id)) # Create device but not authorized guest_device = Device(mac=mac, site=site1, state=DEVICE_INIT) site1.devices.append(guest_device) db.session.add(guest_device) guest_track.state = GUESTRACK_NO_AUTH guest_device.state = DEVICE_AUTH db.session.commit() check_404(url_for("guest.authorize_guest", track_id=track_id)) # ensure that no sessions are created assert ( 0 == Guestsession.query.count() ), "Guestsessions are created even though authorize_guest is not called properly"
def test_social_login1(session): '''Test social_login view with in valid parameters and non authorized device ''' site1 = Wifisite.query.filter_by(unifi_id='site1').first() site1.auth_method = AUTH_TYPE_SOCIAL mac = randomMAC() ap_mac1 = randomMAC() url1 = get_guest_url(site1,mac,ap_mac1,1) #invalid guestrack id check_404(url_for('guest.social_login',track_id=str(uuid.uuid4()))) #test valid trackid but no session track_id = str(uuid.uuid4()) guest_track = Guesttrack(ap_mac=ap_mac1,device_mac=mac,site=site1,state=GUESTRACK_INIT,orig_url='',track_id=track_id) db.session.add(guest_track) db.session.commit() check_404(url_for('guest.social_login',track_id=track_id)) #Create device guest_device = Device(mac=mac,site=site1,state=DEVICE_INIT) site1.devices.append(guest_device) db.session.add(guest_device) db.session.commit() check_url_responce(url_for('guest.social_login',track_id=track_id),'Login Using Facebook') #validate guesttrack guest_track = Guesttrack.query.first() assert GUESTRACK_SOCIAL_PREAUTH == guest_track.state, "Guesttrack state is not GUESTRACK_SOCIAL_PREAUTH"
def test_guest_portal4(session): '''User with demo flag set is visiting ''' site1 = Wifisite.query.filter_by(unifi_id='site1').first() site1.auth_method = AUTH_TYPE_SOCIAL + AUTH_TYPE_SMS + AUTH_TYPE_EMAIL +AUTH_TYPE_VOUCHER mac = randomMAC() ap_mac1 = randomMAC() url1 = get_guest_url(site1,mac,ap_mac1,1) check_multi_login_page(url1) guest_track1 = Guesttrack.query.filter( and_(Guesttrack.device_mac==mac,Guesttrack.site_id==site1.id)).first() guest_device1 = Device.query.filter( and_(Device.mac==mac,Device.site_id==site1.id)).first() assert 1 == guest_track1.demo,'Demo flag is not set for guest_track for URL:%s'%url1 assert 1 == guest_device1.demo,'Demo flag is not set for guest_device for URL:%s'%url1
def test_guest_portal4(session): """User with demo flag set is visiting """ site1 = Wifisite.query.filter_by(unifi_id="site1").first() site1.auth_method = AUTH_TYPE_SOCIAL + AUTH_TYPE_SMS + AUTH_TYPE_EMAIL + AUTH_TYPE_VOUCHER mac = randomMAC() ap_mac1 = randomMAC() url1 = get_guest_url(site1, mac, ap_mac1, 1) check_multi_login_page(url1) guest_track1 = Guesttrack.query.filter(and_(Guesttrack.device_mac == mac, Guesttrack.site_id == site1.id)).first() guest_device1 = Device.query.filter(and_(Device.mac == mac, Device.site_id == site1.id)).first() assert 1 == guest_track1.demo, "Demo flag is not set for guest_track for URL:%s" % url1 assert 1 == guest_device1.demo, "Demo flag is not set for guest_device for URL:%s" % url1
def test_temp_authorize_guest1(session): """ authorize_guest with invalid parameters """ site1 = Wifisite.query.filter_by(unifi_id="site1").first() site1.auth_method = AUTH_TYPE_SOCIAL + AUTH_TYPE_SMS + AUTH_TYPE_EMAIL + AUTH_TYPE_VOUCHER mac = randomMAC() ap_mac1 = randomMAC() url1 = get_guest_url(site1, mac, ap_mac1, 1) auth_pass_status = {"status": 1, "msg": "DEBUG enabled"} auth_fail_status = {"status": 0, "msg": "Error"} auth_fail_status1 = {"status": 0, "msg": "You have already used up temporary logins for today"} # invalid guestrack id check_json_response(url_for("guest.temp_authorize_guest", track_id=str(uuid.uuid4())), auth_fail_status) # test valid trackid but not pre_auth track_id = str(uuid.uuid4()) guest_track = Guesttrack( ap_mac=ap_mac1, device_mac=mac, site=site1, state=GUESTRACK_INIT, orig_url="", track_id=track_id ) db.session.add(guest_track) db.session.commit() check_json_response(url_for("guest.temp_authorize_guest", track_id=track_id), auth_fail_status) # Create device and authorize session guest_device = Device(mac=mac, site=site1, state=DEVICE_INIT) site1.devices.append(guest_device) db.session.add(guest_device) guest_track.state = GUESTRACK_SOCIAL_PREAUTH db.session.commit() check_json_response(url_for("guest.temp_authorize_guest", track_id=track_id), auth_pass_status) # check if guest_session is created guest_session = Guestsession.query.first() assert isinstance(guest_session, Guestsession), "Guestsession is not created when calling authorize_guest" assert guest_session.state == GUESTRACK_SOCIAL_PREAUTH, " guest_session state is not GUESTRACK_SOCIAL_PREAUTH" # make max number of tries check_json_response(url_for("guest.temp_authorize_guest", track_id=track_id), auth_pass_status) check_json_response(url_for("guest.temp_authorize_guest", track_id=track_id), auth_pass_status) check_json_response(url_for("guest.temp_authorize_guest", track_id=track_id), auth_pass_status) check_json_response(url_for("guest.temp_authorize_guest", track_id=track_id), auth_pass_status) check_json_response(url_for("guest.temp_authorize_guest", track_id=track_id), auth_fail_status1)
def test_temp_authorize_guest1(session): ''' authorize_guest with invalid parameters ''' site1 = Wifisite.query.filter_by(unifi_id='site1').first() site1.auth_method = AUTH_TYPE_SOCIAL + AUTH_TYPE_SMS + AUTH_TYPE_EMAIL +AUTH_TYPE_VOUCHER mac = randomMAC() ap_mac1 = randomMAC() url1 = get_guest_url(site1,mac,ap_mac1,1) auth_pass_status = {'status':1,'msg': "DEBUG enabled"} auth_fail_status = {'status':0,'msg': "Error"} auth_fail_status1 = {'status':0,'msg': "You have already used up temporary logins for today"} #invalid guestrack id check_json_response(url_for('guest.temp_authorize_guest',track_id=str(uuid.uuid4())),auth_fail_status) #test valid trackid but not pre_auth track_id = str(uuid.uuid4()) guest_track = Guesttrack(ap_mac=ap_mac1,device_mac=mac,site=site1,state=GUESTRACK_INIT,orig_url='',track_id=track_id) db.session.add(guest_track) db.session.commit() check_json_response(url_for('guest.temp_authorize_guest',track_id=track_id),auth_fail_status) #Create device and authorize session guest_device = Device(mac=mac,site=site1,state=DEVICE_INIT) site1.devices.append(guest_device) db.session.add(guest_device) guest_track.state = GUESTRACK_SOCIAL_PREAUTH db.session.commit() check_json_response(url_for('guest.temp_authorize_guest',track_id=track_id),auth_pass_status) #check if guest_session is created guest_session = Guestsession.query.first() assert isinstance(guest_session,Guestsession) ,'Guestsession is not created when calling authorize_guest' assert guest_session.state == GUESTRACK_SOCIAL_PREAUTH, " guest_session state is not GUESTRACK_SOCIAL_PREAUTH" #make max number of tries check_json_response(url_for('guest.temp_authorize_guest',track_id=track_id),auth_pass_status) check_json_response(url_for('guest.temp_authorize_guest',track_id=track_id),auth_pass_status) check_json_response(url_for('guest.temp_authorize_guest',track_id=track_id),auth_pass_status) check_json_response(url_for('guest.temp_authorize_guest',track_id=track_id),auth_pass_status) check_json_response(url_for('guest.temp_authorize_guest',track_id=track_id),auth_fail_status1)
def test_guest_portal2(session): '''Check if guest_track creations are done properly or not''' site1 = Wifisite.query.filter_by(id=1).first() site1.auth_method = AUTH_TYPE_SOCIAL + AUTH_TYPE_SMS + AUTH_TYPE_EMAIL +AUTH_TYPE_VOUCHER db.session.commit() mac = randomMAC() ap_mac = randomMAC() url = get_guest_url(site1,mac,ap_mac,demo=0) check_multi_login_page(url) # test if the device is created for this user test_device = Device.query.filter( and_(Device.mac==mac,Device.site_id==site1.id)).first() assert isinstance(test_device, Device), "Device is not created when a new user visits" #same user visit multiple times without session expiry, no new sessions should be created time.sleep(1) check_multi_login_page(url) check_multi_login_page(url) check_multi_login_page(url) check_multi_login_page(url) num_device = Device.query.filter( and_(Device.mac==mac,Device.site_id==site1.id)).count() assert num_device == 1 , "User visiting twice without session expiry: Device shouldn't be created twice" # assert 5 == Guesttrack.query.count() , "User visiting without session expiry: Guesttrack should be created eachtime"
def test_guest_portal2(session): """Check if guest_track creations are done properly or not""" site1 = Wifisite.query.filter_by(id=1).first() site1.auth_method = AUTH_TYPE_SOCIAL + AUTH_TYPE_SMS + AUTH_TYPE_EMAIL + AUTH_TYPE_VOUCHER db.session.commit() mac = randomMAC() ap_mac = randomMAC() url = get_guest_url(site1, mac, ap_mac, demo=0) check_multi_login_page(url) # test if the device is created for this user test_device = Device.query.filter(and_(Device.mac == mac, Device.site_id == site1.id)).first() assert isinstance(test_device, Device), "Device is not created when a new user visits" # same user visit multiple times without session expiry, no new sessions should be created time.sleep(1) check_multi_login_page(url) check_multi_login_page(url) check_multi_login_page(url) check_multi_login_page(url) num_device = Device.query.filter(and_(Device.mac == mac, Device.site_id == site1.id)).count() assert num_device == 1, "User visiting twice without session expiry: Device shouldn't be created twice" # assert 5 == Guesttrack.query.count(), "User visiting without session expiry: Guesttrack should be created eachtime"
def test_authorize_guest2(session): ''' authorize_guest check if parameters are correctly configured ''' #create a guest visitor site1 = Wifisite.query.filter_by(id=1).first() mac = randomMAC() ap_mac = randomMAC() site1.auth_method = AUTH_TYPE_SOCIAL + AUTH_TYPE_SMS + AUTH_TYPE_EMAIL +AUTH_TYPE_VOUCHER db.session.commit() url = get_guest_url(site1,mac,ap_mac,demo=0) check_multi_login_page(url) guest_track = Guesttrack.query.first() #authorize session guest_track.state = GUESTRACK_SOCIAL_AUTH auth_url = url_for('guest.authorize_guest',track_id =guest_track.track_id) result = current_app.test_client().get(auth_url,follow_redirects=True) assert '200 OK' == result.status, 'authorize_guest getting:%s instead of 200 OK while trying to View URL:%s'%(result.status,url) #check if guest_session is created guest_session = Guestsession.query.first() assert isinstance(guest_session,Guestsession) ,'Guestsession is not created when calling authorize_guest' assert guest_session.state == GUESTRACK_SOCIAL_AUTH, " guest_session state is not GUESTRACK_SOCIAL_AUTH"