def test_getinfo_not_getinfo(): db_conn = get_db() # not a GetInfo gi = SignedMessage.sign(Stub(1), SK1) gir = server.handle_getinfo(db_conn, gi) assert isinstance(gir, getinfo.GetInfoResp) assert not gir.ok assert gir.err == getinfo.GetInfoRespErr.Malformed
def test_getinfo_notimpl(): db_conn = get_db() u = db.user_with_pk(db_conn, U1.pk) ecred = get_cred(u) gi = SignedMessage.sign(getinfo.GetInfo(U2.pk, ecred), SK1) gir = server.handle_getinfo(db_conn, gi) assert isinstance(gir, getinfo.GetInfoResp) assert not gir.ok assert gir.err == getinfo.GetInfoRespErr.NotImpl
def test_getinfoloc_happy_default(): db_conn = get_db() u_me = db.user_with_pk(db_conn, U1.pk) u_other = db.user_with_pk(db_conn, U2.pk) insert_many_locs(db_conn, u_other) ecred = get_cred(u_me) gi = SignedMessage.sign(getinfo.GetInfoLocation(u_other.pk, ecred), SK1) gir = server.handle_getinfo(db_conn, gi) assert gir.ok assert gir.err is None assert len(gir.locs) == 1
def test_getinfo_unknown_user_in_req(): db_conn = get_db() # ask about a user with a pubkey that doesn't exist fake_pk = crypto.Pubkey((98345).to_bytes(32, byteorder='big')) u = db.user_with_pk(db_conn, U1.pk) ecred = get_cred(u) gi = SignedMessage.sign(getinfo.GetInfo(fake_pk, ecred), SK1) gir = server.handle_getinfo(db_conn, gi) assert isinstance(gir, getinfo.GetInfoResp) assert not gir.ok assert gir.err == getinfo.GetInfoRespErr.NoSuchUser
def test_getinfo_badcred(): db_conn = get_db() u = db.user_with_pk(db_conn, U1.pk) ecred = get_cred(u) # munge the cred so it isn't valid ecred.ctext_nonce = b'0000000000000000000000000' gi = SignedMessage.sign(getinfo.GetInfo(u.pk, ecred), SK1) gir = server.handle_getinfo(db_conn, gi) assert isinstance(gir, getinfo.GetInfoResp) assert not gir.ok assert gir.err == CredChalErr.Malformed
def test_getinfo_badsig(): db_conn = get_db() u = db.user_with_pk(db_conn, U1.pk) ecred = get_cred(u) gi = SignedMessage.sign(getinfo.GetInfo(u.pk, ecred), SK1) # munge the signed message so it doesn't verify gi.msg_bytes = b'nnnnnnnnnnnnnnnnnnnnnnnnaaaaaaaaaaaa' gir = server.handle_getinfo(db_conn, gi) assert isinstance(gir, getinfo.GetInfoResp) assert not gir.ok assert gir.err == SignedMessageErr.BadSig
def test_getinfo_unknown_user(): db_conn = get_db() u = db.user_with_pk(db_conn, U1.pk) ecred = get_cred(u) # user who signed this message is not even in the db fake_sk = crypto.Seckey((1).to_bytes(32, byteorder='big')) gi = SignedMessage.sign(getinfo.GetInfo(u.pk, ecred), fake_sk) gir = server.handle_getinfo(db_conn, gi) assert isinstance(gir, getinfo.GetInfoResp) assert not gir.ok assert gir.err == SignedMessageErr.UnknownUser
def test_getinfoloc_multiple_count_correct_3(): db_conn = get_db() u_me = db.user_with_pk(db_conn, U1.pk) u_other = db.user_with_pk(db_conn, U2.pk) num_locs = insert_many_locs(db_conn, u_other) ecred = get_cred(u_me) gi = SignedMessage.sign( getinfo.GetInfoLocation(u_other.pk, ecred, count=num_locs + 10), SK1) gir = server.handle_getinfo(db_conn, gi) assert gir.ok assert gir.err is None assert len(gir.locs) == num_locs
def test_getinfoloc_multiple_order_correct_2(): db_conn = get_db() u_me = db.user_with_pk(db_conn, U1.pk) u_other = db.user_with_pk(db_conn, U2.pk) insert_many_locs(db_conn, u_other) # when asking for newest=False, we should get the oldest location first, # thus it should have the min time of all locations min_time = min( [loc.time for loc in db.locations_for_user(db_conn, u_other)]) ecred = get_cred(u_me) gi = SignedMessage.sign( getinfo.GetInfoLocation(u_other.pk, ecred, count=1, newest=False), SK1) gir = server.handle_getinfo(db_conn, gi) assert gir.ok assert gir.err is None assert len(gir.locs) == 1 assert gir.locs[0].time == min_time
def test_getinfoloc_multiple_order_correct_3(): db_conn = get_db() u_me = db.user_with_pk(db_conn, U1.pk) u_other = db.user_with_pk(db_conn, U2.pk) num_locs = insert_many_locs(db_conn, u_other) # when not asking for a specfic order, we get the newest location first, # every subsequent location should have a smaller time ecred = get_cred(u_me) gi = SignedMessage.sign( getinfo.GetInfoLocation(u_other.pk, ecred, count=num_locs), SK1) gir = server.handle_getinfo(db_conn, gi) assert gir.ok assert gir.err is None assert len(gir.locs) == num_locs last_time = 999999999999999 for loc in gir.locs: assert loc.time < last_time last_time = loc.time