/*
* 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.core.model;
import com.streamreduce.AbstractServiceTestCase;
import com.streamreduce.connections.AuthType;
import com.streamreduce.connections.ConnectionProvidersForTests;
import com.streamreduce.core.dao.ConnectionDAO;
import org.junit.Ignore;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.util.ReflectionTestUtils;
import javax.validation.ConstraintViolationException;
import static com.streamreduce.test.service.TestUtils.SAMPLE_FEED_FILE_PATH;
/**
* Integration Test that verifies validation works on saving Connections with ConnectionDAO.
*/
public class ConnectionValidationITCase extends AbstractServiceTestCase {
@Autowired
ConnectionDAO connectionDAO;
@Test
@Ignore("Integration Tests depended on sensitive account keys, ignoring until better harness is in place.")
public void testCreateConnectionHappyPath() throws Exception {
//Tests creating a connection works
connectionDAO.save(instantiateValidConnection());
}
@Test(expected = ConstraintViolationException.class)
@Ignore("Integration Tests depended on sensitive account keys, ignoring until better harness is in place.")
public void testCreateConnectionFailsEmptyProviderId() throws Exception {
Connection c = instantiateValidConnection();
c.setProviderId(" ");
connectionDAO.save(c);
}
@Test(expected = ConstraintViolationException.class)
@Ignore("Integration Tests depended on sensitive account keys, ignoring until better harness is in place.")
public void testCreateConnectionFailsInvalidProviderId() throws Exception {
Connection c = instantiateValidConnection();
c.setProviderId("adsadfasf");
connectionDAO.save(c);
}
@Test(expected = ConstraintViolationException.class)
@Ignore("Integration Tests depended on sensitive account keys, ignoring until better harness is in place.")
public void testCreateConnectionFailsEmptyType() throws Exception {
Connection c = instantiateValidConnection();
c.setType(" ");
connectionDAO.save(c);
}
@Test(expected = ConstraintViolationException.class)
@Ignore("Integration Tests depended on sensitive account keys, ignoring until better harness is in place.")
public void testCreateConnectionFailsInvalidType() throws Exception {
Connection c = instantiateValidConnection();
c.setType("adfasfasf");
connectionDAO.save(c);
}
@Test(expected = ConstraintViolationException.class)
@Ignore("Integration Tests depended on sensitive account keys, ignoring until better harness is in place.")
public void testCreateConnectionFailsInvalidURL() throws Exception {
Connection c = instantiateValidConnection();
c.setUrl("really this is not a URL");
connectionDAO.save(c);
}
@Test(expected = ConstraintViolationException.class)
@Ignore("Integration Tests depended on sensitive account keys, ignoring until better harness is in place.")
public void testCreateConnectionFailsNullAccount() throws Exception {
Connection c = instantiateValidConnection();
c.setAccount(null);
connectionDAO.save(c);
}
@Test(expected = ConstraintViolationException.class)
@Ignore("Integration Tests depended on sensitive account keys, ignoring until better harness is in place.")
public void testEmptyAlias() throws Exception {
Connection c = instantiateValidConnection();
ReflectionTestUtils.setField(c,"alias","");
connectionDAO.save(c);
}
@Test(expected = ConstraintViolationException.class)
@Ignore("Integration Tests depended on sensitive account keys, ignoring until better harness is in place.")
public void testBlankAlias() throws Exception {
Connection c = instantiateValidConnection();
ReflectionTestUtils.setField(c, "alias", " ");
connectionDAO.save(c);
}
@Test(expected = ConstraintViolationException.class)
@Ignore("Integration Tests depended on sensitive account keys, ignoring until better harness is in place.")
public void testMaxLengthAlias() throws Exception {
Connection c = instantiateValidConnection();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 129; i++) {
sb.append("a");
} //string of 129 length
c.setAlias(sb.toString());
connectionDAO.save(c);
}
@Test(expected = ConstraintViolationException.class)
@Ignore("Integration Tests depended on sensitive account keys, ignoring until better harness is in place.")
public void testNullAccount() throws Exception {
Connection c = instantiateValidConnection();
c.setAccount(null);
connectionDAO.save(c);
}
private Connection instantiateValidConnection() {
return new Connection.Builder()
.alias("rss")
.description("rss")
.visibility(SobaObject.Visibility.PUBLIC)
.provider(ConnectionProvidersForTests.RSS_PROVIDER)
.user(testUser)
.credentials(null)
.url(SAMPLE_FEED_FILE_PATH)
.authType(AuthType.NONE)
.build();
}
}