package org.jooby;
import static org.easymock.EasyMock.expect;
import static org.junit.Assert.assertEquals;
import java.security.NoSuchAlgorithmException;
import javax.crypto.Mac;
import org.jooby.Cookie.Signature;
import org.jooby.test.MockUnit;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
@PowerMockIgnore("javax.crypto.*")
@RunWith(PowerMockRunner.class)
public class CookieSignatureTest {
@Test
public void sillyJacoco() throws Exception {
new Cookie.Signature();
}
@Test
public void sign() throws Exception {
assertEquals("qAlLNkSRVE4aZb+tz6avvkVIEmmR30BH8cpr3x9ZdFA|jooby",
Signature.sign("jooby", "124Qwerty"));
}
@Test(expected = IllegalArgumentException.class)
@PrepareForTest({Cookie.class, Cookie.Signature.class, Mac.class })
public void noSuchAlgorithmException() throws Exception {
new MockUnit()
.expect(unit -> {
unit.mockStatic(Mac.class);
expect(Mac.getInstance("HmacSHA256")).andThrow(new NoSuchAlgorithmException("HmacSHA256"));
})
.run(unit -> {
Signature.sign("jooby", "a11");
});
}
@Test
public void unsign() throws Exception {
assertEquals("jooby",
Signature.unsign("qAlLNkSRVE4aZb+tz6avvkVIEmmR30BH8cpr3x9ZdFA|jooby", "124Qwerty"));
}
@Test
public void valid() throws Exception {
assertEquals(true,
Signature.valid("qAlLNkSRVE4aZb+tz6avvkVIEmmR30BH8cpr3x9ZdFA|jooby", "124Qwerty"));
}
@Test
public void invalid() throws Exception {
assertEquals(false,
Signature.valid("QAlLNkSRVE4aZb+tz6avvkVIEmmR30BH8cpr3x9ZdFA|jooby", "124Qwerty"));
assertEquals(false,
Signature.valid("qAlLNkSRVE4aZb+tz6avvkVIEmmR30BH8cpr3x9ZdFA|joobi", "124Qwerty"));
assertEquals(false,
Signature.valid("#qAlLNkSRVE4aZb+tz6avvkVIEmmR30BH8cpr3x9ZdFA#joobi", "124Qwerty"));
}
}