Exemplo n.º 1
0
 def test_post_non_unique_port(self):
     mc = MinecraftDownload.create(
         '1.7.4',
         'https://s3.amazonaws.com/Minecraft.Download/versions/1.7.4/minecraft_server.1.7.4.jar'
     )
     self.server.key.delete()
     self.log_in_admin()
     self.assertEqual(0, Server.query().count())
     self.assertEqual(0, Client.query().count())
     response = self.post(params={
         'name': 'new server',
         'version': mc.version,
         'memory': '1G',
         'motd': 'Welcome',
         'white_list': True,
         'server_port': 25565,
         'idle_timeout': 10,
         'eula_agree': True
     })
     response = self.post(params={
         'name': 'new server',
         'version': mc.version,
         'memory': '1G',
         'motd': 'Welcome',
         'white_list': True,
         'server_port': 25565,
         'idle_timeout': 10,
         'eula_agree': True
     })
     self.assertEqual(1, Server.query().count())
     self.assertEqual(1, Client.query().count())
     self.assertOK(response)
Exemplo n.º 2
0
 def test_post_duplicate_client_id(self):
     params = {
         'client_id': TEST_CLIENT_ID,
         'redirect_uris': [TEST_REDIRECT_URI],
         'client_name': TEST_CLIENT_NAME,
         'client_uri': TEST_CLIENT_URI,
         'logo_uri': TEST_LOGO_URI
     }
     response = self.post_json(self.url, params=params)
     self.assertCreated(response)
     self.assertEqual(Client.query().count(), 2)
     client = Client.query().get()
     self.assertTrue(client.active)
     body = json.loads(response.body)
     self.assertEqual(len(body), NUM_CLIENT_FIELDS)
     self.assertTrue(body['client_id'].startswith(TEST_CLIENT_ID + '-'))
     client = Client.get_by_client_id(body['client_id'])
     self.assertEqual(body['redirect_uris'], [TEST_REDIRECT_URI])
     self.assertEqual(body['client_name'], TEST_CLIENT_NAME)
     self.assertEqual(body['client_uri'], TEST_CLIENT_URI)
     self.assertEqual(body['logo_uri'], TEST_LOGO_URI)
     self.assertEqual(
         body['registration_client_uri'],
         'https://localhost:80/oauth/v1/clients/{0}'.format(
             client.client_id))
     self.assertEqual(body['registration_access_token'],
                      client.registration_access_token)
     self.assertEqual(body['client_secret'], client.secret)
     self.assertEqual(body['client_secret_expires_at'],
                      client.secret_expires_at)
Exemplo n.º 3
0
 def test_post_duplicate_client_id(self):
     params = {
         'client_id': TEST_CLIENT_ID,
         'redirect_uris': [TEST_REDIRECT_URI],
         'client_name': TEST_CLIENT_NAME,
         'client_uri': TEST_CLIENT_URI,
         'logo_uri': TEST_LOGO_URI
     }
     response = self.post_json(self.url, params=params)
     self.assertCreated(response)
     self.assertEqual(Client.query().count(), 2)
     client = Client.query().get()
     self.assertTrue(client.active)
     body = json.loads(response.body)
     self.assertEqual(len(body), NUM_CLIENT_FIELDS)
     self.assertTrue(body['client_id'].startswith(TEST_CLIENT_ID+'-'))
     client = Client.get_by_client_id(body['client_id'])
     self.assertEqual(body['redirect_uris'], [TEST_REDIRECT_URI])
     self.assertEqual(body['client_name'], TEST_CLIENT_NAME)
     self.assertEqual(body['client_uri'], TEST_CLIENT_URI)
     self.assertEqual(body['logo_uri'], TEST_LOGO_URI)
     self.assertEqual(body['registration_client_uri'], 'https://localhost:80/oauth/v1/clients/{0}'.format(client.client_id))
     self.assertEqual(body['registration_access_token'], client.registration_access_token)
     self.assertEqual(body['client_secret'], client.secret)
     self.assertEqual(body['client_secret_expires_at'], client.secret_expires_at)
Exemplo n.º 4
0
 def test_post_non_unique_port(self):
     mc = MinecraftDownload.create(
         '1.7.4',
         'https://s3.amazonaws.com/Minecraft.Download/versions/1.7.4/minecraft_server.1.7.4.jar'
     )
     self.server.key.delete()
     self.log_in_admin()
     self.assertEqual(0, Server.query().count())
     self.assertEqual(0, Client.query().count())
     response = self.post(
         params={
             'name': 'new server',
             'version': mc.version,
             'memory': '1G',
             'motd': 'Welcome',
             'white_list': True,
             'server_port': 25565,
             'idle_timeout': 10,
             'eula_agree': True
         })
     response = self.post(
         params={
             'name': 'new server',
             'version': mc.version,
             'memory': '1G',
             'motd': 'Welcome',
             'white_list': True,
             'server_port': 25565,
             'idle_timeout': 10,
             'eula_agree': True
         })
     self.assertEqual(1, Server.query().count())
     self.assertEqual(1, Client.query().count())
     self.assertOK(response)
