Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
D
docker-py
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
docker-py
Commits
e8a86e40
Kaydet (Commit)
e8a86e40
authored
Şub 10, 2017
tarafından
Joffrey F
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Add tests for secret API implementation
Signed-off-by:
Joffrey F
<
joffrey@docker.com
>
üst
d1038c42
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
154 additions
and
4 deletions
+154
-4
secret.py
docker/api/secret.py
+4
-0
api_secret_test.py
tests/integration/api_secret_test.py
+69
-0
api_service_test.py
tests/integration/api_service_test.py
+70
-0
base.py
tests/integration/base.py
+7
-0
api_container_test.py
tests/unit/api_container_test.py
+3
-3
api_image_test.py
tests/unit/api_image_test.py
+1
-1
No files found.
docker/api/secret.py
Dosyayı görüntüle @
e8a86e40
import
base64
import
six
from
..
import
utils
...
...
@@ -20,6 +22,8 @@ class SecretApiMixin(object):
data
=
data
.
encode
(
'utf-8'
)
data
=
base64
.
b64encode
(
data
)
if
six
.
PY3
:
data
=
data
.
decode
(
'ascii'
)
body
=
{
'Data'
:
data
,
'Name'
:
name
,
...
...
tests/integration/api_secret_test.py
0 → 100644
Dosyayı görüntüle @
e8a86e40
# -*- coding: utf-8 -*-
import
docker
import
pytest
from
..helpers
import
force_leave_swarm
,
requires_api_version
from
.base
import
BaseAPIIntegrationTest
@requires_api_version
(
'1.25'
)
class
SecretAPITest
(
BaseAPIIntegrationTest
):
def
setUp
(
self
):
super
(
SecretAPITest
,
self
)
.
setUp
()
self
.
init_swarm
()
def
tearDown
(
self
):
super
(
SecretAPITest
,
self
)
.
tearDown
()
force_leave_swarm
(
self
.
client
)
def
test_create_secret
(
self
):
secret_id
=
self
.
client
.
create_secret
(
'favorite_character'
,
'sakuya izayoi'
)
self
.
tmp_secrets
.
append
(
secret_id
)
assert
'ID'
in
secret_id
data
=
self
.
client
.
inspect_secret
(
secret_id
)
assert
data
[
'Spec'
][
'Name'
]
==
'favorite_character'
def
test_create_secret_unicode_data
(
self
):
secret_id
=
self
.
client
.
create_secret
(
'favorite_character'
,
u'いざよいさくや'
)
self
.
tmp_secrets
.
append
(
secret_id
)
assert
'ID'
in
secret_id
data
=
self
.
client
.
inspect_secret
(
secret_id
)
assert
data
[
'Spec'
][
'Name'
]
==
'favorite_character'
def
test_inspect_secret
(
self
):
secret_name
=
'favorite_character'
secret_id
=
self
.
client
.
create_secret
(
secret_name
,
'sakuya izayoi'
)
self
.
tmp_secrets
.
append
(
secret_id
)
data
=
self
.
client
.
inspect_secret
(
secret_id
)
assert
data
[
'Spec'
][
'Name'
]
==
secret_name
assert
'ID'
in
data
assert
'Version'
in
data
def
test_remove_secret
(
self
):
secret_name
=
'favorite_character'
secret_id
=
self
.
client
.
create_secret
(
secret_name
,
'sakuya izayoi'
)
self
.
tmp_secrets
.
append
(
secret_id
)
assert
self
.
client
.
remove_secret
(
secret_id
)
with
pytest
.
raises
(
docker
.
errors
.
NotFound
):
self
.
client
.
inspect_secret
(
secret_id
)
def
test_list_secrets
(
self
):
secret_name
=
'favorite_character'
secret_id
=
self
.
client
.
create_secret
(
secret_name
,
'sakuya izayoi'
)
self
.
tmp_secrets
.
append
(
secret_id
)
data
=
self
.
client
.
secrets
(
filters
=
{
'names'
:
[
'favorite_character'
]})
assert
len
(
data
)
==
1
assert
data
[
0
][
'ID'
]
==
secret_id
[
'ID'
]
tests/integration/api_service_test.py
Dosyayı görüntüle @
e8a86e40
# -*- coding: utf-8 -*-
import
random
import
time
import
docker
...
...
@@ -24,6 +27,21 @@ class ServiceTest(BaseAPIIntegrationTest):
def
get_service_name
(
self
):
return
'dockerpytest_{0:x}'
.
format
(
random
.
getrandbits
(
64
))
def
get_service_container
(
self
,
service_name
,
attempts
=
20
,
interval
=
0.5
):
# There is some delay between the service's creation and the creation
# of the service's containers. This method deals with the uncertainty
# when trying to retrieve the container associated with a service.
while
True
:
containers
=
self
.
client
.
containers
(
filters
=
{
'name'
:
[
service_name
]},
quiet
=
True
)
if
len
(
containers
)
>
0
:
return
containers
[
0
]
attempts
-=
1
if
attempts
<=
0
:
return
None
time
.
sleep
(
interval
)
def
create_simple_service
(
self
,
name
=
None
):
if
name
:
name
=
'dockerpytest_{0}'
.
format
(
name
)
...
...
@@ -317,3 +335,55 @@ class ServiceTest(BaseAPIIntegrationTest):
new_index
=
svc_info
[
'Version'
][
'Index'
]
assert
new_index
>
version_index
assert
svc_info
[
'Spec'
][
'TaskTemplate'
][
'ForceUpdate'
]
==
10
@requires_api_version
(
'1.25'
)
def
test_create_service_with_secret
(
self
):
secret_name
=
'favorite_touhou'
secret_data
=
b
'phantasmagoria of flower view'
secret_id
=
self
.
client
.
create_secret
(
secret_name
,
secret_data
)
self
.
tmp_secrets
.
append
(
secret_id
)
secret_ref
=
docker
.
types
.
SecretReference
(
secret_id
,
secret_name
)
container_spec
=
docker
.
types
.
ContainerSpec
(
'busybox'
,
[
'top'
],
secrets
=
[
secret_ref
]
)
task_tmpl
=
docker
.
types
.
TaskTemplate
(
container_spec
)
name
=
self
.
get_service_name
()
svc_id
=
self
.
client
.
create_service
(
task_tmpl
,
name
=
name
)
svc_info
=
self
.
client
.
inspect_service
(
svc_id
)
assert
'Secrets'
in
svc_info
[
'Spec'
][
'TaskTemplate'
][
'ContainerSpec'
]
secrets
=
svc_info
[
'Spec'
][
'TaskTemplate'
][
'ContainerSpec'
][
'Secrets'
]
assert
secrets
[
0
]
==
secret_ref
container
=
self
.
get_service_container
(
name
)
assert
container
is
not
None
exec_id
=
self
.
client
.
exec_create
(
container
,
'cat /run/secrets/{0}'
.
format
(
secret_name
)
)
assert
self
.
client
.
exec_start
(
exec_id
)
==
secret_data
@requires_api_version
(
'1.25'
)
def
test_create_service_with_unicode_secret
(
self
):
secret_name
=
'favorite_touhou'
secret_data
=
u'東方花映塚'
secret_id
=
self
.
client
.
create_secret
(
secret_name
,
secret_data
)
self
.
tmp_secrets
.
append
(
secret_id
)
secret_ref
=
docker
.
types
.
SecretReference
(
secret_id
,
secret_name
)
container_spec
=
docker
.
types
.
ContainerSpec
(
'busybox'
,
[
'top'
],
secrets
=
[
secret_ref
]
)
task_tmpl
=
docker
.
types
.
TaskTemplate
(
container_spec
)
name
=
self
.
get_service_name
()
svc_id
=
self
.
client
.
create_service
(
task_tmpl
,
name
=
name
)
svc_info
=
self
.
client
.
inspect_service
(
svc_id
)
assert
'Secrets'
in
svc_info
[
'Spec'
][
'TaskTemplate'
][
'ContainerSpec'
]
secrets
=
svc_info
[
'Spec'
][
'TaskTemplate'
][
'ContainerSpec'
][
'Secrets'
]
assert
secrets
[
0
]
==
secret_ref
container
=
self
.
get_service_container
(
name
)
assert
container
is
not
None
exec_id
=
self
.
client
.
exec_create
(
container
,
'cat /run/secrets/{0}'
.
format
(
secret_name
)
)
container_secret
=
self
.
client
.
exec_start
(
exec_id
)
container_secret
=
container_secret
.
decode
(
'utf-8'
)
assert
container_secret
==
secret_data
tests/integration/base.py
Dosyayı görüntüle @
e8a86e40
...
...
@@ -28,6 +28,7 @@ class BaseIntegrationTest(unittest.TestCase):
self
.
tmp_volumes
=
[]
self
.
tmp_networks
=
[]
self
.
tmp_plugins
=
[]
self
.
tmp_secrets
=
[]
def
tearDown
(
self
):
client
=
docker
.
from_env
(
version
=
TEST_API_VERSION
)
...
...
@@ -52,6 +53,12 @@ class BaseIntegrationTest(unittest.TestCase):
except
docker
.
errors
.
APIError
:
pass
for
secret
in
self
.
tmp_secrets
:
try
:
client
.
api
.
remove_secret
(
secret
)
except
docker
.
errors
.
APIError
:
pass
for
folder
in
self
.
tmp_folders
:
shutil
.
rmtree
(
folder
)
...
...
tests/unit/api_container_test.py
Dosyayı görüntüle @
e8a86e40
...
...
@@ -45,7 +45,7 @@ class StartContainerTest(BaseAPIClientTest):
self
.
assertEqual
(
str
(
excinfo
.
value
),
'
image or container param is undefin
ed'
,
'
Resource ID was not provid
ed'
,
)
with
pytest
.
raises
(
ValueError
)
as
excinfo
:
...
...
@@ -53,7 +53,7 @@ class StartContainerTest(BaseAPIClientTest):
self
.
assertEqual
(
str
(
excinfo
.
value
),
'
image or container param is undefin
ed'
,
'
Resource ID was not provid
ed'
,
)
def
test_start_container_regression_573
(
self
):
...
...
@@ -1559,7 +1559,7 @@ class ContainerTest(BaseAPIClientTest):
self
.
client
.
inspect_container
(
arg
)
self
.
assertEqual
(
excinfo
.
value
.
args
[
0
],
'
image or container param is undefin
ed'
excinfo
.
value
.
args
[
0
],
'
Resource ID was not provid
ed'
)
def
test_container_stats
(
self
):
...
...
tests/unit/api_image_test.py
Dosyayı görüntüle @
e8a86e40
...
...
@@ -204,7 +204,7 @@ class ImageTest(BaseAPIClientTest):
self
.
client
.
inspect_image
(
arg
)
self
.
assertEqual
(
excinfo
.
value
.
args
[
0
],
'
image or container param is undefin
ed'
excinfo
.
value
.
args
[
0
],
'
Resource ID was not provid
ed'
)
def
test_insert_image
(
self
):
...
...
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