68 lines
1.4 KiB
Go
68 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"errors"
|
|
"os"
|
|
"path"
|
|
|
|
"github.com/DATA-DOG/godog"
|
|
|
|
qs "github.com/yunify/qingstor-sdk-go/service"
|
|
)
|
|
|
|
// ImageFeatureContext provides feature context for image.
|
|
func ImageFeatureContext(s *godog.Suite) {
|
|
s.Step(`^image process with key "([^"]*)" and query "([^"]*)"$`, imageProcessWithKeyAndQuery)
|
|
s.Step(`^image process status code is (\d+)$`, imageProcessStatusCodeIs)
|
|
|
|
}
|
|
|
|
var imageName string
|
|
|
|
func imageProcessWithKeyAndQuery(objectKey, query string) error {
|
|
if bucket == nil {
|
|
return errors.New("The bucket is not exist")
|
|
}
|
|
file, err := os.Open(path.Join("features", "fixtures", objectKey))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer file.Close()
|
|
|
|
imageName = objectKey
|
|
|
|
_, err = bucket.PutObject(imageName, &qs.PutObjectInput{Body: file})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
output, err := bucket.ImageProcess(objectKey, &qs.ImageProcessInput{
|
|
Action: &query})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
imageProcessOutput = output
|
|
return nil
|
|
}
|
|
|
|
var imageProcessOutput *qs.ImageProcessOutput
|
|
|
|
func imageProcessStatusCodeIs(statusCode int) error {
|
|
defer deleteImage(imageName)
|
|
return checkEqual(qs.IntValue(imageProcessOutput.StatusCode), statusCode)
|
|
}
|
|
|
|
var oOutput *qs.DeleteObjectOutput
|
|
|
|
func deleteImage(imageName string) error {
|
|
|
|
if bucket == nil {
|
|
return errors.New("The bucket is not exist")
|
|
}
|
|
|
|
oOutput, err = bucket.DeleteObject(imageName)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return checkEqual(qs.IntValue(oOutput.StatusCode), 204)
|
|
}
|