Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
c9fceeb1
提交
c9fceeb1
authored
5月 16, 2015
作者:
W. Trevor King
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
namesys/dns_test: Add DNS resolution tests with a mock resolver
上级
1e6594d0
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
86 行增加
和
0 行删除
+86
-0
dns_test.go
namesys/dns_test.go
+86
-0
没有找到文件。
namesys/dns_test.go
浏览文件 @
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
)
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论