CORD-762 add set_fk support to orm

Change-Id: If86d5c041f3ea293aa2b109d881454cae95dd29a
diff --git a/xos/xos_client/tests/orm_user_crud.py b/xos/xos_client/tests/orm_user_crud.py
new file mode 100644
index 0000000..45bda8f
--- /dev/null
+++ b/xos/xos_client/tests/orm_user_crud.py
@@ -0,0 +1,63 @@
+import sys
+sys.path.append("..")
+
+from xosapi import xos_grpc_client
+
+def test_callback():
+    print "TEST: orm_user_crud"
+
+    c = xos_grpc_client.coreclient
+
+    # create a new user and save it
+    u=c.xos_orm.User.objects.new()
+    assert(u.id==0)
+    import random, string
+    u.email=''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(10))
+    u.site=c.xos_orm.Site.objects.all()[0]
+    u.save()
+
+    # when we created the user, he should be assigned an id
+    orig_id = u.id
+    assert(orig_id!=0)
+
+    # invalidate u.site so it's reloaded from the server
+    u.invalidate_cache("site")
+
+    # site object should be populated
+    assert(u.site is not None)
+
+    # site object should have a backpointer to user
+    u_all = u.site.users.all()
+    u_all = [x for x in u_all if x.email == u.email]
+    assert(len(u_all)==1)
+
+    # update the user
+    u.password="foobar"
+    u.save()
+
+    # update should not have changed it
+    assert(u.id==orig_id)
+
+    # check a listall and make sure the user is listed
+    u_all = c.xos_orm.User.objects.all()
+    u_all = [x for x in u_all if x.email == u.email]
+    assert(len(u_all)==1)
+    u2 = u_all[0]
+    assert(u2.id == u.id)
+
+    # get and make sure the password was updated
+    u3 = c.xos_orm.User.objects.get(id=orig_id)
+    assert(u3.password=="foobar")
+
+    # delete the user
+    u3.delete()
+
+    # make sure it is deleted
+    u_all = c.xos_orm.User.objects.all()
+    u_all = [x for x in u_all if x.email == u.email]
+    assert(len(u_all)==0)
+
+    print "    okay"
+
+xos_grpc_client.start_api_parseargs(test_callback)
+