| /** |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with this |
| * work for additional information regarding copyright ownership. The ASF |
| * licenses this file to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| * License for the specific language governing permissions and limitations under |
| * the License. |
| */ |
| package org.apache.hadoop.ozone.security.acl; |
| |
| import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos; |
| import org.junit.Test; |
| |
| import static org.apache.hadoop.ozone.OzoneConsts.OZONE_URI_DELIMITER; |
| import static org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OzoneObj.ObjectType.*; |
| import static org.junit.Assert.*; |
| import org.apache.hadoop.ozone.security.acl.OzoneObj.ResourceType; |
| |
| /** |
| * Test class for {@link OzoneObjInfo}. |
| * */ |
| public class TestOzoneObjInfo { |
| |
| private OzoneObjInfo objInfo; |
| private OzoneObjInfo.Builder builder; |
| private String volume = "vol1"; |
| private String bucket = "bucket1"; |
| private String key = "key1"; |
| private static final OzoneObj.StoreType STORE = OzoneObj.StoreType.OZONE; |
| |
| |
| @Test |
| public void testGetVolumeName() { |
| |
| builder = getBuilder(volume, bucket, key); |
| objInfo = builder.build(); |
| assertEquals(objInfo.getVolumeName(), volume); |
| |
| objInfo = getBuilder(null, null, null).build(); |
| assertEquals(objInfo.getVolumeName(), null); |
| |
| objInfo = getBuilder(volume, null, null).build(); |
| assertEquals(objInfo.getVolumeName(), volume); |
| } |
| |
| private OzoneObjInfo.Builder getBuilder(String withVolume, |
| String withBucket, |
| String withKey) { |
| return OzoneObjInfo.Builder.newBuilder() |
| .setResType(ResourceType.VOLUME) |
| .setStoreType(STORE) |
| .setVolumeName(withVolume) |
| .setBucketName(withBucket) |
| .setKeyName(withKey); |
| } |
| |
| @Test |
| public void testGetBucketName() { |
| objInfo = getBuilder(volume, bucket, key).build(); |
| assertEquals(objInfo.getBucketName(), bucket); |
| |
| objInfo =getBuilder(volume, null, null).build(); |
| assertEquals(objInfo.getBucketName(), null); |
| |
| objInfo =getBuilder(null, bucket, null).build(); |
| assertEquals(objInfo.getBucketName(), bucket); |
| } |
| |
| @Test |
| public void testGetKeyName() { |
| objInfo = getBuilder(volume, bucket, key).build(); |
| assertEquals(objInfo.getKeyName(), key); |
| |
| objInfo = getBuilder(volume, null, null).build(); |
| assertEquals(objInfo.getKeyName(), null); |
| |
| objInfo = getBuilder(null, bucket, null).build(); |
| assertEquals(objInfo.getKeyName(), null); |
| |
| objInfo = getBuilder(null, null, key).build(); |
| assertEquals(objInfo.getKeyName(), key); |
| } |
| |
| @Test |
| public void testFromProtobufOp() { |
| // Key with long path. |
| key = "dir1/dir2/dir3/dir4/dir5/abc.txt"; |
| OzoneManagerProtocolProtos.OzoneObj protoObj = OzoneManagerProtocolProtos. |
| OzoneObj.newBuilder() |
| .setResType(KEY) |
| .setStoreType(OzoneManagerProtocolProtos.OzoneObj.StoreType.OZONE) |
| .setPath(volume + OZONE_URI_DELIMITER + |
| bucket + OZONE_URI_DELIMITER + key) |
| .build(); |
| |
| objInfo = OzoneObjInfo.fromProtobuf(protoObj); |
| assertEquals(objInfo.getKeyName(), key); |
| objInfo = getBuilder(volume, null, null).build(); |
| assertEquals(objInfo.getKeyName(), null); |
| objInfo = getBuilder(null, bucket, null).build(); |
| assertEquals(objInfo.getKeyName(), null); |
| objInfo = getBuilder(null, null, key).build(); |
| assertEquals(objInfo.getKeyName(), key); |
| |
| // Key with long path. |
| key = "dir1/dir2/dir3/dir4/dir5/abc.txt"; |
| protoObj = OzoneManagerProtocolProtos. |
| OzoneObj.newBuilder() |
| .setResType(KEY) |
| .setStoreType(OzoneManagerProtocolProtos.OzoneObj.StoreType.OZONE) |
| .setPath(OZONE_URI_DELIMITER + volume + OZONE_URI_DELIMITER + |
| bucket + OZONE_URI_DELIMITER + key) |
| .build(); |
| |
| objInfo = OzoneObjInfo.fromProtobuf(protoObj); |
| assertEquals(objInfo.getKeyName(), key); |
| objInfo = getBuilder(volume, null, null).build(); |
| assertEquals(objInfo.getKeyName(), null); |
| objInfo = getBuilder(null, bucket, null).build(); |
| assertEquals(objInfo.getKeyName(), null); |
| objInfo = getBuilder(null, null, key).build(); |
| assertEquals(objInfo.getKeyName(), key); |
| |
| // Key with long path. |
| key = "dir1/dir2/dir3/dir4/dir5/"; |
| protoObj = OzoneManagerProtocolProtos. |
| OzoneObj.newBuilder() |
| .setResType(KEY) |
| .setStoreType(OzoneManagerProtocolProtos.OzoneObj.StoreType.OZONE) |
| .setPath(OZONE_URI_DELIMITER + volume + OZONE_URI_DELIMITER + |
| bucket + OZONE_URI_DELIMITER + key) |
| .build(); |
| |
| objInfo = OzoneObjInfo.fromProtobuf(protoObj); |
| assertEquals(objInfo.getKeyName(), key); |
| objInfo = getBuilder(volume, null, null).build(); |
| assertEquals(objInfo.getKeyName(), null); |
| objInfo = getBuilder(null, bucket, null).build(); |
| assertEquals(objInfo.getKeyName(), null); |
| objInfo = getBuilder(null, null, key).build(); |
| assertEquals(objInfo.getKeyName(), key); |
| } |
| } |