def test_exceeds_max_personality_size(self): """ Fails when size of decoded content in personality exceeds max limit """ self.personality[0]["contents"] = base64.b64encode("abc" * 30) d = validate_personality(self.log, "token", "endpoint", self.personality) f = self.failureResultOf(d, InvalidFileContentSize) self.assertEqual(f.value.message, 'File "/etc/banner.txt" content\'s size exceeds maximum size "35"')
def test_exceeds_max_personality(self): """ Fails when number of files in personality exceeds max limit """ self.personality.append({"path": "/somepath", "contents": self.personality[0]["contents"]}) d = validate_personality(self.log, "token", "endpoint", self.personality) f = self.failureResultOf(d, InvalidMaxPersonality) self.assertEqual(f.value.message, 'Number of files "2" in personality exceeds maximum limit "1"')
def test_invalid_base64_chars(self): """ Fails when content is having non-base64 characters but is valid encoding """ self.personality[0]["contents"] = "()()" d = validate_personality(self.log, "token", "endpoint", self.personality) f = self.failureResultOf(d, InvalidBase64Encoding) self.assertEqual(f.value.message, 'Invalid base64 encoding for contents of path "/etc/banner.txt"')
def test_invalid_base64_encoding(self): """ Fails when content is not base64 encoded """ self.personality[0]["contents"] = "bad encoding" d = validate_personality(self.log, "token", "endpoint", self.personality) f = self.failureResultOf(d, InvalidBase64Encoding) self.assertEqual(f.value.message, 'Invalid base64 encoding for contents of path "/etc/banner.txt"')
def test_valid(self): """ Succeeds if given personality is valid """ self.headers["x-auth-token"] = ["token"] d = validate_personality(self.log, "token", "endpoint", self.personality) self.successResultOf(d) self.treq.get.assert_called_once_with("endpoint/limits", headers=self.headers)
def test_valid(self): """ Succeeds if given personality is valid """ self.headers['x-auth-token'] = ['token'] d = validate_personality(self.log, 'token', 'endpoint', self.personality) self.successResultOf(d) self.treq.get.assert_called_once_with( 'endpoint/limits', headers=self.headers, log=self.log)
def test_exceeds_max_personality(self): """ Fails when number of files in personality exceeds max limit """ self.personality.append( {'path': '/somepath', 'contents': self.personality[0]['contents']}) d = validate_personality(self.log, 'token', 'endpoint', self.personality) f = self.failureResultOf(d, InvalidMaxPersonality) self.assertEqual( f.value.message, 'Number of files "2" in personality exceeds maximum limit "1"')
def test_limit_failure_succeeds(self): """ If getting /limits fails, then it logs and just validates base64 encoding and succeed """ self.treq.get.return_value = defer.succeed(mock.Mock(code=500)) d = validate_personality(self.log, 'token', 'endpoint', self.personality) self.successResultOf(d) self.log.msg.assert_called_once_with( 'Skipping personality size checks due to limits error', reason=CheckFailure(RequestError))