adds partition key cert test

Signed-off-by: Roberto J Rojas <robertojrojas@gmail.com>
This commit is contained in:
Roberto J Rojas 2023-01-11 20:42:53 -05:00
parent 77e62723f6
commit 0be8350b0d
6 changed files with 108 additions and 13 deletions

View File

@ -6,7 +6,26 @@ spec:
type: state.aws.dynamodb type: state.aws.dynamodb
version: v1 version: v1
metadata: metadata:
- name: table - name: accessKey
value: "cert-test-basic" secretKeyRef:
- name: ttlAttributeName name: AWS_ACCESS_KEY_ID
value: "expiresAt" key: AWS_ACCESS_KEY_ID
- name: secretKey
secretKeyRef:
name: AWS_SECRET_ACCESS_KEY
key: AWS_SECRET_ACCESS_KEY
- name: region
secretKeyRef:
name: AWS_REGION
key: AWS_REGION
- name: consumerID
secretKeyRef:
name: PUBSUB_AWS_SNSSQS_QUEUE_3
key: PUBSUB_AWS_SNSSQS_QUEUE_3
- name: table
value: "cert-test-basic"
- name: ttlAttributeName
value: "expiresAt"
auth:
secretStore: envvar-secret-store

View File

@ -0,0 +1,9 @@
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: envvar-secret-store
namespace: default
spec:
type: secretstores.local.env
version: v1
metadata:

View File

@ -0,0 +1,31 @@
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: statestore-partition-key
spec:
type: state.aws.dynamodb
version: v1
metadata:
- name: accessKey
secretKeyRef:
name: AWS_ACCESS_KEY_ID
key: AWS_ACCESS_KEY_ID
- name: secretKey
secretKeyRef:
name: AWS_SECRET_ACCESS_KEY
key: AWS_SECRET_ACCESS_KEY
- name: region
secretKeyRef:
name: AWS_REGION
key: AWS_REGION
- name: consumerID
secretKeyRef:
name: PUBSUB_AWS_SNSSQS_QUEUE_3
key: PUBSUB_AWS_SNSSQS_QUEUE_3
- name: table
value: "cert-test-partition-key"
- name: partitionKey
value: "pkey"
auth:
secretStore: envvar-secret-store

View File

@ -0,0 +1,9 @@
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: envvar-secret-store
namespace: default
spec:
type: secretstores.local.env
version: v1
metadata:

View File

@ -21,7 +21,11 @@ import (
"github.com/aws/aws-sdk-go/service/dynamodb/dynamodbiface" "github.com/aws/aws-sdk-go/service/dynamodb/dynamodbiface"
) )
func createTestTables(tables []string) error { const (
tableName = "tableName"
)
func createTestTables(tables []map[string]string) error {
svc := dynamoDBService() svc := dynamoDBService()
for _, t := range tables { for _, t := range tables {
if err := createTable(svc, t); err != nil { if err := createTable(svc, t); err != nil {
@ -49,18 +53,18 @@ func dynamoDBService() dynamodbiface.DynamoDBAPI {
return dynamodb.New(sess) return dynamodb.New(sess)
} }
func createTable(svc dynamodbiface.DynamoDBAPI, tableName string) error { func createTable(svc dynamodbiface.DynamoDBAPI, table map[string]string) error {
key := "key"
attributeDefinitions := []*dynamodb.AttributeDefinition{ attributeDefinitions := []*dynamodb.AttributeDefinition{
{ {
AttributeName: aws.String(key), AttributeName: aws.String(table[key]),
AttributeType: aws.String("S"), AttributeType: aws.String("S"),
}, },
} }
keySchema := []*dynamodb.KeySchemaElement{ keySchema := []*dynamodb.KeySchemaElement{
{ {
AttributeName: aws.String(key), AttributeName: aws.String(table[key]),
KeyType: aws.String("HASH"), KeyType: aws.String("HASH"),
}, },
} }
@ -74,7 +78,7 @@ func createTable(svc dynamodbiface.DynamoDBAPI, tableName string) error {
AttributeDefinitions: attributeDefinitions, AttributeDefinitions: attributeDefinitions,
KeySchema: keySchema, KeySchema: keySchema,
ProvisionedThroughput: provisionedThroughput, ProvisionedThroughput: provisionedThroughput,
TableName: aws.String(tableName), TableName: aws.String(table[tableName]),
}) })
if err != nil { if err != nil {
return err return err

View File

@ -38,8 +38,15 @@ const (
// The following Test Tables names must match // The following Test Tables names must match
// the values of the "table" metadata properties // the values of the "table" metadata properties
// found inside each of the components/*/dynamodb.yaml files // found inside each of the components/*/dynamodb.yaml files
var testTables = []string{ var testTables = []map[string]string{
"cert-test-basic", {
key: key,
tableName: "cert-test-basic",
},
{
key: "pkey",
tableName: "cert-test-partition-key",
},
} }
func TestAWSDynamoDBStorage(t *testing.T) { func TestAWSDynamoDBStorage(t *testing.T) {
@ -140,7 +147,18 @@ func TestAWSDynamoDBStorage(t *testing.T) {
embedded.WithDaprHTTPPort(currentHTTPPort), embedded.WithDaprHTTPPort(currentHTTPPort),
embedded.WithComponentsPath("./components/basictest"), embedded.WithComponentsPath("./components/basictest"),
componentRuntimeOptions())). componentRuntimeOptions())).
Step("Run basic test with master key", ttlTest("statestore-basic")). Step("Run basic test with default key", ttlTest("statestore-basic")).
Run()
flow.New(t, "Test Partition Key").
// Run the Dapr sidecar with AWS DynamoDB storage.
Step(sidecar.Run(sidecarNamePrefix,
embedded.WithoutApp(),
embedded.WithDaprGRPCPort(currentGrpcPort),
embedded.WithDaprHTTPPort(currentHTTPPort),
embedded.WithComponentsPath("./components/partition_key"),
componentRuntimeOptions())).
Step("Run basic test with partition key", ttlTest("statestore-basic")).
Run() Run()
} }
@ -151,8 +169,13 @@ func componentRuntimeOptions() []runtime.Option {
stateRegistry.Logger = log stateRegistry.Logger = log
stateRegistry.RegisterComponent(dynamodb.NewDynamoDBStateStore, "aws.dynamodb") stateRegistry.RegisterComponent(dynamodb.NewDynamoDBStateStore, "aws.dynamodb")
secretstoreRegistry := secretstores_loader.NewRegistry()
secretstoreRegistry.Logger = log
secretstoreRegistry.RegisterComponent(secretstore_env.NewEnvSecretStore, "local.env")
return []runtime.Option{ return []runtime.Option{
runtime.WithStates(stateRegistry), runtime.WithStates(stateRegistry),
runtime.WithSecretStores(secretstoreRegistry),
} }
} }