Exemplo n.º 5
0
 def test_post_idle_timeout(self):
     mc = MinecraftDownload.create(
         '1.7.4',
         'https://s3.amazonaws.com/Minecraft.Download/versions/1.7.4/minecraft_server.1.7.4.jar'
     )
     self.server.key.delete()
     self.log_in_admin()
     self.assertEqual(0, Server.query().count())
     self.assertEqual(0, Client.query().count())
     response = self.post(params={
         'name': 'new server',
         'version': mc.version,
         'memory': '1G',
         'motd': 'Welcome',
         'white_list': True,
         'server_port': 25565,
         'idle_timeout': 0,
         'eula_agree': True
     })
     self.assertEqual(1, Server.query().count())
     self.assertEqual(1, Client.query().count())
     server = Server.query().get()
     self.assertEqual('new server', server.name)
     self.assertEqual(True, server.is_gce)
     self.assertEqual('1G', server.memory)
     self.assertEqual(0, server.idle_timeout)
     mc_properties = server.mc_properties
     self.assertEqual('Welcome', mc_properties.motd)
     self.assertEqual(True, mc_properties.white_list)
     self.assertEqual(25565, mc_properties.server_port)
     self.assertRedirects(response, '/servers/{0}'.format(server.key.urlsafe()))
Exemplo n.º 6
0
 def test_post_idle_timeout(self):
     mc = MinecraftDownload.create(
         '1.7.4',
         'https://s3.amazonaws.com/Minecraft.Download/versions/1.7.4/minecraft_server.1.7.4.jar'
     )
     self.server.key.delete()
     self.log_in_admin()
     self.assertEqual(0, Server.query().count())
     self.assertEqual(0, Client.query().count())
     response = self.post(
         params={
             'name': 'new server',
             'version': mc.version,
             'memory': '1G',
             'motd': 'Welcome',
             'white_list': True,
             'server_port': 25565,
             'idle_timeout': 0,
             'eula_agree': True
         })
     self.assertEqual(1, Server.query().count())
     self.assertEqual(1, Client.query().count())
     server = Server.query().get()
     self.assertEqual('new server', server.name)
     self.assertEqual(True, server.is_gce)
     self.assertEqual('1G', server.memory)
     self.assertEqual(0, server.idle_timeout)
     mc_properties = server.mc_properties
     self.assertEqual('Welcome', mc_properties.motd)
     self.assertEqual(True, mc_properties.white_list)
     self.assertEqual(25565, mc_properties.server_port)
     self.assertRedirects(response,
                          '/servers/{0}'.format(server.key.urlsafe()))
Exemplo n.º 7
0
 def test_post(self):
     self.server.key.delete()
     self.log_in_admin()
     self.assertEqual(0, Server.query().count())
     self.assertEqual(0, Client.query().count())
     response = self.post(params={'name': 'new server'})
     self.assertEqual(1, Server.query().count())
     self.assertEqual(1, Client.query().count())
     server = Server.query().get()
     self.assertEqual('new server', server.name)
     self.assertEqual(False, server.is_gce)
     self.assertRedirects(response, '/servers/{0}'.format(server.key.urlsafe()))
Exemplo n.º 8
0
 def test_post(self):
     self.server.key.delete()
     self.log_in_admin()
     self.assertEqual(0, Server.query().count())
     self.assertEqual(0, Client.query().count())
     response = self.post(params={'name': 'new server'})
     self.assertEqual(1, Server.query().count())
     self.assertEqual(1, Client.query().count())
     server = Server.query().get()
     self.assertEqual('new server', server.name)
     self.assertEqual(False, server.is_gce)
     self.assertRedirects(response,
                          '/servers/{0}'.format(server.key.urlsafe()))
