Skip to content

Commit

Permalink
Simulating getById behaviour for entites with only a list endpoint (#118
Browse files Browse the repository at this point in the history
)

* Simulating getById behaviour for entites with only a list endpoint

* Added a bunch of static fixture tests to make it clear that these values must be exported by the library.
Also tweaked comments.
Both these changes make GoLand stop raising warnings.
  • Loading branch information
JohnSharpe committed Jun 27, 2023
1 parent 033fbfd commit 82d1a2f
Show file tree
Hide file tree
Showing 8 changed files with 473 additions and 27 deletions.
100 changes: 100 additions & 0 deletions fixture_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
package rediscloud_api

import (
"testing"

"github.com/RedisLabs/rediscloud-go-api/service/cloud_accounts"
"github.com/RedisLabs/rediscloud-go-api/service/databases"
"github.com/RedisLabs/rediscloud-go-api/service/subscriptions"
"github.com/stretchr/testify/assert"
)

func TestSubcriptionFixtures(t *testing.T) {
assert.Equal(t, "active", subscriptions.SubscriptionStatusActive)
assert.Equal(t, "pending", subscriptions.SubscriptionStatusPending)
assert.Equal(t, "error", subscriptions.SubscriptionStatusError)
assert.Equal(t, "deleting", subscriptions.SubscriptionStatusDeleting)

assert.Equal(t, "initiating-request", subscriptions.VPCPeeringStatusInitiatingRequest)
assert.Equal(t, "active", subscriptions.VPCPeeringStatusActive)
assert.Equal(t, "inactive", subscriptions.VPCPeeringStatusInactive)
assert.Equal(t, "pending-acceptance", subscriptions.VPCPeeringStatusPendingAcceptance)
assert.Equal(t, "failed", subscriptions.VPCPeeringStatusFailed)

assert.Equal(t, "single-region", subscriptions.SubscriptionDeploymentTypeSingleRegion)
assert.Equal(t, "active-active", subscriptions.SubscriptionDeploymentTypeActiveActive)
}

func TestDatabaseFixtures(t *testing.T) {
assert.Equal(t, "active", databases.StatusActive)
assert.Equal(t, "draft", databases.StatusDraft)
assert.Equal(t, "pending", databases.StatusPending)
assert.Equal(t, "rcp-change-pending", databases.StatusRCPChangePending)
assert.Equal(t, "rcp-draft", databases.StatusRCPDraft)
assert.Equal(t, "rcp-active-change-draft", databases.StatusRCPActiveChangeDraft)
assert.Equal(t, "active-change-draft", databases.StatusActiveChangeDraft)
assert.Equal(t, "active-change-pending", databases.StatusActiveChangePending)

assert.Equal(t, "proxy-policy-change-pending", databases.StatusProxyPolicyChangePending)
assert.Equal(t, "proxy-policy-change-draft", databases.StatusProxyPolicyChangeDraft)
assert.Equal(t, "error", databases.StatusError)

assert.Equal(t, []string{databases.MemoryStorageRam, databases.MemoryStorageRamAndFlash}, databases.MemoryStorageValues())
assert.Equal(t, []string{"redis", "memcached"}, databases.ProtocolValues())
assert.Equal(t, []string{
"none",
"aof-every-1-second",
"aof-every-write",
"snapshot-every-1-hour",
"snapshot-every-6-hours",
"snapshot-every-12-hours",
}, databases.DataPersistenceValues())
assert.Equal(t, []string{
"allkeys-lru",
"allkeys-lfu",
"allkeys-random",
"volatile-lru",
"volatile-lfu",
"volatile-random",
"volatile-ttl",
"noeviction",
}, databases.DataEvictionPolicyValues())
assert.Equal(t, []string{
"http",
"redis",
"ftp",
"aws-s3",
"azure-blob-storage",
"google-blob-storage",
}, databases.SourceTypeValues())
assert.Equal(t, []string{
"dataset-size",
"throughput-higher-than",
"throughput-lower-than",
"latency",
"syncsource-error",
"syncsource-lag",
}, databases.AlertNameValues())
assert.Equal(t, []string{
"ftp",
"aws-s3",
"azure-blob-storage",
"google-blob-storage",
}, databases.BackupStorageTypes())
assert.Equal(t, []string{
databases.BackupIntervalEvery24Hours,
databases.BackupIntervalEvery12Hours,
databases.BackupIntervalEvery6Hours,
databases.BackupIntervalEvery4Hours,
databases.BackupIntervalEvery2Hours,
databases.BackupIntervalEvery1Hours,
}, databases.BackupIntervals())
}

func TestCloudAccountFixtures(t *testing.T) {
assert.Equal(t, "active", cloud_accounts.StatusActive)
assert.Equal(t, "draft", cloud_accounts.StatusDraft)
assert.Equal(t, "change-draft", cloud_accounts.StatusChangeDraft)
assert.Equal(t, "error", cloud_accounts.StatusError)
assert.Equal(t, []string{"AWS", "GCP"}, cloud_accounts.ProviderValues())
}
122 changes: 122 additions & 0 deletions redis_rule_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -621,3 +621,125 @@ func TestListRedisRules(t *testing.T) {
}, actual)

}

func TestGetNonExistentRedisRule(t *testing.T) {
server := httptest.NewServer(
testServer(
"key",
"secret",
getRequest(t, "/acl/redisRules", `{
"accountId": 53012,
"redisRules": [
{
"id": 3923,
"name": "ACL-rule-example",
"acl": "+@all",
"isDefault": false,
"status": "active"
},
{
"id": 76,
"name": "Full-Access",
"acl": "+@all ~*",
"isDefault": true,
"status": "active"
},
{
"id": 77,
"name": "Read-Write",
"acl": "+@all -@dangerous ~*",
"isDefault": true,
"status": "active"
},
{
"id": 78,
"name": "Read-Only",
"acl": "+@read ~*",
"isDefault": true,
"status": "active"
}
],
"links": [
{
"rel": "self",
"href": "https://api-cloudapi.qa.redislabs.com/v1/acl/redisRules",
"type": "GET"
}
]
}`),
),
)

subject, err := clientFromTestServer(server, "key", "secret")
require.NoError(t, err)

actual, err := subject.RedisRules.Get(context.TODO(), 40004)

assert.Nil(t, actual)
assert.IsType(t, &redis_rules.NotFound{}, err)

}

func TestGetRedisRule(t *testing.T) {
server := httptest.NewServer(
testServer(
"key",
"secret",
getRequest(t, "/acl/redisRules", `{
"accountId": 53012,
"redisRules": [
{
"id": 3923,
"name": "ACL-rule-example",
"acl": "+@all",
"isDefault": false,
"status": "active"
},
{
"id": 76,
"name": "Full-Access",
"acl": "+@all ~*",
"isDefault": true,
"status": "active"
},
{
"id": 77,
"name": "Read-Write",
"acl": "+@all -@dangerous ~*",
"isDefault": true,
"status": "active"
},
{
"id": 78,
"name": "Read-Only",
"acl": "+@read ~*",
"isDefault": true,
"status": "active"
}
],
"links": [
{
"rel": "self",
"href": "https://api-cloudapi.qa.redislabs.com/v1/acl/redisRules",
"type": "GET"
}
]
}`),
),
)

subject, err := clientFromTestServer(server, "key", "secret")
require.NoError(t, err)

actual, err := subject.RedisRules.Get(context.TODO(), 3923)
require.NoError(t, err)

assert.Equal(t, &redis_rules.GetRedisRuleResponse{
ID: redis.Int(3923),
Name: redis.String("ACL-rule-example"),
ACL: redis.String("+@all"),
IsDefault: redis.Bool(false),
Status: redis.String("active"),
}, actual)

}
Loading

0 comments on commit 82d1a2f

Please sign in to comment.