/**
*
* 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.airavata.registry.core.repositories;
import org.apache.airavata.model.user.UserProfile;
import org.apache.airavata.model.workspace.Gateway;
import org.apache.airavata.model.workspace.GatewayApprovalStatus;
import org.apache.airavata.model.workspace.Notification;
import org.apache.airavata.model.workspace.Project;
import org.apache.airavata.registry.core.entities.workspacecatalog.GatewayEntity;
import org.apache.airavata.registry.core.entities.workspacecatalog.NotificationEntity;
import org.apache.airavata.registry.core.entities.workspacecatalog.ProjectEntity;
import org.apache.airavata.registry.core.entities.workspacecatalog.UserProfileEntity;
import org.apache.airavata.registry.core.repositories.workspacecatalog.GatewayRepository;
import org.apache.airavata.registry.core.repositories.workspacecatalog.NotificationRepository;
import org.apache.airavata.registry.core.repositories.workspacecatalog.ProjectRepository;
import org.apache.airavata.registry.core.repositories.workspacecatalog.UserProfileRepository;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.UUID;
public class WorkspaceRepositoryTest {
private final static Logger logger = LoggerFactory.getLogger(WorkspaceRepositoryTest.class);
private GatewayRepository gatewayRepository;
private NotificationRepository notificationRepository;
private UserProfileRepository userProfileRepository;
private ProjectRepository projectRepository;
private String gatewayId;
private String notificationId;
private String userId;
private String projectId;
private final String GATEWAY_DOMAIN = "test1.com";
private final String NOTIFY_MESSAGE = "NotifyMe";
private final String USER_COMMENT = "TestComment";
private final String PROJECT_DESCRIPTION = "Test Description";
@Before
public void setupRepository() {
gatewayRepository = new GatewayRepository(Gateway.class, GatewayEntity.class);
notificationRepository = new NotificationRepository(Notification.class,
NotificationEntity.class);
userProfileRepository = new UserProfileRepository(UserProfile.class, UserProfileEntity.class);
projectRepository = new ProjectRepository(Project.class, ProjectEntity.class);
gatewayId = "test.com" + System.currentTimeMillis();
notificationId = UUID.randomUUID().toString();
userId = "testuser" + System.currentTimeMillis();
projectId = "project" + System.currentTimeMillis();
}
@Test
public void userProfileRepositoryTest() {
/*
* Creating Gateway required for UserProfile creation
*/
Gateway gateway = new Gateway();
gateway.setGatewayApprovalStatus(GatewayApprovalStatus.ACTIVE);
gateway.setGatewayId(gatewayId);
gateway.setDomain(GATEWAY_DOMAIN);
gateway = gatewayRepository.create(gateway);
Assert.assertTrue(!gateway.getGatewayId().isEmpty());
/*
* UserProfile Instance creation
*/
UserProfile userProfile = new UserProfile();
userProfile.setAiravataInternalUserId(userId);
userProfile.setGatewayId(gateway.getGatewayId());
/*
* Workspace UserProfile Repository Insert Operation Test
*/
userProfile = userProfileRepository.create(userProfile);
Assert.assertTrue(!userProfile.getAiravataInternalUserId().isEmpty());
/*
* Workspace UserProfile Repository Update Operation Test
*/
userProfile.setComments(USER_COMMENT);
userProfileRepository.update(userProfile);
userProfile = userProfileRepository.get(userId);
System.out.println(userProfile.getComments());
Assert.assertEquals(userProfile.getComments(), USER_COMMENT);
/*
* Workspace UserProfile Repository Select Operation Test
*/
userProfile = userProfileRepository.get(userId);
Assert.assertNotNull(userProfile);
/*
* Workspace UserProfile Repository Delete Operation
*/
boolean deleteResult = userProfileRepository.delete(userId);
Assert.assertTrue(deleteResult);
deleteResult = gatewayRepository.delete(gatewayId);
Assert.assertTrue(deleteResult);
}
@Test
public void projectRepositoryTest() {
/*
* Creating Gateway required for UserProfile & Project creation
*/
Gateway gateway = new Gateway();
gateway.setGatewayApprovalStatus(GatewayApprovalStatus.ACTIVE);
gateway.setGatewayId(gatewayId);
gateway.setDomain(GATEWAY_DOMAIN);
gateway = gatewayRepository.create(gateway);
Assert.assertTrue(!gateway.getGatewayId().isEmpty());
/*
* UserProfile Instance creation required for Project Creation
*/
UserProfile userProfile = new UserProfile();
userProfile.setAiravataInternalUserId(userId);
userProfile.setGatewayId(gateway.getGatewayId());
userProfile = userProfileRepository.create(userProfile);
Assert.assertTrue(!userProfile.getAiravataInternalUserId().isEmpty());
/*
* Project Instance creation
*/
Project project = new Project();
project.setGatewayId(gatewayId);
project.setOwner(userId);
project.setProjectID(projectId);
project.setGatewayIdIsSet(true);
/*
* Workspace Project Repository Insert Operation Test
*/
project = projectRepository.create(project);
Assert.assertTrue(!project.getProjectID().isEmpty());
/*
* Workspace Project Repository Update Operation Test
*/
project.setDescription(PROJECT_DESCRIPTION);
projectRepository.update(project);
project = projectRepository.get(projectId);
Assert.assertEquals(project.getDescription(), PROJECT_DESCRIPTION);
/*
* Workspace Project Repository Select Operation Test
*/
project = projectRepository.get(projectId);
Assert.assertNotNull(project);
/*
* Workspace Project Repository Delete Operation
*/
boolean deleteResult = projectRepository.delete(projectId);
Assert.assertTrue(deleteResult);
deleteResult = userProfileRepository.delete(userId);
Assert.assertTrue(deleteResult);
deleteResult = gatewayRepository.delete(gatewayId);
Assert.assertTrue(deleteResult);
}
}