def test_join_bad_request(self):
        fake_docker_network_id = hashlib.sha256(
            str(random.getrandbits(256))).hexdigest()
        invalid_docker_endpoint_id = 'id-should-be-hexdigits'
        fake_container_id = hashlib.sha256(
            str(random.getrandbits(256))).hexdigest()

        response = self._invoke_join_request(
            fake_docker_network_id, invalid_docker_endpoint_id,
            utils.get_sandbox_key(fake_container_id))

        self.assertEqual(400, response.status_code)
        decoded_json = jsonutils.loads(response.data)
        self.assertTrue('Err' in decoded_json)
        # TODO(tfukushima): Add the better error message validation.
        self.assertTrue(invalid_docker_endpoint_id in decoded_json['Err'])
        self.assertTrue('EndpointID' in decoded_json['Err'])
    def test_network_driver_join(self):
        fake_docker_network_id = hashlib.sha256(
            str(random.getrandbits(256))).hexdigest()
        fake_docker_endpoint_id = hashlib.sha256(
            str(random.getrandbits(256))).hexdigest()
        fake_container_id = hashlib.sha256(
            str(random.getrandbits(256))).hexdigest()

        data = {
            'NetworkID': fake_docker_network_id,
            'EndpointID': fake_docker_endpoint_id,
            'SandboxKey': utils.get_sandbox_key(fake_container_id),
            'Options': {},
        }
        response = self.app.post('/NetworkDriver.Join',
                                 content_type='application/json',
                                 data=jsonutils.dumps(data))

        self.assertEqual(200, response.status_code)
        decoded_json = jsonutils.loads(response.data)
        app.logger.info(decoded_json)
        self.assertEqual(constants.SCHEMA['JOIN'], decoded_json)
 def test_get_sandbox_key(self, fake_container_id):
     sandbox_key = utils.get_sandbox_key(fake_container_id)
     expected = '/'.join([utils.DOCKER_NETNS_BASE, fake_container_id[:12]])
     self.assertEqual(expected, sandbox_key)