Exemplo n.º 9
0
 def test_post_deny_existing_client(self):
     Client.get_or_insert('test_client',
                          client_id=TEST_CLIENT_ID,
                          redirect_uris=[TEST_REDIRECT_URI])
     url = self.url
     query_params = {
         'client_id': TEST_CLIENT_ID,
         'redirect_uri': TEST_REDIRECT_URI,
         'response_type': 'code'
     }
     response = self.get(self.url, params=query_params)
     self.assertOK(response)
     csrf_string = 'name="csrf_token" type="hidden" value="'
     begin = response.body.find(csrf_string) + len(csrf_string)
     end = response.body.find('"', begin)
     csrf_token = response.body[begin:end]
     if query_params:
         query_params = urlencode(query_params, doseq=True)
         if '?' in url:
             url += '&'
         else:
             url += '?'
         url += query_params
     params = {'csrf_token': csrf_token, 'deny': 'Deny'}
     response = self.post(url, params)
     self.assertRedirects(response,
                          to=TEST_REDIRECT_URI + "?error=access_denied")
     self.assertEqual(1, Client.query().count())
Exemplo n.º 10
0
 def test_post_authorize(self):
     url = self.url
     query_params = {
         'client_id': TEST_CLIENT_ID,
         'redirect_uri': TEST_REDIRECT_URI,
         'response_type': 'code',
         'scope': 'data'
     }
     response = self.get(self.url, params=query_params)
     self.assertOK(response)
     csrf_string = 'name="csrf_token" type="hidden" value="'
     begin = response.body.find(csrf_string) + len(csrf_string)
     end = response.body.find('"', begin)
     csrf_token = response.body[begin:end]
     if query_params:
         query_params = urlencode(query_params, doseq=True)
         if '?' in url:
             url += '&'
         else:
             url += '?'
         url += query_params
     params = {'csrf_token': csrf_token, 'grant': 'Grant'}
     response = self.post(url, params)
     self.assertRedirects(response)
     self.assertRegexpMatches(response.headers['Location'],
                              ur"https://localhost/\?code=.+")
     self.assertEqual(1, Client.query().count())
Exemplo n.º 11
0
 def test_post_duplicate_none_port(self):
     self.server.mc_properties.server_port = 25565
     self.server.mc_properties.put()
     self.log_in_admin()
     self.mc = MinecraftDownload.create(
         '1.7.4', 'https://s3.amazonaws.com/Minecraft.Download/versions/1.7.4/minecraft_server.1.7.4.jar'
     )
     self.server.version = self.mc.version
     self.server.put()
     response = self.post(
         params={
             'name': self.server.name,
             'version': self.server.version,
             'memory': '1G',
             'server_port': '',
             'idle_timeout': 10,
             'eula_agree': True
         }
     )
     self.assertEqual(1, Server.query().count())
     self.assertEqual(1, Client.query().count())
     server = self.server.key.get()
     server = self.server.key.get()
     self.assertIsNone(server.mc_properties.server_port)
     self.assertRedirects(response, '/servers/{0}'.format(server.key.urlsafe()))
Exemplo n.º 12
0
 def test_post_deny_existing_client(self):
     Client.get_or_insert('test_client', client_id=TEST_CLIENT_ID, redirect_uris=[TEST_REDIRECT_URI])
     url = self.url
     query_params = {
         'client_id': TEST_CLIENT_ID,
         'redirect_uri': TEST_REDIRECT_URI,
         'response_type': 'code'
     }
     response = self.get(self.url, params=query_params)
     self.assertOK(response)
     csrf_string = 'name="csrf_token" type="hidden" value="'
     begin = response.body.find(csrf_string) + len(csrf_string)
     end = response.body.find('"', begin)
     csrf_token = response.body[begin:end]
     if query_params:
         query_params = urlencode(query_params, doseq=True)
         if '?' in url:
             url += '&'
         else:
             url += '?'
         url += query_params
     params = {'csrf_token': csrf_token, 'deny': 'Deny'}
     response = self.post(url, params)
     self.assertRedirects(response, to=TEST_REDIRECT_URI+"?error=access_denied")
     self.assertEqual(1, Client.query().count())
Exemplo n.º 13
0
 def test_post_duplicate_none_port(self):
     self.server.mc_properties.server_port = 25565
     self.server.mc_properties.put()
     self.log_in_admin()
     self.mc = MinecraftDownload.create(
         '1.7.4',
         'https://s3.amazonaws.com/Minecraft.Download/versions/1.7.4/minecraft_server.1.7.4.jar'
     )
     self.server.version = self.mc.version
     self.server.put()
     response = self.post(
         params={
             'name': self.server.name,
             'version': self.server.version,
             'memory': '1G',
             'server_port': '',
             'idle_timeout': 10,
             'eula_agree': True
         })
     self.assertEqual(1, Server.query().count())
     self.assertEqual(1, Client.query().count())
     server = self.server.key.get()
     server = self.server.key.get()
     self.assertIsNone(server.mc_properties.server_port)
     self.assertRedirects(response,
                          '/servers/{0}'.format(server.key.urlsafe()))
