示例#1
0
 def testChangePassword(self):
   oldTime = PlayerPassword.objects.get(player__id=3).time_set
   newPassword = "******"
   response = self.doPost('/udj/users/6/players/3/password', {'password': newPassword})
   self.assertEqual(response.status_code, 200, "Error: " + response.content)
   playerPassword = PlayerPassword.objects.get(player__id=3)
   self.assertEqual(playerPassword.password_hash, hashPlayerPassword(newPassword))
   self.assertTrue(oldTime < playerPassword.time_set)
示例#2
0
def participateWithPlayer(request, player_id, user_id, activePlayer):
  playerPassword = PlayerPassword.objects.filter(player=activePlayer)
  if playerPassword.exists():
    if DJANGO_PLAYER_PASSWORD_HEADER in request.META:
      hashedPassword = hashPlayerPassword(request.META[DJANGO_PLAYER_PASSWORD_HEADER])
      if hashedPassword == playerPassword[0].password_hash:
        return onSuccessfulPlayerAuth(activePlayer, user_id)

    toReturn = HttpResponse(status=401)
    toReturn['WWW-Authenticate'] = 'player-password'
    return toReturn
  else: 
    return onSuccessfulPlayerAuth(activePlayer, user_id)
示例#3
0
def setPlayerPassword(request, user_id, player_id, player):
  givenPassword = request.POST['password']
  if givenPassword == '':
    return HttpResponseBadRequest("Bad password")

  hashedPassword = hashPlayerPassword(givenPassword)

  playerPassword , created = PlayerPassword.objects.get_or_create(
      player=player,
      defaults={'password_hash': hashedPassword})
  if not created:
    playerPassword.password_hash = hashedPassword
    playerPassword.save()

  return HttpResponse()
示例#4
0
  def testCreatePasswordPlayer(self):
    playerName = "Yunyoung Player"
    password = '******'
    passwordHash = hashPlayerPassword(password)
    payload = {'name' : playerName, 'password' : password}
    response = self.doJSONPut('/udj/users/7/players/player', json.dumps(payload))
    self.assertEqual(response.status_code, 201, "Error: " + response.content)
    self.isJSONResponse(response)
    givenPlayerId = json.loads(response.content)['player_id']
    addedPlayer = Player.objects.get(pk=givenPlayerId)
    self.assertEqual(addedPlayer.name, playerName)
    self.assertEqual(addedPlayer.owning_user.id, 7)
    self.assertFalse(PlayerLocation.objects.filter(player=addedPlayer).exists())

    addedPassword = PlayerPassword.objects.get(player=addedPlayer)
    self.assertEqual(addedPassword.password_hash, passwordHash)
示例#5
0
def createPlayer(request, user_id):
  user = User.objects.get(pk=user_id)
  try:
    newPlayerJSON = json.loads(request.raw_post_data)
  except ValueError:
    return HttpResponseBadRequest('Bad JSON')

  #Ensure the name attribute was provided with the JSON
  newPlayerName = ""
  try:
    newPlayerName = newPlayerJSON['name']
  except KeyError:
    return HttpResponseBadRequest('No name given')

  #Ensure that the suers doesn't already have a player with the given name
  conflictingPlayer = Player.objects.filter(owning_user=user, name=newPlayerName)
  if conflictingPlayer.exists():
    return HttpResponse('A player with that name already exists', status=409)

  #Create and save new player
  algo = SortingAlgorithm.objects.get(name='Total Votes')
  newPlayer = Player(owning_user=user, name=newPlayerName, sorting_algo=algo)
  newPlayer.save()

  #If password provided, create and save password
  if 'password' in newPlayerJSON:
    PlayerPassword(player=newPlayer, password_hash=hashPlayerPassword(newPlayerJSON['password'])).save()

  #If locaiton provided, geocode it and save it
  if 'location' in newPlayerJSON:
    location = newPlayerJSON['location']
    if isValidLocation(location):
      try:
        doLocationSet(location['address'], location['city'],
            location['state'], location['zipcode'], newPlayer)
      except LocationNotFoundError:
        return HttpResponseBadRequest('Location not found')
    else:
      return HttpResponseBadRequest('Bad location')

  return HttpResponse(json.dumps({'player_id' : newPlayer.id}), status=201, content_type="text/json")
示例#6
0
 def testSetPassword(self):
   newPassword = '******'
   response = self.doPost('/udj/users/2/players/1/password', {'password': newPassword})
   self.assertEqual(response.status_code, 200, "Error: " + response.content)
   playerPassword = PlayerPassword.objects.get(player__id=1)
   self.assertEqual(playerPassword.password_hash, hashPlayerPassword(newPassword))