1
// Copyright 2012, 2013 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
9
jc "github.com/juju/testing/checkers"
10
"github.com/juju/utils"
11
gc "gopkg.in/check.v1"
13
"github.com/juju/juju/environs/filestorage"
14
"github.com/juju/juju/environs/simplestreams"
15
"github.com/juju/juju/testing"
18
type ValidateSuite struct {
23
var _ = gc.Suite(&ValidateSuite{})
25
func (s *ValidateSuite) makeLocalMetadata(c *gc.C, stream, version, series string) error {
26
tm := []*ToolsMetadata{{
30
Path: "/tools/tools.tar.gz",
33
SHA256: "f65a92b3b41311bdf398663ee1c5cd0c",
36
stor, err := filestorage.NewFileStorageWriter(s.metadataDir)
37
c.Assert(err, jc.ErrorIsNil)
38
streamMetadata := map[string][]*ToolsMetadata{
41
err = WriteMetadata(stor, streamMetadata, []string{stream}, false)
42
c.Assert(err, jc.ErrorIsNil)
46
func (s *ValidateSuite) SetUpTest(c *gc.C) {
47
s.BaseSuite.SetUpTest(c)
48
s.metadataDir = c.MkDir()
51
func (s *ValidateSuite) toolsURL() string {
52
return utils.MakeFileURL(path.Join(s.metadataDir, "tools"))
55
func (s *ValidateSuite) TestExactVersionMatch(c *gc.C) {
56
s.makeLocalMetadata(c, "released", "1.11.2", "raring")
57
params := &ToolsMetadataLookupParams{
59
MetadataLookupParams: simplestreams.MetadataLookupParams{
62
Architectures: []string{"amd64"},
63
Endpoint: "some-auth-url",
65
Sources: []simplestreams.DataSource{
66
simplestreams.NewURLDataSource("test", s.toolsURL(), utils.VerifySSLHostnames)},
69
versions, resolveInfo, err := ValidateToolsMetadata(params)
70
c.Assert(err, jc.ErrorIsNil)
71
c.Assert(versions, gc.DeepEquals, []string{"1.11.2-raring-amd64"})
72
c.Check(resolveInfo, gc.DeepEquals, &simplestreams.ResolveInfo{
75
IndexURL: utils.MakeFileURL(path.Join(s.metadataDir, "tools/streams/v1/index2.json")),
80
func (s *ValidateSuite) TestMajorVersionMatch(c *gc.C) {
81
s.makeLocalMetadata(c, "released", "1.11.2", "raring")
82
params := &ToolsMetadataLookupParams{
85
MetadataLookupParams: simplestreams.MetadataLookupParams{
88
Architectures: []string{"amd64"},
89
Endpoint: "some-auth-url",
91
Sources: []simplestreams.DataSource{
92
simplestreams.NewURLDataSource("test", s.toolsURL(), utils.VerifySSLHostnames)},
95
versions, resolveInfo, err := ValidateToolsMetadata(params)
96
c.Assert(err, jc.ErrorIsNil)
97
c.Assert(versions, gc.DeepEquals, []string{"1.11.2-raring-amd64"})
98
c.Check(resolveInfo, gc.DeepEquals, &simplestreams.ResolveInfo{
101
IndexURL: utils.MakeFileURL(path.Join(s.metadataDir, "tools/streams/v1/index2.json")),
106
func (s *ValidateSuite) TestMajorMinorVersionMatch(c *gc.C) {
107
s.makeLocalMetadata(c, "released", "1.11.2", "raring")
108
params := &ToolsMetadataLookupParams{
111
MetadataLookupParams: simplestreams.MetadataLookupParams{
114
Architectures: []string{"amd64"},
115
Endpoint: "some-auth-url",
117
Sources: []simplestreams.DataSource{
118
simplestreams.NewURLDataSource("test", s.toolsURL(), utils.VerifySSLHostnames)},
121
versions, resolveInfo, err := ValidateToolsMetadata(params)
122
c.Assert(err, jc.ErrorIsNil)
123
c.Assert(versions, gc.DeepEquals, []string{"1.11.2-raring-amd64"})
124
c.Check(resolveInfo, gc.DeepEquals, &simplestreams.ResolveInfo{
127
IndexURL: utils.MakeFileURL(path.Join(s.metadataDir, "tools/streams/v1/index2.json")),
132
func (s *ValidateSuite) TestNoMatch(c *gc.C) {
133
s.makeLocalMetadata(c, "released", "1.11.2", "raring")
134
params := &ToolsMetadataLookupParams{
136
MetadataLookupParams: simplestreams.MetadataLookupParams{
139
Architectures: []string{"amd64"},
140
Endpoint: "some-auth-url",
142
Sources: []simplestreams.DataSource{
143
simplestreams.NewURLDataSource("test", s.toolsURL(), utils.VerifySSLHostnames)},
146
_, _, err := ValidateToolsMetadata(params)
147
c.Assert(err, gc.Not(gc.IsNil))
150
func (s *ValidateSuite) TestStreamsNoMatch(c *gc.C) {
151
s.makeLocalMetadata(c, "proposed", "1.11.2", "raring")
152
params := &ToolsMetadataLookupParams{
154
MetadataLookupParams: simplestreams.MetadataLookupParams{
157
Architectures: []string{"amd64"},
158
Endpoint: "some-auth-url",
160
Sources: []simplestreams.DataSource{
161
simplestreams.NewURLDataSource("test", s.toolsURL(), utils.VerifySSLHostnames)},
164
_, _, err := ValidateToolsMetadata(params)
165
c.Assert(err, gc.Not(gc.IsNil))