Skip to content
GitLab
Explore
Projects
Groups
Topics
Snippets
Projects
Groups
Topics
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
1105 Внедрение механизмов обеспечения безопасности цепочки поставки программных проектов
Legacy
scanned-projects
helm
Commits
48310895
Commit
48310895
authored
7 years ago
by
Johan Lyheden
Browse files
Options
Download
Patches
Plain Diff
Add tests to HTTPInstaller, update plugin documentation
parent
f1a08adb
main
Release
add-codeql
dependabot/go_modules/github.com/docker/distribution-2.8.2incompatible
dependabot/go_modules/github.com/lib/pq-1.10.9
dependabot/go_modules/github.com/rubenv/sql-migrate-1.4.0
dependabot/go_modules/golang.org/x/crypto-0.9.0
dependabot/go_modules/golang.org/x/term-0.8.0
dependabot/go_modules/k8s.io/klog/v2-2.100.1
dev-v2
feat-v3/event-emitter-lua
release-2.10
release-2.11
release-2.12
release-2.13
release-2.14
release-2.15
release-2.16
release-2.17
release-2.8
release-2.9
release-3.0
release-3.1
release-3.10
release-3.11
release-3.12
release-3.2
release-3.3
release-3.4
release-3.5
release-3.6
release-3.6.1
release-3.6.2
release-3.7
release-3.8
release-3.9
release-v3.0.0-beta.4
v3.12.0
v3.12.0-rc.1
v3.12.0-dev.1
v3.11.3
v3.11.2
v3.11.1
v3.11.0
v3.11.0-rc.2
v3.11.0-rc.1
v3.10.3
v3.10.2
v3.10.1
v3.10.0
v3.10.0-rc.1
v3.9.4
v3.9.3
v3.9.2
v3.9.1
v3.9.0
v3.9.0-rc.1
v3.8.2
v3.8.1
v3.8.0
v3.8.0-rc.2
v3.8.0-rc.1
v3.7.2
v3.7.1
v3.7.0
v3.7.0-rc.3
v3.7.0-rc.2
v3.7.0-rc.1
v3.6.3
v3.6.2
v3.6.1
v3.6.0
v3.6.0-rc.1
v3.5.4
v3.5.3
v3.5.2
v3.5.1
v3.5.0
v3.5.0-rc.2
v3.5.0-rc.1
v3.4.2
v3.4.1
v3.4.0
v3.4.0-rc.1
v3.3.4
v3.3.3
v3.3.2
v3.3.1
v3.3.0
v3.3.0-rc.2
v3.3.0-rc.1
v3.2.4
v3.2.3
v3.2.2
v3.2.1
v3.2.0
v3.2.0-rc.1
v3.1.3
v3.1.2
v3.1.1
v3.1.0
v3.1.0-rc.3
v3.1.0-rc.2
v3.1.0-rc.1
v3.0.3
v3.0.2
v3.0.1
v3.0.0
v3.0.0-rc.4
v3.0.0-rc.3
v3.0.0-rc.2
v3.0.0-rc.1
v3.0.0-beta.5
v3.0.0-beta.4
v3.0.0-beta.3
v3.0.0-beta.2
v3.0.0-beta.1
v3.0.0-alpha.2
v3.0.0-alpha.1
v2.17.0
v2.17.0-rc.1
v2.16.12
v2.16.11
v2.16.10
v2.16.9
v2.16.8
v2.16.7
v2.16.6
v2.16.5
v2.16.4
v2.16.3
v2.16.2
v2.16.1
v2.16.0
v2.16.0-rc.2
v2.16.0-rc.1
v2.15.2
v2.15.1
v2.15.0
v2.15.0-rc.2
v2.15.0-rc.1
v2.14.3
v2.14.2
v2.14.1
v2.14.0
v2.14.0-rc.2
v2.14.0-rc.1
v2.13.1
v2.13.1-rc.1
v2.13.0
v2.13.0-rc.2
v2.13.0-rc.1
v2.12.3
v2.12.2
v2.12.1
v2.12.0
v2.12.0-rc.2
v2.12.0-rc.1
v2.11.0
v2.11.0-rc.4
v2.11.0-rc.3
v2.11.0-rc.2
v2.11.0-rc.1
v2.10.0
v2.10.0-rc.3
v2.10.0-rc.2
v2.10.0-rc.1
v2.9.1
v2.9.0
v2.9.0-rc5
v2.9.0-rc4
v2.9.0-rc3
v2.9.0-rc2
v2.9.0-rc1
v2.8.2
v2.8.2-rc1
v2.8.1
v2.8.0
v2.8.0-rc.1
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
docs/plugins.md
+2
-0
docs/plugins.md
pkg/plugin/installer/http_installer_test.go
+89
-3
pkg/plugin/installer/http_installer_test.go
with
91 additions
and
3 deletions
+91
-3
docs/plugins.md
+
2
−
0
View file @
48310895
...
...
@@ -41,6 +41,8 @@ $ cp -a myplugin/ $(helm home)/plugins/
If you have a plugin tar distribution, simply untar the plugin into the
`$(helm home)/plugins`
directory.
You can also install tarball plugins directly from url by issuing
`helm plugin install http://domain/path/to/plugin.tar.gz`
## Building Plugins
In many ways, a plugin is similar to a chart. Each plugin has a top-level
...
...
This diff is collapsed.
Click to expand it.
pkg/plugin/installer/http_installer_test.go
+
89
−
3
View file @
48310895
...
...
@@ -18,6 +18,7 @@ package installer // import "k8s.io/helm/pkg/plugin/installer"
import
(
"bytes"
"encoding/base64"
"fmt"
"io/ioutil"
"k8s.io/helm/pkg/helm/helmpath"
"os"
...
...
@@ -29,9 +30,10 @@ var _ Installer = new(HTTPInstaller)
// Fake http client
type
TestHTTPGetter
struct
{
MockResponse
*
bytes
.
Buffer
MockError
error
}
func
(
t
*
TestHTTPGetter
)
Get
(
href
string
)
(
*
bytes
.
Buffer
,
error
)
{
return
t
.
MockResponse
,
nil
}
func
(
t
*
TestHTTPGetter
)
Get
(
href
string
)
(
*
bytes
.
Buffer
,
error
)
{
return
t
.
MockResponse
,
t
.
MockError
}
// Fake plugin tarball data
var
fakePluginB64
=
"H4sIAKRj51kAA+3UX0vCUBgGcC9jn+Iwuk3Peza3GeyiUlJQkcogCOzgli7dJm4TvYk+a5+k479UqquUCJ/fLs549sLO2TnvWnJa9aXnjwujYdYLovxMhsPcfnHOLdNkOXthM/IVQQYjg2yyLLJ4kXGhLp5j0z3P41tZksqxmspL3B/O+j/XtZu1y8rdYzkOZRCxduKPk53ny6Wwz/GfIIf1As8lxzGJSmoHNLJZphKHG4YpTCE0wVk3DULfpSJ3DMMqkj3P5JfMYLdX1Vr9Ie/5E5cstcdC8K04iGLX5HaJuKpWL17F0TCIBi5pf/0pjtLhun5j3f9v6r7wfnI/H0eNp9d1/5P6Gez0vzo7wsoxfrAZbTny/o9k6J8z/VkO/LPlWdC1iVpbEEcq5nmeJ13LEtmbV0k2r2PrOs9PuuNglC5rL1Y5S/syXRQmutaNw1BGnnp8Wq3UG51WvX1da3bKtZtCN/R09DwAAAAAAAAAAAAAAAAAAADAb30AoMczDwAoAAA="
...
...
@@ -69,10 +71,10 @@ func TestHTTPInstaller(t *testing.T) {
t
.
Errorf
(
"unexpected error: %s"
,
err
)
}
// ensure a H
ttp
Installer was returned
// ensure a H
TTP
Installer was returned
httpInstaller
,
ok
:=
i
.
(
*
HTTPInstaller
)
if
!
ok
{
t
.
Error
(
"expected a H
ttp
Installer"
)
t
.
Error
(
"expected a H
TTP
Installer"
)
}
// inject fake http client responding with minimal plugin tarball
...
...
@@ -101,3 +103,87 @@ func TestHTTPInstaller(t *testing.T) {
}
}
func
TestHTTPInstallerNonExistentVersion
(
t
*
testing
.
T
)
{
source
:=
"https://repo.localdomain/plugins/fake-plugin-0.0.2.tar.gz"
hh
,
err
:=
ioutil
.
TempDir
(
""
,
"helm-home-"
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
defer
os
.
RemoveAll
(
hh
)
home
:=
helmpath
.
Home
(
hh
)
if
err
:=
os
.
MkdirAll
(
home
.
Plugins
(),
0755
);
err
!=
nil
{
t
.
Fatalf
(
"Could not create %s: %s"
,
home
.
Plugins
(),
err
)
}
i
,
err
:=
NewForSource
(
source
,
"0.0.2"
,
home
)
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %s"
,
err
)
}
// ensure a HTTPInstaller was returned
httpInstaller
,
ok
:=
i
.
(
*
HTTPInstaller
)
if
!
ok
{
t
.
Error
(
"expected a HTTPInstaller"
)
}
// inject fake http client responding with error
httpInstaller
.
getter
=
&
TestHTTPGetter
{
MockError
:
fmt
.
Errorf
(
"failed to download plugin for some reason"
),
}
// attempt to install the plugin
if
err
:=
Install
(
i
);
err
==
nil
{
t
.
Error
(
"expected error from http client"
)
}
}
func
TestHTTPInstallerUpdate
(
t
*
testing
.
T
)
{
source
:=
"https://repo.localdomain/plugins/fake-plugin-0.0.1.tar.gz"
hh
,
err
:=
ioutil
.
TempDir
(
""
,
"helm-home-"
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
defer
os
.
RemoveAll
(
hh
)
home
:=
helmpath
.
Home
(
hh
)
if
err
:=
os
.
MkdirAll
(
home
.
Plugins
(),
0755
);
err
!=
nil
{
t
.
Fatalf
(
"Could not create %s: %s"
,
home
.
Plugins
(),
err
)
}
i
,
err
:=
NewForSource
(
source
,
"0.0.1"
,
home
)
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %s"
,
err
)
}
// ensure a HTTPInstaller was returned
httpInstaller
,
ok
:=
i
.
(
*
HTTPInstaller
)
if
!
ok
{
t
.
Error
(
"expected a HTTPInstaller"
)
}
// inject fake http client responding with minimal plugin tarball
mockTgz
,
err
:=
base64
.
StdEncoding
.
DecodeString
(
fakePluginB64
)
if
err
!=
nil
{
t
.
Fatalf
(
"Could not decode fake tgz plugin: %s"
,
err
)
}
httpInstaller
.
getter
=
&
TestHTTPGetter
{
MockResponse
:
bytes
.
NewBuffer
(
mockTgz
),
}
// install the plugin before updating
if
err
:=
Install
(
i
);
err
!=
nil
{
t
.
Error
(
err
)
}
if
i
.
Path
()
!=
home
.
Path
(
"plugins"
,
"fake-plugin"
)
{
t
.
Errorf
(
"expected path '$HELM_HOME/plugins/fake-plugin', got %q"
,
i
.
Path
())
}
// Update plugin, should fail because it is not implemented
if
err
:=
Update
(
i
);
err
==
nil
{
t
.
Error
(
"update method not implemented for http installer"
)
}
}
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment
Menu
Explore
Projects
Groups
Topics
Snippets