Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
dms3
go-dms3
Commits
c9fceeb1
Commit
c9fceeb1
authored
May 16, 2015
by
W. Trevor King
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
namesys/dns_test: Add DNS resolution tests with a mock resolver
parent
1e6594d0
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
86 additions
and
0 deletions
+86
-0
namesys/dns_test.go
namesys/dns_test.go
+86
-0
No files found.
namesys/dns_test.go
View file @
c9fceeb1
package
namesys
import
(
"fmt"
"testing"
context
"github.com/ipfs/go-ipfs/Godeps/_workspace/src/golang.org/x/net/context"
)
type
mockDNS
struct
{
entries
map
[
string
][]
string
}
func
(
m
*
mockDNS
)
lookupTXT
(
name
string
)
(
txt
[]
string
,
err
error
)
{
txt
,
ok
:=
m
.
entries
[
name
]
if
!
ok
{
return
nil
,
fmt
.
Errorf
(
"No TXT entry for %s"
,
name
)
}
return
txt
,
nil
}
func
TestDnsEntryParsing
(
t
*
testing
.
T
)
{
goodEntries
:=
[]
string
{
"QmY3hE8xgFCjGcz6PHgnvJz5HZi1BaKRfPkn1ghZUcYMjD"
,
...
...
@@ -40,3 +55,74 @@ func TestDnsEntryParsing(t *testing.T) {
}
}
}
func
newMockDNS
()
*
mockDNS
{
return
&
mockDNS
{
entries
:
map
[
string
][]
string
{
"multihash.example.com"
:
[]
string
{
"dnslink=QmY3hE8xgFCjGcz6PHgnvJz5HZi1BaKRfPkn1ghZUcYMjD"
,
},
"ipfs.example.com"
:
[]
string
{
"dnslink=/ipfs/QmY3hE8xgFCjGcz6PHgnvJz5HZi1BaKRfPkn1ghZUcYMjD"
,
},
"dns1.example.com"
:
[]
string
{
"dnslink=/ipns/ipfs.example.com"
,
},
"dns2.example.com"
:
[]
string
{
"dnslink=/ipns/dns1.example.com"
,
},
"multi.example.com"
:
[]
string
{
"some stuff"
,
"dnslink=/ipns/dns1.example.com"
,
"masked dnslink=/ipns/example.invalid"
,
},
"equals.example.com"
:
[]
string
{
"dnslink=/ipfs/QmY3hE8xgFCjGcz6PHgnvJz5HZi1BaKRfPkn1ghZUcYMjD/=equals"
,
},
"loop1.example.com"
:
[]
string
{
"dnslink=/ipns/loop2.example.com"
,
},
"loop2.example.com"
:
[]
string
{
"dnslink=/ipns/loop1.example.com"
,
},
"bad.example.com"
:
[]
string
{
"dnslink="
,
},
},
}
}
func
testResolution
(
t
*
testing
.
T
,
resolver
Resolver
,
name
string
,
depth
int
,
expected
string
,
expError
error
)
{
p
,
err
:=
resolver
.
ResolveN
(
context
.
Background
(),
name
,
depth
)
if
err
!=
expError
{
t
.
Fatal
(
fmt
.
Errorf
(
"Expected %s with a depth of %d to have a '%s' error, but got '%s'"
,
name
,
depth
,
expError
,
err
))
}
if
p
.
String
()
!=
expected
{
t
.
Fatal
(
fmt
.
Errorf
(
"%s with depth %d resolved to %s != %s"
,
name
,
depth
,
p
.
String
(),
expected
))
}
}
func
TestDNSResolution
(
t
*
testing
.
T
)
{
mock
:=
newMockDNS
()
r
:=
&
DNSResolver
{
lookupTXT
:
mock
.
lookupTXT
}
testResolution
(
t
,
r
,
"multihash.example.com"
,
DefaultDepthLimit
,
"/ipfs/QmY3hE8xgFCjGcz6PHgnvJz5HZi1BaKRfPkn1ghZUcYMjD"
,
nil
)
testResolution
(
t
,
r
,
"ipfs.example.com"
,
DefaultDepthLimit
,
"/ipfs/QmY3hE8xgFCjGcz6PHgnvJz5HZi1BaKRfPkn1ghZUcYMjD"
,
nil
)
testResolution
(
t
,
r
,
"dns1.example.com"
,
DefaultDepthLimit
,
"/ipfs/QmY3hE8xgFCjGcz6PHgnvJz5HZi1BaKRfPkn1ghZUcYMjD"
,
nil
)
testResolution
(
t
,
r
,
"dns1.example.com"
,
1
,
"/ipns/ipfs.example.com"
,
ErrResolveRecursion
)
testResolution
(
t
,
r
,
"dns2.example.com"
,
DefaultDepthLimit
,
"/ipfs/QmY3hE8xgFCjGcz6PHgnvJz5HZi1BaKRfPkn1ghZUcYMjD"
,
nil
)
testResolution
(
t
,
r
,
"dns2.example.com"
,
1
,
"/ipns/dns1.example.com"
,
ErrResolveRecursion
)
testResolution
(
t
,
r
,
"dns2.example.com"
,
2
,
"/ipns/ipfs.example.com"
,
ErrResolveRecursion
)
testResolution
(
t
,
r
,
"multi.example.com"
,
DefaultDepthLimit
,
"/ipfs/QmY3hE8xgFCjGcz6PHgnvJz5HZi1BaKRfPkn1ghZUcYMjD"
,
nil
)
testResolution
(
t
,
r
,
"multi.example.com"
,
1
,
"/ipns/dns1.example.com"
,
ErrResolveRecursion
)
testResolution
(
t
,
r
,
"multi.example.com"
,
2
,
"/ipns/ipfs.example.com"
,
ErrResolveRecursion
)
testResolution
(
t
,
r
,
"equals.example.com"
,
DefaultDepthLimit
,
"/ipfs/QmY3hE8xgFCjGcz6PHgnvJz5HZi1BaKRfPkn1ghZUcYMjD/=equals"
,
nil
)
testResolution
(
t
,
r
,
"loop1.example.com"
,
1
,
"/ipns/loop2.example.com"
,
ErrResolveRecursion
)
testResolution
(
t
,
r
,
"loop1.example.com"
,
2
,
"/ipns/loop1.example.com"
,
ErrResolveRecursion
)
testResolution
(
t
,
r
,
"loop1.example.com"
,
3
,
"/ipns/loop2.example.com"
,
ErrResolveRecursion
)
testResolution
(
t
,
r
,
"loop1.example.com"
,
DefaultDepthLimit
,
"/ipns/loop1.example.com"
,
ErrResolveRecursion
)
testResolution
(
t
,
r
,
"bad.example.com"
,
DefaultDepthLimit
,
""
,
ErrResolveFailed
)
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment