/*
* Copyright 2012 Nodeable Inc
*
* Licensed 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 com.streamreduce;
import com.mongodb.Mongo;
import com.streamreduce.core.ApplicationManager;
import com.streamreduce.core.model.Account;
import com.streamreduce.core.model.User;
import com.streamreduce.core.service.ConnectionService;
import com.streamreduce.core.service.SearchServiceImpl;
import com.streamreduce.core.service.SecurityService;
import com.streamreduce.core.service.UserService;
import com.streamreduce.core.service.exception.UserNotFoundException;
import com.streamreduce.datasource.BootstrapDatabaseDataPopulator;
import org.junit.After;
import org.junit.Before;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.ResourceBundle;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
"classpath:core-config.xml",
"classpath:test-datasource-config.xml",
"classpath:camel-config.xml",
"classpath:test-config.xml"}
)
@DirtiesContext(classMode=DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
public abstract class AbstractServiceTestCase {
public final ResourceBundle cloudProperties = ResourceBundle.getBundle("cloud");
public final ResourceBundle gitHubProperties = ResourceBundle.getBundle("github");
public final ResourceBundle jiraProperties = ResourceBundle.getBundle("jira");
public final ResourceBundle twitterProperties = ResourceBundle.getBundle("twitter");
protected transient Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
protected ApplicationManager applicationManager;
@Autowired
protected UserService userService;
@Autowired
protected SecurityService securityService;
@Autowired
protected ConnectionService connectionService;
@Autowired
private SearchServiceImpl searchServiceImpl;
@Autowired
private BootstrapDatabaseDataPopulator bootstrapDatabaseDataPopulator;
protected User testUser;
protected Account testAccount;
@Before
public void setUp() throws Exception {
searchServiceImpl.setEnabled(false);
bootstrapDatabaseDataPopulator.bootstrapMinimumData(); //Doing a fake DBUnit here. tearDown() deletes the dbs
createTestUser();
}
private void createTestUser() {
String testUsername = "test@nodeable.com";
try {
testUser = userService.getUser(testUsername);
testAccount = testUser.getAccount();
} catch (UserNotFoundException e) {
Account account = new Account.Builder()
.url("http://nodeable.com")
.description("Nodeable Test Account")
.name("Nodeable Test")
.build();
testAccount = userService.createAccount(account);
testUser = userService.createUser(
new User.Builder()
.username(testUsername)
.accountLocked(false)
.fullname("Test User")
.account(testAccount)
.roles(userService.getAdminRoles())
.accountOriginator(true)
.alias("test")
.password(testUsername)
.build()
);
}
}
@After
public void tearDown() throws Exception {
Mongo mongo = applicationManager.getMessageDBDatastore().getMongo();
mongo.dropDatabase("TEST_nodeabledb");
mongo.dropDatabase("TEST_nodeablemsgdb");
}
public User getTestUser() {
return testUser;
}
public Account getTestAccount() {
return testAccount;
}
}