def test_delete_instance():
    test_iid = test_utils.make_instance()
    state = test_utils.get_invited_and_joined_instances(test_iid, firstpid)
    assert test_iid in state["joined"]
    test_utils.post_server_command(test_iid, "sys_delete_instance", [])
    assert not test_utils.get_instance_model(test_iid)
    state = test_utils.get_invited_and_joined_instances("", firstpid)
    assert test_iid not in state["joined"]
def test_email_parse():
  invitee = '<Invitee> [email protected]'
  invitee_email = '*****@*****.**'
  test_iid = test_utils.make_instance()
  response = app.post('/invite', {'gid': gid, 'iid' : test_iid,
                                  'inv' : invitee}).json
  assert response['response']['inv'] == invitee_email
  state = test_utils.get_invited_and_joined_instances(test_iid, invitee_email)
  assert test_iid in state['invited']
  state = test_utils.get_invited_and_joined_instances(test_iid, invitee)
  assert test_iid in state['invited']
def test_decline_invite():
    test_iid = test_utils.make_instance()
    invitee = "*****@*****.**"
    response = app.post("/invite", {"gid": gid, "iid": test_iid, "inv": invitee}).json
    assert response["e"] is False
    assert response["response"]["inv"] == invitee
    assert response["request_type"] == "/invite"

    state = test_utils.get_invited_and_joined_instances(test_iid, invitee)
    assert test_iid in state["invited"]

    test_utils.post_server_command(test_iid, "sys_decline_invite", [], pid=invitee)
    state = test_utils.get_invited_and_joined_instances(test_iid, invitee)
    assert test_iid not in state["invited"]
def test_email_parse():
    invitee = '<Invitee> [email protected]'
    invitee_email = '*****@*****.**'
    test_iid = test_utils.make_instance()
    response = app.post('/invite', {
        'gid': gid,
        'iid': test_iid,
        'inv': invitee
    }).json
    assert response['response']['inv'] == invitee_email
    state = test_utils.get_invited_and_joined_instances(
        test_iid, invitee_email)
    assert test_iid in state['invited']
    state = test_utils.get_invited_and_joined_instances(test_iid, invitee)
    assert test_iid in state['invited']
def test_join_instance():
  test_utils.clear_data_store()
  test_iid = test_utils.make_instance()
  invitee = '*****@*****.**'
  app.post('/invite', {'gid': gid, 'iid' : test_iid, 'inv' : invitee})
  instances = test_utils.get_invited_and_joined_instances(test_iid, invitee)
  assert instances['invited'] == [test_iid]
  assert instances['joined'] == []

  response = app.post('/joininstance', {'gid': gid, 'iid' : test_iid,
                                        'pid' : invitee}).json
  assert response['e'] is False
  assert response['request_type'] == '/joininstance'

  instances = test_utils.get_invited_and_joined_instances(test_iid, invitee)
  assert instances['invited'] == response['response']['invited']
  assert instances['joined'] == response['response']['joined']
  assert test_iid not in instances['invited']
  assert test_iid in instances['joined']
def test_invite_player():
  test_iid = test_utils.make_instance()
  invitee = '*****@*****.**'
  response = app.post('/invite', {'gid': gid, 'iid' : test_iid,
                                  'inv' : invitee}).json
  assert response['e'] is False
  assert response['response']['inv'] == invitee
  assert response['request_type'] == '/invite'

  state = test_utils.get_invited_and_joined_instances(test_iid, invitee)
  assert test_iid in state['invited']
def test_join_instance():
    test_utils.clear_data_store()
    test_iid = test_utils.make_instance()
    invitee = '*****@*****.**'
    app.post('/invite', {'gid': gid, 'iid': test_iid, 'inv': invitee})
    instances = test_utils.get_invited_and_joined_instances(test_iid, invitee)
    assert instances['invited'] == [test_iid]
    assert instances['joined'] == []

    response = app.post('/joininstance', {
        'gid': gid,
        'iid': test_iid,
        'pid': invitee
    }).json
    assert response['e'] is False
    assert response['request_type'] == '/joininstance'

    instances = test_utils.get_invited_and_joined_instances(test_iid, invitee)
    assert instances['invited'] == response['response']['invited']
    assert instances['joined'] == response['response']['joined']
    assert test_iid not in instances['invited']
    assert test_iid in instances['joined']
def test_invite_player_already_joined():
  test_iid = test_utils.make_instance()
  invitee = '*****@*****.**'
  test_utils.add_player(test_iid, invitee)
  response = app.post('/invite', {'gid': gid, 'iid' : test_iid,
                                  'inv' : invitee}).json
  assert response['e'] is False
  assert response['response']['inv'] == ''
  assert response['request_type'] == '/invite'

  instance_lists = test_utils.get_invited_and_joined_instances(test_iid,
                                                               invitee)
  assert test_iid in instance_lists['joined']
  assert test_iid not in instance_lists['invited']
def test_invite_player():
    test_iid = test_utils.make_instance()
    invitee = '*****@*****.**'
    response = app.post('/invite', {
        'gid': gid,
        'iid': test_iid,
        'inv': invitee
    }).json
    assert response['e'] is False
    assert response['response']['inv'] == invitee
    assert response['request_type'] == '/invite'

    state = test_utils.get_invited_and_joined_instances(test_iid, invitee)
    assert test_iid in state['invited']
def test_join_public():
    iid = test_utils.make_instance_with_players()

    # Make sure that an uninvited player cannot join.
    playerid = "*****@*****.**"
    response = app.post("/joininstance", {"gid": gid, "iid": iid, "pid": playerid}).json
    assert response["e"] is True
    assert "not invited" in response["response"]

    # Set the game to public and confirm that uninvited players can join.
    test_utils.post_server_command(iid, "sys_set_public", [True])
    response = app.post("/joininstance", {"gid": gid, "iid": iid, "pid": playerid}).json
    assert response["e"] is False

    state = test_utils.get_invited_and_joined_instances(iid, playerid)
    assert iid not in state["invited"]
    assert iid in state["joined"]
def test_invite_player_already_joined():
    test_iid = test_utils.make_instance()
    invitee = '*****@*****.**'
    test_utils.add_player(test_iid, invitee)
    response = app.post('/invite', {
        'gid': gid,
        'iid': test_iid,
        'inv': invitee
    }).json
    assert response['e'] is False
    assert response['response']['inv'] == ''
    assert response['request_type'] == '/invite'

    instance_lists = test_utils.get_invited_and_joined_instances(
        test_iid, invitee)
    assert test_iid in instance_lists['joined']
    assert test_iid not in instance_lists['invited']