Exemplo n.º 14
0
 def test_post_authorize(self):
     url = self.url
     query_params = {
         'client_id': TEST_CLIENT_ID,
         'redirect_uri': TEST_REDIRECT_URI,
         'response_type': 'code',
         'scope': 'data'
     }
     response = self.get(self.url, params=query_params)
     self.assertOK(response)
     csrf_string = 'name="csrf_token" type="hidden" value="'
     begin = response.body.find(csrf_string) + len(csrf_string)
     end = response.body.find('"', begin)
     csrf_token = response.body[begin:end]
     if query_params:
         query_params = urlencode(query_params, doseq=True)
         if '?' in url:
             url += '&'
         else:
             url += '?'
         url += query_params
     params = {'csrf_token': csrf_token, 'grant': 'Grant'}
     response = self.post(url, params)
     self.assertRedirects(response)
     self.assertRegexpMatches(response.headers['Location'], ur"https://localhost/\?code=.+")
     self.assertEqual(1, Client.query().count())
Exemplo n.º 15
0
 def test_post_minimum(self):
     self.client.key.delete()
     self.client = None
     params = {
         'redirect_uris': [TEST_REDIRECT_URI]
     }
     response = self.post_json(self.url, params=params)
     self.assertCreated(response)
     self.assertEqual(Client.query().count(), 1)
     client = Client.query().get()
     self.assertTrue(client.active)
     body = json.loads(response.body)
     self.assertEqual(len(body), NUM_CLIENT_FIELDS-3)
     self.assertEqual(body['client_id'], client.client_id)
     self.assertEqual(body['redirect_uris'], [TEST_REDIRECT_URI])
     self.assertEqual(body['registration_client_uri'], 'https://localhost:80/oauth/v1/clients/{0}'.format(client.client_id))
     self.assertEqual(body['registration_access_token'], client.registration_access_token)
     self.assertEqual(body['client_secret'], client.secret)
     self.assertEqual(body['client_secret_expires_at'], client.secret_expires_at)
Exemplo n.º 16
0
 def test_post_minimum(self):
     self.client.key.delete()
     self.client = None
     params = {'redirect_uris': [TEST_REDIRECT_URI]}
     response = self.post_json(self.url, params=params)
     self.assertCreated(response)
     self.assertEqual(Client.query().count(), 1)
     client = Client.query().get()
     self.assertTrue(client.active)
     body = json.loads(response.body)
     self.assertEqual(len(body), NUM_CLIENT_FIELDS - 3)
     self.assertEqual(body['client_id'], client.client_id)
     self.assertEqual(body['redirect_uris'], [TEST_REDIRECT_URI])
     self.assertEqual(
         body['registration_client_uri'],
         'https://localhost:80/oauth/v1/clients/{0}'.format(
             client.client_id))
     self.assertEqual(body['registration_access_token'],
                      client.registration_access_token)
     self.assertEqual(body['client_secret'], client.secret)
     self.assertEqual(body['client_secret_expires_at'],
                      client.secret_expires_at)
Exemplo n.º 17
0
 def test_delete(self):
     response = self.delete(
         self.url, bearer_token=self.client.registration_access_token)
     self.assertNoContent(response)
     self.assertEqual(Client.query().count(), 0)
Exemplo n.º 18
0
 def test_delete_no_auth(self):
     response = self.delete(self.url)
     self.assertUnauthorized(response)
     self.assertEqual(Client.query().count(), 1)
Exemplo n.º 19
0
 def test_delete_invalid_client_id(self):
     response = self.delete(self.URL.format('invalid_client_id'), bearer_token=self.client.registration_access_token)
     self.assertUnauthorized(response)
     self.assertEqual(Client.query().count(), 1)
Exemplo n.º 20
0
 def test_delete_no_auth(self):
     response = self.delete(self.url)
     self.assertUnauthorized(response)
     self.assertEqual(Client.query().count(), 1)
Exemplo n.º 21
0
 def test_delete(self):
     response = self.delete(self.url, bearer_token=self.client.registration_access_token)
     self.assertNoContent(response)
     self.assertEqual(Client.query().count(), 0)
Exemplo n.º 22
0
 def test_delete_invalid_client_id(self):
     response = self.delete(
         self.URL.format('invalid_client_id'),
         bearer_token=self.client.registration_access_token)
     self.assertUnauthorized(response)
     self.assertEqual(Client.query().count(), 1)