package io.evercam;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import java.util.ArrayList;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertTrue;
public class CameraShareRequestTest {
@BeforeClass
public static void setUpClass() {
API.URL = TestURL.URL;
}
@Test
public void testGetPatchDeleteCameraShareRequest() throws EvercamException {
final String TEST_SHARER_EMAIL = "liuting+999@evercam.io";
//TODO: Use the testing server / remove the commented code
//API.resetUrl();
//Create camera owner and add a camera
RandomUser owner = new RandomUser();
ApiKeyPair ownerKeyPair = API.requestUserKeyPairFromEvercam(owner.getUsername(), owner.getPassword());
Camera ownedCamera = owner.addRandomCamera(true);
//Owner share the camera with a user that doesn't exist
API.setUserKeyPair(ownerKeyPair.getApiKey(), ownerKeyPair.getApiId());
CameraShare.create(ownedCamera.getId(), TEST_SHARER_EMAIL, Right.FULL_RIGHTS, CameraShareTest.TEST_SHARE_MESSAGE);
ArrayList<CameraShareRequest> shareRequestList = CameraShareRequest.get(ownedCamera.getId(),
CameraShareRequest.STATUS_PENDING);
assertEquals(1, shareRequestList.size());
CameraShareRequest shareRequest = shareRequestList.get(0);
assertEquals(ownedCamera.getId(), shareRequest.getCameraId());
assertEquals(owner.getUser().getFirstName() + " " + owner.getUser().getLastName(), shareRequest.getSharerName());
assertEquals(owner.getEmail(), shareRequest.getSharerEmail());
assertEquals(Right.FULL_RIGHTS, shareRequest.getRights().toString());
assertEquals(owner.getUsername(), shareRequest.getUserId());
assertEquals(TEST_SHARER_EMAIL, shareRequest.getEmail());
//Test patch share request
CameraShareRequest patchedShareRequest = CameraShareRequest.patch(ownedCamera.getId(), TEST_SHARER_EMAIL,
Right.READ_ONLY);
assertEquals(Right.READ_ONLY, patchedShareRequest.getRights().toString());
//Test resend/delete/revoke share request
assertTrue(CameraShareRequest.resend(ownedCamera.getId(), TEST_SHARER_EMAIL));
assertTrue(CameraShareRequest.delete(ownedCamera.getId(), TEST_SHARER_EMAIL));
ArrayList<CameraShareRequest> shareRequestListAfterDelete = CameraShareRequest.get(ownedCamera.getId(),
CameraShareRequest.STATUS_PENDING);
assertEquals(0, shareRequestListAfterDelete.size());
//Delete the random user after testing
assertTrue(User.delete(owner.getUsername()));
//API.URL = TestURL.URL;
}
@AfterClass
public static void destroyClass() {
}
}