mirror of
https://github.com/pgpainless/pgpainless.git
synced 2024-12-24 11:57:59 +01:00
more DSL
This commit is contained in:
parent
11d868dc27
commit
8ed588c23e
4 changed files with 43 additions and 41 deletions
|
@ -40,6 +40,9 @@ interface NetworkDSL {
|
|||
fun Certification(issuer: CertSynopsis, target: CertSynopsis, userId: String): Certification =
|
||||
Certification(issuer, target, userId, Date())
|
||||
|
||||
fun Certification(issuer: CertSynopsis, target: CertSynopsis, amount: Int, depth: Depth): Certification =
|
||||
Certification(issuer, target, null, Date(), null, true, amount, depth, RegexSet.wildcard())
|
||||
|
||||
/**
|
||||
* Add a single [CertSynopsis] built from a [String] fingerprint to the builder.
|
||||
*/
|
||||
|
@ -150,6 +153,30 @@ interface NetworkDSL {
|
|||
return getEdgeFor(Fingerprint(issuer), Fingerprint(target), userId)
|
||||
}
|
||||
|
||||
fun Date.plusMillis(millis: Long): Date {
|
||||
return Date(time + millis)
|
||||
}
|
||||
|
||||
fun Date.plusSeconds(seconds: Long): Date {
|
||||
return plusMillis(1000L * seconds)
|
||||
}
|
||||
|
||||
fun Date.plusMinutes(minutes: Long): Date {
|
||||
return plusSeconds(60 * minutes)
|
||||
}
|
||||
|
||||
fun Date.plusHours(hours: Long): Date {
|
||||
return plusMinutes(60 * hours)
|
||||
}
|
||||
|
||||
fun Date.plusDays(days: Long): Date {
|
||||
return plusHours(24 * days)
|
||||
}
|
||||
|
||||
fun domainRegex(domain: String): RegexSet {
|
||||
return RegexSet.fromExpression("<[^>]+[@.]" + domain.replace(".", "\\.") + ">$")
|
||||
}
|
||||
|
||||
/**
|
||||
* Lambda with Receiver.
|
||||
*
|
||||
|
|
|
@ -7,23 +7,11 @@ import java.util.*
|
|||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
class PathTest {
|
||||
class PathTest: NetworkDSL {
|
||||
|
||||
private val root = CertSynopsis(
|
||||
Fingerprint("aabbccddeeAABBCCDDEEaabbccddeeAABBCCDDEE"),
|
||||
null,
|
||||
RevocationState.notRevoked(),
|
||||
mapOf())
|
||||
private val alice = CertSynopsis(
|
||||
Fingerprint("0000000000000000000000000000000000000000"),
|
||||
null,
|
||||
RevocationState.notRevoked(),
|
||||
mapOf())
|
||||
private val bob = CertSynopsis(
|
||||
Fingerprint("1111111111111111111111111111111111111111"),
|
||||
null,
|
||||
RevocationState.notRevoked(),
|
||||
mapOf())
|
||||
private val root = CertSynopsis("aabbccddeeAABBCCDDEEaabbccddeeAABBCCDDEE")
|
||||
private val alice = CertSynopsis("0000000000000000000000000000000000000000")
|
||||
private val bob = CertSynopsis("1111111111111111111111111111111111111111")
|
||||
|
||||
// Root -(255, 255)-> Alice
|
||||
private val root_alice__fully_trusted = Certification(root, alice, 255, Depth.unconstrained())
|
||||
|
@ -32,7 +20,7 @@ class PathTest {
|
|||
// Alice -(255,255)-> Root
|
||||
private val alice_root = Certification(alice, root, 255, Depth.unconstrained())
|
||||
// Alice -(120, 1)-> Bob
|
||||
private val alice_bob = Certification(alice, bob, null, Date())
|
||||
private val alice_bob = Certification(alice, bob)
|
||||
// Root -> Root
|
||||
private val root_root = Certification(root, root, 120, Depth.limited(1))
|
||||
|
||||
|
@ -102,10 +90,4 @@ class PathTest {
|
|||
val path = Path(root)
|
||||
assertThrows<IllegalArgumentException> { path.append(root_root) }
|
||||
}
|
||||
|
||||
/**
|
||||
* Factory method for legible initialization of [Certification] objects for test purposes.
|
||||
*/
|
||||
fun Certification(issuer: CertSynopsis, target: CertSynopsis, amount: Int, depth: Depth): Certification =
|
||||
Certification(issuer, target, null, Date(), null, true, amount, depth, RegexSet.wildcard())
|
||||
}
|
|
@ -6,18 +6,10 @@ import org.pgpainless.wot.dijkstra.sq.*
|
|||
import java.util.*
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
class PathsTest {
|
||||
class PathsTest: NetworkDSL {
|
||||
|
||||
private val alice = CertSynopsis(
|
||||
Fingerprint("0000000000000000000000000000000000000000"),
|
||||
null,
|
||||
RevocationState.notRevoked(),
|
||||
mapOf())
|
||||
private val bob = CertSynopsis(
|
||||
Fingerprint("1111111111111111111111111111111111111111"),
|
||||
null,
|
||||
RevocationState.notRevoked(),
|
||||
mapOf())
|
||||
private val alice = CertSynopsis("0000000000000000000000000000000000000000")
|
||||
private val bob = CertSynopsis("1111111111111111111111111111111111111111")
|
||||
|
||||
private val alice_bob_1 = Certification(alice, bob, 140, Depth.unconstrained())
|
||||
private val alice_bob_2 = Certification(alice, bob, 160, Depth.limited(1))
|
||||
|
@ -56,10 +48,4 @@ class PathsTest {
|
|||
paths.add(path, 250)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Factory method to create a [Certification] more easily for test purposes.
|
||||
*/
|
||||
private fun Certification(issuer: CertSynopsis, target: CertSynopsis, amount: Int, depth: Depth): Certification =
|
||||
Certification(issuer, target, null, Date(), null, true, amount, depth, RegexSet.wildcard())
|
||||
}
|
|
@ -5,7 +5,7 @@ import org.pgpainless.wot.dijkstra.sq.RegexSet
|
|||
import kotlin.test.assertFalse
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
class RegexSetTest {
|
||||
class RegexSetTest: NetworkDSL {
|
||||
|
||||
private val exampleComRegex = "<[^>]+[@.]example\\.com>\$"
|
||||
private val pgpainlessOrgRegex = "<[^>]+[@.]pgpainless\\.org>\$"
|
||||
|
@ -39,4 +39,11 @@ class RegexSetTest {
|
|||
assertFalse { multi.matches("Alice") }
|
||||
assertFalse { multi.matches("<info@examp1e.com>") }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `verify that a domain regex built with DLS properly works`() {
|
||||
val regex = domainRegex("pgpainless.org")
|
||||
assertTrue { regex.matches("Alice <alice@pgpainless.org>") }
|
||||
assertFalse { regex.matches("<alice@pgpainless\\.org>") }
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue