Example #1
0
    def setUp(self):
        super(WebSocketTestCase, self).setUp()

        DatabaseManager.add('default', ':memory:')
        
        
        User._users = UserManager()
        Token._tokens = TokenManager()

        self.username_0 = '*****@*****.**'
        self.password_0 = 'asdfasdf'
        self.username_1 = '*****@*****.**'
        self.password_1 = 'qwerqwer'

        self.user_0 = User(self.username_0, self.password_0, True)
        self.user_0.save()

        self.user_1 = User(self.username_1, self.password_1, True)
        self.user_1.save()

        self.token_0 = Token(user=self.user_0)
        self.token_0.save()

        self.token_1 = Token(user=self.user_1)
        self.token_1.save()
Example #2
0
    def setUp(self):
        super(HTTPTestCase, self).setUp()
        DatabaseManager.add("default", ":memory:")

        User._users = UserManager()
        Token._tokens = TokenManager()

        self.username_0 = "*****@*****.**"
        self.password_0 = "asdfasdf"
        self.username_1 = "*****@*****.**"
        self.password_1 = "qwerqwer"

        self.user_0 = User(self.username_0, self.password_0, True)
        self.user_0.save()

        self.user_1 = User(self.username_1, self.password_1, True)
        self.user_1.save()

        self.token_0 = Token(user=self.user_0)
        self.token_0.save()

        self.token_1 = Token(user=self.user_1)
        self.token_1.save()
Example #3
0
    def test_token(self):
    	
        # The reason we're creating a new UserManager() here is because
        # there was a previous UserManager() instance created in another
        # test that was connected to a different database. So, we create
        # a new UserManager() that connects to the database we've created
        # in this test.
        User._users = UserManager()
        Token._tokens = TokenManager()

    	user_0 = User('jim', 'asdf', True)
    	user_0.save()

        user_1 = User('jane', 'qwer', False)
        user_1.save()

        token_0 = Token(user_0)
        token_0.save()

        with self.assertRaises(ValueError):
            token_0.save()

        self.assertEqual(token_0.id, 1, 'id is 1')

        token_0_1 = Token.tokens().get_token_for_user(user_0)
        self.assertEqual(token_0.id, token_0_1.id, 'ids are equal')
        self.assertEqual(token_0.user, token_0_1.user, 'users are equal')
        self.assertEqual(token_0.token, token_0_1.token, 'tokens are equal')
        self.assertEqual(token_0.created, token_0_1.created, 'created are equal')

        token_1 = Token(user_1)
        token_1.save()
        self.assertEqual(token_1.id, 2, 'id is 2')
        self.assertEqual(Token.tokens().count(), 2, '2 tokens saved')

        token_2 = Token(user_0)
        with self.assertRaises(ValueError):
            token_2.save()

        self.assertEqual(Token.tokens().count(), 2, 'still 2 tokens saved')
        self.assertEqual(len(Token.tokens().all()), 2, 'len of all is 2.')

        token_1.delete()
        self.assertEqual(token_1.id, None, 'token has no id')
        self.assertEqual(token_1.created, None, 'token has no created')
        self.assertEqual(Token.tokens().count(), 1, '1 token saved')
        token_1.delete()
        self.assertEqual(Token.tokens().count(), 1, 'still 1 token saved')
