class ResourceMapperTestCase(unittest.TestCase): """Test the resource mapper.""" def setUp(self): super(ResourceMapperTestCase, self).setUp() self.mapper = ResourceMapper() def test_mapping(self): """Test mapping.""" self.assertEqual(self.mapper.user(), '') self.assertEqual(self.mapper.volume('~/1'), '/volumes/~/1') self.assertEqual(self.mapper.node('~/1', '/x'), '/~/1/x') def test_mapping_override(self): """Test mapping.""" self.mapper.root = '' self.mapper.mapping['NODE_INFO'] = '/n/%(node_path)s' self.assertEqual(self.mapper.user(), '') self.assertEqual(self.mapper.volume(1), '/volumes/1') self.assertEqual(self.mapper.node('a', 'b'), '/n/b') def test_user_repr(self): """Test Rest conversion of a user.""" user = MockUser() udf = MockVolume() info = self.mapper.user_repr(user, [udf]) self.assertEqual(info['user_id'], user.id) self.assertEqual(info['visible_name'], user.visible_name) self.assertEqual(info['used_bytes'], user.used_storage_bytes) self.assertEqual(info['max_bytes'], user.max_storage_bytes) self.assertEqual(info['root_node_path'], self.mapper.node(settings.ROOT_USERVOLUME_PATH)) self.assertEqual(info['user_node_paths'], [self.mapper.node(udf.path)]) def test_volume_repr(self): """Test Rest conversion of a volume.""" udf = MockVolume() info = self.mapper.volume_repr(udf) self.assertEqual(info['resource_path'], '/volumes/~/Documents') self.assertEqual(info['type'], 'root' if udf.is_root else 'udf') self.assertEqual(info['path'], udf.path) self.assertEqual(info['generation'], udf.generation) self.assertEqual(info['node_path'], self.mapper.node(udf.path)) self.assertEqual(info['when_created'], date_formatter(udf.when_created)) def test_volume_with_delta_repr0(self): """Test Rest conversion of a vol with delta information, no nodes.""" udf = MockVolume() nodes = [] info = self.mapper.volume_repr(volume=udf, from_generation=0, nodes=nodes) self.assertEqual(info['resource_path'], '/volumes/~/Documents') self.assertEqual(info['type'], 'root' if udf.is_root else 'udf') self.assertEqual(info['path'], udf.path) self.assertEqual(info['generation'], udf.generation) self.assertEqual(info['node_path'], self.mapper.node(udf.path)) self.assertEqual(info['when_created'], date_formatter(udf.when_created)) self.assertEqual(info['delta']['from_generation'], 0) self.assertEqual(info['delta']['nodes'], nodes) def test_volume_with_delta_repr1(self): """Test Rest conversion of a volume with delta innformation, with nodes.""" udf = MockVolume() nodes = [MockNode(), MockNode()] info = self.mapper.volume_repr(volume=udf, from_generation=0, nodes=nodes) self.assertEqual(info['delta']['from_generation'], 0) self.assertEqual(info['delta']['nodes'], [self.mapper.node_repr(node) for node in nodes]) def test_file_node_repr(self): """Test Rest conversion of a file node.""" f1 = MockNode() info = self.mapper.node_repr(f1) self.assertEqual(info['key'], f1.nodekey) self.assertEqual(info['kind'], f1.kind.lower()) self.assertEqual(info['path'], f1.full_path) self.assertEqual(info['hash'], f1.content_hash) self.assertEqual(info['when_created'], date_formatter(f1.when_created)) self.assertEqual(info['when_changed'], date_formatter(f1.when_last_modified)) self.assertEqual(info['generation'], f1.generation) self.assertEqual(info['generation_created'], f1.generation_created) self.assertEqual(info['public_url'], f1.public_url) self.assertEqual(info['is_public'], f1.is_public) self.assertEqual(info['parent_path'], "/%s/a/b/c/d" % settings.ROOT_USERVOLUME_PATH) self.assertEqual(info['volume_path'], "/volumes/%s" % settings.ROOT_USERVOLUME_PATH) self.assertEqual( info['content_path'], '/content/%s/a/b/c/d/file.txt' % settings.ROOT_USERVOLUME_PATH) # make sure file specific rules apply self.assertTrue('has_children' not in info) self.assertEqual(info['is_live'], True) def test_dir_node_repr(self): """Utility method to test Rest conversion of a directory node.""" f1 = MockNode() f1.kind = StorageObject.DIRECTORY info = self.mapper.node_repr(f1) self.assertEqual(info['key'], f1.nodekey) self.assertEqual(info['kind'], f1.kind.lower()) self.assertEqual(info['path'], f1.full_path) self.assertEqual(info['when_created'], date_formatter(f1.when_created)) self.assertEqual(info['when_changed'], date_formatter(f1.when_last_modified)) self.assertEqual(info['generation'], f1.generation) self.assertEqual(info['generation_created'], f1.generation_created) self.assertEqual(info['parent_path'], "/%s/a/b/c/d" % settings.ROOT_USERVOLUME_PATH) self.assertEqual(info['volume_path'], "/volumes/%s" % settings.ROOT_USERVOLUME_PATH) self.assertEqual( info['content_path'], '/content/%s/a/b/c/d/file.txt' % settings.ROOT_USERVOLUME_PATH) # make sure directory specific rules apply self.assertTrue('hash' not in info) self.assertTrue('is_public' not in info) self.assertTrue('public_url' not in info) self.assertTrue('has_children' in info) self.assertEqual(info['is_live'], True) def test_root_dir_node_repr(self): """Utility method to test Rest conversion of a root directory node.""" f1 = MockNode() f1.kind = StorageObject.DIRECTORY f1.name = "" f1.path = '/' f1.full_path = "/" info = self.mapper.node_repr(f1) self.assertEqual(info['key'], f1.nodekey) self.assertEqual(info['kind'], f1.kind.lower()) self.assertEqual(info['path'], f1.full_path) self.assertEqual(info['when_created'], date_formatter(f1.when_created)) self.assertEqual(info['when_changed'], date_formatter(f1.when_last_modified)) self.assertEqual(info['generation'], f1.generation) self.assertEqual(info['generation_created'], f1.generation_created) self.assertEqual(info['parent_path'], None) self.assertEqual(info['volume_path'], "/volumes/%s" % settings.ROOT_USERVOLUME_PATH) self.assertEqual(info['content_path'], '/content/%s' % settings.ROOT_USERVOLUME_PATH) # make sure directory specific rules apply self.assertTrue('hash' not in info) self.assertTrue('is_public' not in info) self.assertTrue('public_url' not in info) self.assertTrue('has_children' in info) self.assertEqual(info['is_live'], True)
class ResourceMapperTestCase(unittest.TestCase): """Test the resource mapper.""" def setUp(self): super(ResourceMapperTestCase, self).setUp() self.mapper = ResourceMapper() def test_mapping(self): """Test mapping.""" self.assertEqual(self.mapper.user(), '') self.assertEqual(self.mapper.volume('~/1'), '/volumes/~/1') self.assertEqual(self.mapper.node('~/1', '/x'), '/~/1/x') def test_mapping_override(self): """Test mapping.""" self.mapper.root = '' self.mapper.mapping['NODE_INFO'] = '/n/%(node_path)s' self.assertEqual(self.mapper.user(), '') self.assertEqual(self.mapper.volume(1), '/volumes/1') self.assertEqual(self.mapper.node('a', 'b'), '/n/b') def test_user_repr(self): """Test Rest conversion of a user.""" user = MockUser() udf = MockVolume() info = self.mapper.user_repr(user, [udf]) self.assertEqual(info['user_id'], user.id) self.assertEqual(info['visible_name'], user.visible_name) self.assertEqual(info['used_bytes'], user.used_storage_bytes) self.assertEqual(info['max_bytes'], user.max_storage_bytes) self.assertEqual( info['root_node_path'], self.mapper.node(settings.ROOT_USERVOLUME_PATH)) self.assertEqual( info['user_node_paths'], [self.mapper.node(udf.path)]) def test_volume_repr(self): """Test Rest conversion of a volume.""" udf = MockVolume() info = self.mapper.volume_repr(udf) self.assertEqual(info['resource_path'], '/volumes/~/Documents') self.assertEqual(info['type'], 'root' if udf.is_root else 'udf') self.assertEqual(info['path'], udf.path) self.assertEqual(info['generation'], udf.generation) self.assertEqual(info['node_path'], self.mapper.node(udf.path)) self.assertEqual( info['when_created'], date_formatter(udf.when_created)) def test_volume_with_delta_repr0(self): """Test Rest conversion of a vol with delta information, no nodes.""" udf = MockVolume() nodes = [] info = self.mapper.volume_repr( volume=udf, from_generation=0, nodes=nodes) self.assertEqual(info['resource_path'], '/volumes/~/Documents') self.assertEqual(info['type'], 'root' if udf.is_root else 'udf') self.assertEqual(info['path'], udf.path) self.assertEqual(info['generation'], udf.generation) self.assertEqual(info['node_path'], self.mapper.node(udf.path)) self.assertEqual( info['when_created'], date_formatter(udf.when_created)) self.assertEqual(info['delta']['from_generation'], 0) self.assertEqual(info['delta']['nodes'], nodes) def test_volume_with_delta_repr1(self): """Test Rest conversion of a volume with delta innformation, with nodes.""" udf = MockVolume() nodes = [MockNode(), MockNode()] info = self.mapper.volume_repr( volume=udf, from_generation=0, nodes=nodes) self.assertEqual(info['delta']['from_generation'], 0) self.assertEqual( info['delta']['nodes'], [self.mapper.node_repr(node) for node in nodes]) def test_file_node_repr(self): """Test Rest conversion of a file node.""" f1 = MockNode() info = self.mapper.node_repr(f1) self.assertEqual(info['key'], f1.nodekey) self.assertEqual(info['kind'], f1.kind.lower()) self.assertEqual(info['path'], f1.full_path) self.assertEqual(info['hash'], f1.content_hash) self.assertEqual( info['when_created'], date_formatter(f1.when_created)) self.assertEqual( info['when_changed'], date_formatter(f1.when_last_modified)) self.assertEqual(info['generation'], f1.generation) self.assertEqual(info['generation_created'], f1.generation_created) self.assertEqual(info['public_url'], f1.public_url) self.assertEqual(info['is_public'], f1.is_public) self.assertEqual( info['parent_path'], "/%s/a/b/c/d" % settings.ROOT_USERVOLUME_PATH) self.assertEqual( info['volume_path'], "/volumes/%s" % settings.ROOT_USERVOLUME_PATH) self.assertEqual( info['content_path'], '/content/%s/a/b/c/d/file.txt' % settings.ROOT_USERVOLUME_PATH) # make sure file specific rules apply self.assertTrue('has_children' not in info) self.assertEqual(info['is_live'], True) def test_dir_node_repr(self): """Utility method to test Rest conversion of a directory node.""" f1 = MockNode() f1.kind = StorageObject.DIRECTORY info = self.mapper.node_repr(f1) self.assertEqual(info['key'], f1.nodekey) self.assertEqual(info['kind'], f1.kind.lower()) self.assertEqual(info['path'], f1.full_path) self.assertEqual( info['when_created'], date_formatter(f1.when_created)) self.assertEqual( info['when_changed'], date_formatter(f1.when_last_modified)) self.assertEqual(info['generation'], f1.generation) self.assertEqual(info['generation_created'], f1.generation_created) self.assertEqual( info['parent_path'], "/%s/a/b/c/d" % settings.ROOT_USERVOLUME_PATH) self.assertEqual( info['volume_path'], "/volumes/%s" % settings.ROOT_USERVOLUME_PATH) self.assertEqual( info['content_path'], '/content/%s/a/b/c/d/file.txt' % settings.ROOT_USERVOLUME_PATH) # make sure directory specific rules apply self.assertTrue('hash' not in info) self.assertTrue('is_public' not in info) self.assertTrue('public_url' not in info) self.assertTrue('has_children' in info) self.assertEqual(info['is_live'], True) def test_root_dir_node_repr(self): """Utility method to test Rest conversion of a root directory node.""" f1 = MockNode() f1.kind = StorageObject.DIRECTORY f1.name = "" f1.path = '/' f1.full_path = "/" info = self.mapper.node_repr(f1) self.assertEqual(info['key'], f1.nodekey) self.assertEqual(info['kind'], f1.kind.lower()) self.assertEqual(info['path'], f1.full_path) self.assertEqual(info['when_created'], date_formatter(f1.when_created)) self.assertEqual( info['when_changed'], date_formatter(f1.when_last_modified)) self.assertEqual(info['generation'], f1.generation) self.assertEqual(info['generation_created'], f1.generation_created) self.assertEqual(info['parent_path'], None) self.assertEqual( info['volume_path'], "/volumes/%s" % settings.ROOT_USERVOLUME_PATH) self.assertEqual( info['content_path'], '/content/%s' % settings.ROOT_USERVOLUME_PATH) # make sure directory specific rules apply self.assertTrue('hash' not in info) self.assertTrue('is_public' not in info) self.assertTrue('public_url' not in info) self.assertTrue('has_children' in info) self.assertEqual(info['is_live'], True)