From bff51c47ce153186b121ec4e22531d2b526a23cb Mon Sep 17 00:00:00 2001 From: Dean Troyer Date: Wed, 14 Dec 2016 15:53:33 -0600 Subject: [PATCH] Fix up unit tests * Fix objectstore unit tests to use Session * Remove unused auth code * Skip unit tests for validator (did these ever work?) * Fix volume v2 location Change-Id: Ib770c20a2798822c15f34e89c5c49f2a2814beb5 --- examples/40-volume-v2.go | 4 +- identity/middleware/validation_test.go | 2 + identity/v2/unused-auth.go | 145 ------------------------- objectstorage/v1/objectstorage_test.go | 84 ++++++++++---- volume/{ => v2}/volume.go | 0 volume/{ => v2}/volume_test.go | 0 6 files changed, 69 insertions(+), 166 deletions(-) delete mode 100644 identity/v2/unused-auth.go rename volume/{ => v2}/volume.go (100%) rename volume/{ => v2}/volume_test.go (100%) diff --git a/examples/40-volume-v2.go b/examples/40-volume-v2.go index 544e2b1..a522fcb 100644 --- a/examples/40-volume-v2.go +++ b/examples/40-volume-v2.go @@ -19,7 +19,7 @@ import ( "net/http" "time" - "git.openstack.org/openstack/golang-client.git/volume" + "git.openstack.org/openstack/golang-client.git/volume/v2" "git.openstack.org/openstack/golang-client.git/openstack" ) @@ -30,7 +30,7 @@ func main() { // Authenticate with a username, password, tenant id. creds := openstack.AuthOpts{ AuthUrl: config.Host, - Project: config.ProjectName, + ProjectName: config.ProjectName, Username: config.Username, Password: config.Password, } diff --git a/identity/middleware/validation_test.go b/identity/middleware/validation_test.go index 6b2a2e1..afa827d 100644 --- a/identity/middleware/validation_test.go +++ b/identity/middleware/validation_test.go @@ -1,3 +1,5 @@ +// +build !unit + // Copyright (c) 2016 eBay Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); you may diff --git a/identity/v2/unused-auth.go b/identity/v2/unused-auth.go deleted file mode 100644 index 0c97493..0000000 --- a/identity/v2/unused-auth.go +++ /dev/null @@ -1,145 +0,0 @@ -// Copyright (c) 2014 Hewlett-Packard Development Company, L.P. -// -// Licensed under the Apache License, Version 2.0 (the "License"); you may -// not use this file except in compliance with the License. You may obtain -// a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -// License for the specific language governing permissions and limitations -// under the License. - -//Package identity provides functions for client-side access to OpenStack -//IdentityService. -package identity - -import ( - "encoding/json" - "errors" - "fmt" - "strings" - "time" - - "git.openstack.org/openstack/golang-client.git/openstack" -) - -type Auth struct { - Access Access -} - -type Access struct { - Token Token - User User - ServiceCatalog []Service -} - -type Token struct { - Id string - Expires time.Time - Tenant Tenant -} - -type Tenant struct { - Id string - Name string -} - -type User struct { - Id string - Name string - Roles []Role - Roles_links []string -} - -type Role struct { - Id string - Name string - TenantId string -} - -type Service struct { - Name string - Type string - Endpoints []Endpoint - Endpoints_links []string -} - -type Endpoint struct { - TenantId string - PublicURL string - InternalURL string - Region string - VersionId string - VersionInfo string - VersionList string -} - -func AuthKey(url, accessKey, secretKey string) (Auth, error) { - jsonStr := (fmt.Sprintf(`{"auth":{ - "apiAccessKeyCredentials":{"accessKey":"%s","secretKey":"%s"}} - }`, - accessKey, secretKey)) - return auth(&url, &jsonStr) -} - -func AuthKeyTenantId(url, accessKey, secretKey, tenantId string) (Auth, error) { - jsonStr := (fmt.Sprintf(`{"auth":{ - "apiAccessKeyCredentials":{"accessKey":"%s","secretKey":"%s"},"tenantId":"%s"} - }`, - accessKey, secretKey, tenantId)) - return auth(&url, &jsonStr) -} - -func AuthUserName(url, username, password string) (Auth, error) { - jsonStr := (fmt.Sprintf(`{"auth":{ - "passwordCredentials":{"username":"%s","password":"%s"}} - }`, - username, password)) - return auth(&url, &jsonStr) -} - -func AuthUserNameTenantName(url, username, password, tenantName string) (Auth, error) { - jsonStr := (fmt.Sprintf(`{"auth":{ - "passwordCredentials":{"username":"%s","password":"%s"},"tenantName":"%s"} - }`, - username, password, tenantName)) - return auth(&url, &jsonStr) -} - -func AuthUserNameTenantId(url, username, password, tenantId string) (Auth, error) { - jsonStr := (fmt.Sprintf(`{"auth":{ - "passwordCredentials":{"username":"%s","password":"%s"},"tenantId":"%s"} - }`, - username, password, tenantId)) - return auth(&url, &jsonStr) -} - -func AuthTenantNameTokenId(url, tenantName, tokenId string) (Auth, error) { - jsonStr := (fmt.Sprintf(`{"auth":{ - "tenantName":"%s","token":{"id":"%s"}} - }`, - tenantName, tokenId)) - return auth(&url, &jsonStr) -} - -func auth(url, jsonStr *string) (Auth, error) { - var s []byte = []byte(*jsonStr) - path := fmt.Sprintf(`%s/tokens`, *url) - resp, err := openstack.Post(path, nil, nil, &s) - if err != nil { - return Auth{}, err - } - - var contentType string = strings.ToLower(resp.Resp.Header.Get("Content-Type")) - if strings.Contains(contentType, "json") != true { - return Auth{}, errors.New("err: header Content-Type is not JSON") - } - var auth = Auth{} - if err = json.Unmarshal(resp.Body, &auth); err != nil { - return Auth{}, err - } - return auth, nil -} diff --git a/objectstorage/v1/objectstorage_test.go b/objectstorage/v1/objectstorage_test.go index debbaed..dbc23bd 100644 --- a/objectstorage/v1/objectstorage_test.go +++ b/objectstorage/v1/objectstorage_test.go @@ -17,6 +17,7 @@ package objectstorage_test import ( "errors" "git.openstack.org/openstack/golang-client.git/objectstorage/v1" + "git.openstack.org/openstack/golang-client.git/openstack" "io/ioutil" "net/http" "net/http/httptest" @@ -46,7 +47,9 @@ func TestGetAccountMeta(t *testing.T) { t.Error(errors.New("Failed: r.Method == HEAD")) })) defer apiServer.Close() - meta, err := objectstorage.GetAccountMeta(apiServer.URL, tokn) + + sess := testGetSession() + meta, err := objectstorage.GetAccountMeta(sess, apiServer.URL) if err != nil { t.Error(err) } @@ -75,7 +78,9 @@ func TestListContainers(t *testing.T) { t.Error(errors.New("Failed: r.Method == GET")) })) defer apiServer.Close() - myList, err := objectstorage.ListContainers(0, "", apiServer.URL, tokn) + + sess := testGetSession() + myList, err := objectstorage.ListContainers(sess, 0, "", apiServer.URL) if err != nil { t.Error(err) } @@ -108,8 +113,10 @@ func TestListObjects(t *testing.T) { t.Error(errors.New("Failed: r.Method == GET")) })) defer apiServer.Close() + + sess := testGetSession() myList, err := objectstorage.ListObjects( - 0, "", "", "", "", apiServer.URL+containerPrefix, tokn) + sess, 0, "", "", "", "", apiServer.URL+containerPrefix) if err != nil { t.Error(err) } @@ -128,8 +135,10 @@ func TestDeleteContainer(t *testing.T) { t.Error(errors.New("Failed: r.Method == DELETE")) })) defer apiServer.Close() - if err := objectstorage.DeleteContainer(apiServer.URL+containerPrefix, - tokn); err != nil { + + sess := testGetSession() + if err := objectstorage.DeleteContainer(sess, apiServer.URL+containerPrefix, + ); err != nil { t.Error(err) } } @@ -147,7 +156,9 @@ func TestGetContainerMeta(t *testing.T) { t.Error(errors.New("Failed: r.Method == HEAD")) })) defer apiServer.Close() - meta, err := objectstorage.GetContainerMeta(apiServer.URL+containerPrefix, tokn) + + sess := testGetSession() + meta, err := objectstorage.GetContainerMeta(sess, apiServer.URL+containerPrefix) if err != nil { t.Error(err) } @@ -169,9 +180,13 @@ func TestSetContainerMeta(t *testing.T) { "Failed: r.Method == POST && X-Container-Meta-Fruit == Apple")) })) defer apiServer.Close() + + sess := testGetSession() + headers := http.Header{} + headers.Add("X-Container-Meta-Fruit", "Apple") if err := objectstorage.SetContainerMeta( - apiServer.URL+containerPrefix, tokn, - "X-Container-Meta-Fruit", "Apple"); err != nil { + sess, apiServer.URL+containerPrefix, + headers); err != nil { t.Error(err) } } @@ -186,8 +201,13 @@ func TestPutContainer(t *testing.T) { t.Error(errors.New("Failed: r.Method == PUT")) })) defer apiServer.Close() - if err := objectstorage.PutContainer(apiServer.URL+containerPrefix, - tokn, "X-TTL", "259200", "X-Log-Retention", "true"); err != nil { + + sess := testGetSession() + headers := http.Header{} + headers.Add("X-TTL", "259200") + headers.Add("X-Log-Retention", "true") + if err := objectstorage.PutContainer(sess, apiServer.URL+containerPrefix, + headers); err != nil { t.Error(err) } } @@ -217,8 +237,10 @@ func TestPutObject(t *testing.T) { t.Error(errors.New("Failed: Not 201")) })) defer apiServer.Close() - if err = objectstorage.PutObject(&fContent, apiServer.URL+objPrefix, - tokn); err != nil { + + sess := testGetSession() + headers := http.Header{} + if err = objectstorage.PutObject(sess, &fContent, apiServer.URL+objPrefix, headers); err != nil { t.Error(err) } } @@ -235,8 +257,10 @@ func TestCopyObject(t *testing.T) { "Failed: r.Method == COPY && r.Header.Get(Destination) == destURL")) })) defer apiServer.Close() - if err := objectstorage.CopyObject(apiServer.URL+objPrefix, destURL, - tokn); err != nil { + + sess := testGetSession() + if err := objectstorage.CopyObject(sess, apiServer.URL+objPrefix, destURL, + ); err != nil { t.Error(err) } } @@ -254,7 +278,9 @@ func TestGetObjectMeta(t *testing.T) { "Failed: r.Method == HEAD && r.Header.Get(X-Auth-Token) == tokn")) })) defer apiServer.Close() - meta, err := objectstorage.GetObjectMeta(apiServer.URL+objPrefix, tokn) + + sess := testGetSession() + meta, err := objectstorage.GetObjectMeta(sess, apiServer.URL+objPrefix) if err != nil { t.Error(err) } @@ -274,8 +300,12 @@ func TestSetObjectMeta(t *testing.T) { t.Error(errors.New("Failed: r.Method == POST && X-Object-Meta-Fruit == Apple")) })) defer apiServer.Close() - if err := objectstorage.SetObjectMeta(apiServer.URL+objPrefix, - tokn, "X-Object-Meta-Fruit", "Apple"); err != nil { + + sess := testGetSession() + headers := http.Header{} + headers.Add("X-Object-Meta-Fruit", "Apple") + if err := objectstorage.SetObjectMeta(sess, apiServer.URL+objPrefix, + headers); err != nil { t.Error(err) } } @@ -299,7 +329,9 @@ func TestGetObject(t *testing.T) { t.Error(errors.New("Failed: r.Method == GET")) })) defer apiServer.Close() - hdr, body, err := objectstorage.GetObject(apiServer.URL+objPrefix, tokn) + + sess := testGetSession() + hdr, body, err := objectstorage.GetObject(sess, apiServer.URL+objPrefix) if err != nil { t.Error(err) } @@ -324,7 +356,21 @@ func TestDeleteObject(t *testing.T) { t.Error(errors.New("Failed: r.Method == DELETE")) })) defer apiServer.Close() - if err := objectstorage.DeleteObject(apiServer.URL+objPrefix, tokn); err != nil { + + sess := testGetSession() + if err := objectstorage.DeleteObject(sess, apiServer.URL+objPrefix); err != nil { t.Error(err) } } + +func testGetSession() *openstack.Session { + auth := openstack.AuthToken{ + Access: openstack.AccessType{ + Token: openstack.Token{ + ID: tokn, + }, + }, + } + sess, _ := openstack.NewSession(http.DefaultClient, auth, nil) + return sess +} diff --git a/volume/volume.go b/volume/v2/volume.go similarity index 100% rename from volume/volume.go rename to volume/v2/volume.go diff --git a/volume/volume_test.go b/volume/v2/volume_test.go similarity index 100% rename from volume/volume_test.go rename to volume/v2/volume_test.go