Example #4
0
class WebSocketTestCase(AsyncHTTPTestCase):
    def setUp(self):
        super(WebSocketTestCase, self).setUp()

        DatabaseManager.add('default', ':memory:')
        
        
        User._users = UserManager()
        Token._tokens = TokenManager()

        self.username_0 = '*****@*****.**'
        self.password_0 = 'asdfasdf'
        self.username_1 = '*****@*****.**'
        self.password_1 = 'qwerqwer'

        self.user_0 = User(self.username_0, self.password_0, True)
        self.user_0.save()

        self.user_1 = User(self.username_1, self.password_1, True)
        self.user_1.save()

        self.token_0 = Token(user=self.user_0)
        self.token_0.save()

        self.token_1 = Token(user=self.user_1)
        self.token_1.save()

    def tearDown(self):
        DatabaseManager.remove('default')
        # ProcInfo.purge()

    def get_app(self):
        app = Application([
            (r'/ws/', WSHandler),
        ])
        return app

    @gen_test
    def test_wshandler_no_authorization(self):
        ws_url = 'ws://localhost:' + str(self.get_http_port()) + '/ws/'
        ws_client = yield websocket_connect(ws_url)
        ws_client.write_message(json.dumps({'msg':'update'}))
        response = yield ws_client.read_message()
        self.assertEqual(response, None, "No response from server because authorization not provided.")
        # self.assertEqual(len(WSHandler.connections), 0, "0 websocket connections.")

    @gen_test
    def test_wshandler_bad_authorization(self):
        ws_url = 'ws://localhost:' + str(self.get_http_port()) + '/ws/'
        ws_client = yield websocket_connect(ws_url, headers={'authorization':'asdf'})
        ws_client.write_message(json.dumps({'msg':'update'}))
        response = yield ws_client.read_message()
        self.assertEqual(response, None, "No response from server because bad authorization provided.")
        # self.assertEqual(len(WSHandler.connections), 0, "0 websocket connections.")

    @gen_test
    def test_wshandler_authorization(self):
        ws_url = 'ws://localhost:' + str(self.get_http_port()) + '/ws/'
        ws_client = yield websocket_connect(ws_url, headers={'authorization':self.token_0.token})
        ws_client.write_message(json.dumps({'msg':'update'}))
        response = yield ws_client.read_message()
        response_data = json.loads(response)
        self.assertEqual(response_data['msg'], 'updated', "Update response from server.")
        self.assertEqual(len(WSHandler.connections), 1, "1 websocket connection.")
Example #5
0
class HTTPTestCase(AsyncHTTPTestCase):
    def setUp(self):
        super(HTTPTestCase, self).setUp()
        DatabaseManager.add("default", ":memory:")

        User._users = UserManager()
        Token._tokens = TokenManager()

        self.username_0 = "*****@*****.**"
        self.password_0 = "asdfasdf"
        self.username_1 = "*****@*****.**"
        self.password_1 = "qwerqwer"

        self.user_0 = User(self.username_0, self.password_0, True)
        self.user_0.save()

        self.user_1 = User(self.username_1, self.password_1, True)
        self.user_1.save()

        self.token_0 = Token(user=self.user_0)
        self.token_0.save()

        self.token_1 = Token(user=self.user_1)
        self.token_1.save()

    def tearDown(self):
        DatabaseManager.remove("default")
        ProcInfo.purge()

    def get_app(self):
        return Application(
            [url(r"/", HTTPVersionHandler), url(r"/status/", HTTPStatusHandler), url(r"/token/", HTTPTokenHandler)]
        )

    def test_http_handler(self):
        response = self.fetch("/", method="GET")
        response_data = json.loads(response.body)
        self.assertTrue("version" in response_data)
        self.assertEqual(response.code, 200)

    def test_http_token_handler(self):
        headers = {"username": self.username_0, "password": self.password_0}
        response = self.fetch("/token/", method="GET", headers=headers)
        response_data = json.loads(response.body)
        self.assertEqual(response.code, 200)
        self.assertEqual(self.token_0.token, response_data["token"])

    def test_http_status_handler(self):
        ProcInfo("proc_0", "group_0", 1, 20, "RUNNING", time.time())
        ProcInfo("proc_1", "group_1", 2, 0, "STOPPED", time.time())

        # Update ProcInfo 3 times.
        num_updates = 3
        for i in range(num_updates):
            ProcInfo.updateall()

        headers = {"authorization": self.token_0.token}
        response = self.fetch("/status/", method="GET", headers=headers)
        response_data = json.loads(response.body)
        self.assertEqual(response.code, 200)
        self.assertTrue("processes" in response_data)
        self.assertEqual(len(response_data["processes"][0]["cpu"]), num_updates, "cpu length is %s" % num_updates)
        self.assertEqual(len(response_data["processes"][0]["mem"]), num_updates, "mem length is %s" % num_updates)