Skip to content
Snippets Groups Projects
Commit 26a986cb authored by brinn's avatar brinn
Browse files

LMS-327

add: unit tests for FileAuthenticationService and FileBasedLineStore

SVN: 5516
parent f6a3836b
No related branches found
No related tags found
No related merge requests found
/*
* Copyright 2008 ETH Zuerich, CISD
*
* 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 ch.systemsx.cisd.authentication.file;
import static org.testng.AssertJUnit.*;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
/**
* Test cases for the {@link FileAuthenticationService}.
*
* @author Bernd Rinn
*/
public class FileAuthenticationServiceTest
{
private Mockery context;
private IUserStore userStore;
private FileAuthenticationService authService;
@BeforeMethod
public final void setUp()
{
context = new Mockery();
userStore = context.mock(IUserStore.class);
context.checking(new Expectations()
{
{
one(userStore).check();
}
});
authService = new FileAuthenticationService(userStore);
}
@AfterMethod
public void tearDown()
{
context.assertIsSatisfied();
}
@Test
public void testAuthenticateApplication()
{
final String token = "Some Token";
context.checking(new Expectations()
{
{
one(userStore).getId();
will(returnValue(token));
}
});
assertEquals(token, authService.authenticateApplication());
context.assertIsSatisfied();
}
@Test
public void testAuthenticateUserSuccess()
{
final String token = "Some Token";
final String user = "User";
final String password = "passw0rd";
context.checking(new Expectations()
{
{
one(userStore).getId();
will(returnValue(token));
one(userStore).isPasswordCorrect(user, password);
will(returnValue(true));
}
});
assertTrue(authService.authenticateUser(token, user, password));
context.assertIsSatisfied();
}
@Test
public void testAuthenticateUserFailure()
{
final String token = "Some Token";
final String user = "User";
final String password = "passw0rd";
context.checking(new Expectations()
{
{
one(userStore).getId();
will(returnValue(token));
one(userStore).isPasswordCorrect(user, password);
will(returnValue(false));
}
});
assertFalse(authService.authenticateUser(token, user, password));
context.assertIsSatisfied();
}
@Test
public void testGetPrincipalSuccess()
{
final String token = "Some Token";
final String uid = "uid";
final UserEntry user = new UserEntry(uid, "email", "first", "last", "pwd");
context.checking(new Expectations()
{
{
one(userStore).getId();
will(returnValue(token));
one(userStore).tryGetUser(uid);
will(returnValue(user));
}
});
assertEquals(user.asPrincial(), authService.getPrincipal(token, uid));
context.assertIsSatisfied();
}
@Test
public void testGetPrincipalFailure()
{
final String token = "Some Token";
final String uid = "uid";
context.checking(new Expectations()
{
{
one(userStore).getId();
will(returnValue(token));
one(userStore).tryGetUser(uid);
will(returnValue(null));
}
});
try
{
authService.getPrincipal(token, uid);
fail("Unknown user went undetected.");
} catch (IllegalArgumentException ex)
{
assertEquals("Cannot find user 'uid'.", ex.getMessage());
}
context.assertIsSatisfied();
}
}
/*
* Copyright 2008 ETH Zuerich, CISD
*
* 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 ch.systemsx.cisd.authentication.file;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import static org.testng.AssertJUnit.*;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.testng.annotations.Test;
/**
* Test cases for the {@link FileBasedLineStore}.
*
* @author Bernd Rinn
*/
public class FileBasedLineStoreTest
{
private final static String fileName = "store";
private final static String fileDescription = "Some sort of file";
private static final File unitTestRootDirectory =
new File("targets" + File.separator + "unit-test-wd");
private static final File workingDirectory =
new File(unitTestRootDirectory, "FileBasedLineStoreTest");
private final static File file = new File(workingDirectory, fileName);
private final static FileBasedLineStore store = new FileBasedLineStore(file, fileDescription);
@Test
public void testCheck()
{
file.delete();
assertFalse(file.exists());
store.check();
assertTrue(file.exists());
}
@Test
public void testGetId()
{
assertEquals(file.getPath(), store.getId());
}
@Test
public void testReadLinesNonExisting()
{
file.delete();
assertFalse(file.exists());
assertEquals(0, store.readLines().size());
assertFalse(file.exists());
}
@Test
public void testRoundtrip() throws IOException
{
final File svFile = new File(file.getPath() + ".sv");
svFile.delete();
assertFalse(svFile.exists());
file.delete();
assertFalse(file.exists());
final List<String> lines1 = Arrays.asList("1", "2", "3");
store.writeLines(lines1);
assertTrue(file.exists());
assertEquals(StringUtils.join(lines1, '\n') + "\n", FileUtils.readFileToString(file));
final List<String> linesRead1 = store.readLines();
assertEquals(lines1, linesRead1);
assertTrue(svFile.exists());
assertEquals(0, svFile.length());
final List<String> lines2 = Arrays.asList("4", "5", "6");
store.writeLines(lines2);
assertTrue(file.exists());
assertTrue(svFile.exists());
assertEquals(StringUtils.join(lines1, '\n') + "\n", FileUtils.readFileToString(svFile));
assertEquals(StringUtils.join(lines2, '\n') + "\n", FileUtils.readFileToString(file));
final List<String> linesRead2 = store.readLines();
assertEquals(lines2, linesRead2);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment