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
9d3a1ed2
Commit
9d3a1ed2
authored
8 years ago
by
fibonacci1729
Browse files
Options
Download
Patches
Plain Diff
basic cfgmaps driver tests
parent
d5aca166
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
kube-update-test
release-2.0
release-2.1
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.2
release-2.3
release-2.4
release-2.5
release-2.6
release-2.7
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
v2.7.2
v2.7.1
v2.7.0
v2.7.0-rc1
v2.6.2
v2.6.1
v2.6.0
v2.5.1
v2.5.0
v2.4.2
v2.4.1
v2.4.0
v2.3.1
v2.3.0
v2.2.3
v2.2.2
v2.2.1
v2.2.0
v2.1.3
v2.1.2
v2.1.1
v2.1.0
v2.0.2
v2.0.1
v2.0.0
v2.0.0-rc.2
v2.0.0-rc.1
v2.0.0-beta.2
v2.0.0-beta.1
v2.0.0-alpha.5
v2.0.0-alpha.4
v2.0.0-alpha.3
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
pkg/storage/driver/cfgmaps_test.go
+142
-70
pkg/storage/driver/cfgmaps_test.go
with
142 additions
and
70 deletions
+142
-70
pkg/storage/driver/cfgmaps_test.go
+
142
−
70
View file @
9d3a1ed2
...
...
@@ -21,127 +21,199 @@ import (
"testing"
rspb
"k8s.io/helm/pkg/proto/hapi/release"
"k8s.io/kubernetes/pkg/client/unversioned/testclient"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/api"
kberrs
"k8s.io/kubernetes/pkg/api/errors"
"k8s.io/kubernetes/pkg/client/unversioned"
)
func
TestConfigMapGet
(
t
*
testing
.
T
)
{
// test release
key
:=
"key-1"
rl
s
:=
newTestRelease
(
key
,
1
,
rspb
.
Status_DEPLOYED
)
r
e
l
:=
newTestRelease
(
key
,
1
,
rspb
.
Status_DEPLOYED
)
// create test fixture
cfgmaps
:=
newTestFixture
(
t
,
rls
)
cfgmaps
:=
newTestFixture
(
t
,
[]
*
rspb
.
Release
{
rel
}
...
)
// get
the
release
from configmaps
// get release
with key
got
,
err
:=
cfgmaps
.
Get
(
key
)
if
err
!=
nil
{
t
.
Fatalf
(
"
f
ailed to get release
with key %q. %s"
,
key
,
err
)
t
.
Fatalf
(
"
F
ailed to get release
: %s"
,
err
)
}
// compare fetched release with original
if
!
reflect
.
DeepEqual
(
rl
s
,
got
)
{
t
.
Errorf
(
"
e
xpected {%q}, got {%q}"
,
rl
s
,
got
)
if
!
reflect
.
DeepEqual
(
r
e
l
,
got
)
{
t
.
Errorf
(
"
E
xpected {%q}, got {%q}"
,
r
e
l
,
got
)
}
}
func
TestConfigMapList
(
t
*
testing
.
T
)
{
t
.
Skip
(
"ConfigMapList"
)
cfgmaps
:=
newTestFixture
(
t
,
[]
*
rspb
.
Release
{
newTestRelease
(
"key-1"
,
1
,
rspb
.
Status_DELETED
),
newTestRelease
(
"key-2"
,
1
,
rspb
.
Status_DELETED
),
newTestRelease
(
"key-3"
,
1
,
rspb
.
Status_DEPLOYED
),
newTestRelease
(
"key-4"
,
1
,
rspb
.
Status_DEPLOYED
),
newTestRelease
(
"key-5"
,
1
,
rspb
.
Status_SUPERSEDED
),
newTestRelease
(
"key-6"
,
1
,
rspb
.
Status_SUPERSEDED
),
}
...
)
// list all deleted releases
del
,
err
:=
cfgmaps
.
List
(
func
(
rel
*
rspb
.
Release
)
bool
{
return
rel
.
Info
.
Status
.
Code
==
rspb
.
Status_DELETED
})
// check
if
err
!=
nil
{
t
.
Errorf
(
"Failed to list deleted: %s"
,
err
)
}
if
len
(
del
)
!=
2
{
t
.
Errorf
(
"Expected 2 deleted, got %d:
\n
%v
\n
"
,
len
(
del
),
del
)
}
// list all deployed releases
dpl
,
err
:=
cfgmaps
.
List
(
func
(
rel
*
rspb
.
Release
)
bool
{
return
rel
.
Info
.
Status
.
Code
==
rspb
.
Status_DEPLOYED
})
// check
if
err
!=
nil
{
t
.
Errorf
(
"Failed to list deployed: %s"
,
err
)
}
if
len
(
dpl
)
!=
2
{
t
.
Errorf
(
"Expected 2 deployed, got %d"
,
len
(
dpl
))
}
// list all superseded releases
ssd
,
err
:=
cfgmaps
.
List
(
func
(
rel
*
rspb
.
Release
)
bool
{
return
rel
.
Info
.
Status
.
Code
==
rspb
.
Status_SUPERSEDED
})
// check
if
err
!=
nil
{
t
.
Errorf
(
"Failed to list superseded: %s"
,
err
)
}
if
len
(
ssd
)
!=
2
{
t
.
Errorf
(
"Expected 2 superseded, got %d"
,
len
(
ssd
))
}
}
func
TestConfigMapCreate
(
t
*
testing
.
T
)
{
// setup
key
:=
"key-1"
rls
:=
newTestRelease
(
key
,
1
,
rspb
.
Status_DEPLOYED
)
cfgmaps
:=
newTestFixture
(
t
)
// create test fixture
cfgmaps
:=
newTest
Fixture
(
t
,
rls
)
key
:=
"key-1"
rel
:=
newTest
Release
(
key
,
1
,
rspb
.
Status_DEPLOYED
)
// store the release in a configmap
if
err
:=
cfgmaps
.
Create
(
rl
s
);
err
!=
nil
{
t
.
Fatalf
(
"
f
ailed to create release with key %q: %s"
,
key
,
err
)
if
err
:=
cfgmaps
.
Create
(
r
e
l
);
err
!=
nil
{
t
.
Fatalf
(
"
F
ailed to create release with key %q: %s"
,
key
,
err
)
}
// get the release back
got
,
err
:=
cfgmaps
.
Get
(
key
)
if
err
!=
nil
{
t
.
Fatalf
(
"
f
ailed to get release with key %q: %s"
,
key
,
err
)
t
.
Fatalf
(
"
F
ailed to get release with key %q: %s"
,
key
,
err
)
}
// compare created release with original
if
!
reflect
.
DeepEqual
(
rl
s
,
got
)
{
t
.
Errorf
(
"
e
xpected {%q}, got {%q}"
,
rl
s
,
got
)
if
!
reflect
.
DeepEqual
(
r
e
l
,
got
)
{
t
.
Errorf
(
"
E
xpected {%q}, got {%q}"
,
r
e
l
,
got
)
}
}
func
TestConfigMapDelete
(
t
*
testing
.
T
)
{
// setup
func
TestConfigMapUpdate
(
t
*
testing
.
T
)
{
key
:=
"key-1"
rls
:=
newTestRelease
(
key
,
1
,
rspb
.
Status_DELETED
)
rel
:=
newTestRelease
(
key
,
1
,
rspb
.
Status_DEPLOYED
)
cfgmaps
:=
newTestFixture
(
t
,
[]
*
rspb
.
Release
{
rel
}
...
)
//
create test fixture
cfgmaps
:=
newTestFixture
(
t
,
rls
)
//
modify release status code & version
rel
=
newTestRelease
(
key
,
2
,
rspb
.
Status_SUPERSEDED
)
// delete the release
got
,
err
:=
cfgmaps
.
Delete
(
key
)
// perform the update
if
err
:=
cfgmaps
.
Update
(
rel
);
err
!=
nil
{
t
.
Fatalf
(
"Failed to update release: %s"
,
err
)
}
// fetch the updated release
got
,
err
:=
cfgmaps
.
Get
(
key
)
if
err
!=
nil
{
t
.
Fatalf
(
"
f
ailed to
del
et
e
release with key %q: %s"
,
key
,
err
)
t
.
Fatalf
(
"
F
ailed to
g
et release with key %q: %s"
,
key
,
err
)
}
// compare deleted release with original
if
!
reflect
.
DeepEqual
(
rls
,
got
)
{
t
.
Errorf
(
"expected {%q}, got {%q}"
,
rls
,
got
)
// check release has actually been updated by comparing modified fields
switch
{
case
rel
.
Info
.
Status
.
Code
!=
got
.
Info
.
Status
.
Code
:
t
.
Errorf
(
"Expected status %s, got status %s"
,
rel
.
Info
.
Status
.
Code
,
got
.
Info
.
Status
.
Code
)
case
rel
.
Version
!=
got
.
Version
:
t
.
Errorf
(
"Expected version %d, got version %d"
,
rel
.
Version
,
got
.
Version
)
}
}
func
TestConfigMapUpdate
(
t
*
testing
.
T
)
{
// setup
key
:=
"key-1"
rls
:=
newTestRelease
(
key
,
1
,
rspb
.
Status_SUPERSEDED
)
// newTestFixture initializes a MockConfigMapsInterface.
// ConfigMaps are created for each release provided.
func
newTestFixture
(
t
*
testing
.
T
,
releases
...*
rspb
.
Release
)
*
ConfigMaps
{
var
mock
MockConfigMapsInterface
mock
.
Init
(
t
,
releases
...
)
// create test fixture
cfgmaps
:=
newTestFixture
(
t
,
rls
)
return
NewConfigMaps
(
&
mock
)
}
// update release version
rls
.
Version
=
2
// newTestRelease creates a release object for testing.
func
newTestRelease
(
key
string
,
version
int32
,
status
rspb
.
Status_Code
)
*
rspb
.
Release
{
return
&
rspb
.
Release
{
Name
:
key
,
Info
:
&
rspb
.
Info
{
Status
:
&
rspb
.
Status
{
Code
:
status
}},
Version
:
version
}
}
// update the release
if
err
:=
cfgmaps
.
Update
(
rls
);
err
!=
nil
{
t
.
Fatalf
(
"failed to update release with key %q: %s"
,
key
,
err
)
}
// MockConfigMapsInterface mocks a kubernetes ConfigMapsInterface
type
MockConfigMapsInterface
struct
{
unversioned
.
ConfigMapsInterface
// fetch the updated release
got
,
err
:=
cfgmaps
.
Get
(
key
)
if
err
!=
nil
{
t
.
Fatalf
(
"failed to get release with key %q: %s"
,
key
,
err
)
}
_
=
got
//TODO: validate the version was update correctly
//if rls.Version != got.Version {
// t.Fatalf("expected version %d, got version %d", rls.Version, got.Version)
//}
objects
map
[
string
]
*
api
.
ConfigMap
}
// newTestFixture prepopulates a mock implementation of a kubernetes
// ConfigMapsInterface returning an initialized driver.ConfigMaps.
func
newTestFixture
(
t
*
testing
.
T
,
list
...*
rspb
.
Release
)
*
ConfigMaps
{
var
objs
[]
runtime
.
Object
func
(
mock
*
MockConfigMapsInterface
)
Init
(
t
*
testing
.
T
,
releases
...*
rspb
.
Release
)
{
mock
.
objects
=
map
[
string
]
*
api
.
ConfigMap
{}
for
i
:=
range
list
{
obj
,
err
:=
newConfigMapsObject
(
list
[
i
]
,
nil
)
for
_
,
rls
:=
range
releases
{
cfgmap
,
err
:=
newConfigMapsObject
(
rls
,
nil
)
if
err
!=
nil
{
t
.
Fatalf
(
"
f
ailed to create
object
: %s"
,
err
)
t
.
Fatalf
(
"
F
ailed to create
configmap
: %s"
,
err
)
}
objs
=
append
(
objs
,
obj
)
mock
.
objects
[
rls
.
Name
]
=
cfgmap
}
}
return
NewConfigMaps
(
&
testclient
.
FakeConfigMaps
{
Fake
:
testclient
.
NewSimpleFake
(
objs
...
),
})
func
(
mock
*
MockConfigMapsInterface
)
Get
(
name
string
)
(
*
api
.
ConfigMap
,
error
)
{
object
,
ok
:=
mock
.
objects
[
name
]
if
!
ok
{
return
nil
,
kberrs
.
NewNotFound
(
api
.
Resource
(
"tests"
),
name
)
}
return
object
,
nil
}
// newTestRelease creates a release object for testing
func
newTestRelease
(
key
string
,
version
int32
,
status
rspb
.
Status_Code
)
*
rspb
.
Release
{
return
&
rspb
.
Release
{
Name
:
key
,
Info
:
&
rspb
.
Info
{
Status
:
&
rspb
.
Status
{
Code
:
status
}},
Version
:
version
}
func
(
mock
*
MockConfigMapsInterface
)
List
(
opts
api
.
ListOptions
)
(
*
api
.
ConfigMapList
,
error
)
{
var
list
api
.
ConfigMapList
for
_
,
cfgmap
:=
range
mock
.
objects
{
list
.
Items
=
append
(
list
.
Items
,
*
cfgmap
)
}
return
&
list
,
nil
}
func
(
mock
*
MockConfigMapsInterface
)
Create
(
cfgmap
*
api
.
ConfigMap
)
(
*
api
.
ConfigMap
,
error
)
{
name
:=
cfgmap
.
ObjectMeta
.
Name
if
object
,
ok
:=
mock
.
objects
[
name
];
ok
{
return
object
,
kberrs
.
NewAlreadyExists
(
api
.
Resource
(
"tests"
),
name
)
}
mock
.
objects
[
name
]
=
cfgmap
return
cfgmap
,
nil
}
func
(
mock
*
MockConfigMapsInterface
)
Update
(
cfgmap
*
api
.
ConfigMap
)
(
*
api
.
ConfigMap
,
error
)
{
name
:=
cfgmap
.
ObjectMeta
.
Name
if
_
,
ok
:=
mock
.
objects
[
name
];
!
ok
{
return
nil
,
kberrs
.
NewNotFound
(
api
.
Resource
(
"tests"
),
name
)
}
mock
.
objects
[
name
]
=
cfgmap
return
cfgmap
,
nil
}
func
(
mock
*
MockConfigMapsInterface
)
Delete
(
name
string
)
error
{
if
_
,
ok
:=
mock
.
objects
[
name
];
!
ok
{
return
kberrs
.
NewNotFound
(
api
.
Resource
(
"tests"
),
name
)
}
delete
(
mock
.
objects
,
name
)
return
nil
}
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