|
|
|
@ -17,16 +17,16 @@ func TestApiKeyDataAccess(t *testing.T) { |
|
|
|
|
defer resetTimeNow() |
|
|
|
|
|
|
|
|
|
t.Run("Testing API Key data access", func(t *testing.T) { |
|
|
|
|
InitTestDB(t) |
|
|
|
|
ss := InitTestDB(t) |
|
|
|
|
|
|
|
|
|
t.Run("Given saved api key", func(t *testing.T) { |
|
|
|
|
cmd := models.AddApiKeyCommand{OrgId: 1, Name: "hello", Key: "asd"} |
|
|
|
|
err := AddAPIKey(context.Background(), &cmd) |
|
|
|
|
err := ss.AddAPIKey(context.Background(), &cmd) |
|
|
|
|
assert.Nil(t, err) |
|
|
|
|
|
|
|
|
|
t.Run("Should be able to get key by name", func(t *testing.T) { |
|
|
|
|
query := models.GetApiKeyByNameQuery{KeyName: "hello", OrgId: 1} |
|
|
|
|
err = GetApiKeyByName(&query) |
|
|
|
|
err = ss.GetApiKeyByName(context.Background(), &query) |
|
|
|
|
|
|
|
|
|
assert.Nil(t, err) |
|
|
|
|
assert.NotNil(t, query.Result) |
|
|
|
@ -35,11 +35,11 @@ func TestApiKeyDataAccess(t *testing.T) { |
|
|
|
|
|
|
|
|
|
t.Run("Add non expiring key", func(t *testing.T) { |
|
|
|
|
cmd := models.AddApiKeyCommand{OrgId: 1, Name: "non-expiring", Key: "asd1", SecondsToLive: 0} |
|
|
|
|
err := AddAPIKey(context.Background(), &cmd) |
|
|
|
|
err := ss.AddAPIKey(context.Background(), &cmd) |
|
|
|
|
assert.Nil(t, err) |
|
|
|
|
|
|
|
|
|
query := models.GetApiKeyByNameQuery{KeyName: "non-expiring", OrgId: 1} |
|
|
|
|
err = GetApiKeyByName(&query) |
|
|
|
|
err = ss.GetApiKeyByName(context.Background(), &query) |
|
|
|
|
assert.Nil(t, err) |
|
|
|
|
|
|
|
|
|
assert.Nil(t, query.Result.Expires) |
|
|
|
@ -48,11 +48,11 @@ func TestApiKeyDataAccess(t *testing.T) { |
|
|
|
|
t.Run("Add an expiring key", func(t *testing.T) { |
|
|
|
|
// expires in one hour
|
|
|
|
|
cmd := models.AddApiKeyCommand{OrgId: 1, Name: "expiring-in-an-hour", Key: "asd2", SecondsToLive: 3600} |
|
|
|
|
err := AddAPIKey(context.Background(), &cmd) |
|
|
|
|
err := ss.AddAPIKey(context.Background(), &cmd) |
|
|
|
|
assert.Nil(t, err) |
|
|
|
|
|
|
|
|
|
query := models.GetApiKeyByNameQuery{KeyName: "expiring-in-an-hour", OrgId: 1} |
|
|
|
|
err = GetApiKeyByName(&query) |
|
|
|
|
err = ss.GetApiKeyByName(context.Background(), &query) |
|
|
|
|
assert.Nil(t, err) |
|
|
|
|
|
|
|
|
|
assert.True(t, *query.Result.Expires >= timeNow().Unix()) |
|
|
|
@ -68,35 +68,35 @@ func TestApiKeyDataAccess(t *testing.T) { |
|
|
|
|
t.Run("Add a key with negative lifespan", func(t *testing.T) { |
|
|
|
|
// expires in one day
|
|
|
|
|
cmd := models.AddApiKeyCommand{OrgId: 1, Name: "key-with-negative-lifespan", Key: "asd3", SecondsToLive: -3600} |
|
|
|
|
err := AddAPIKey(context.Background(), &cmd) |
|
|
|
|
err := ss.AddAPIKey(context.Background(), &cmd) |
|
|
|
|
assert.EqualError(t, err, models.ErrInvalidApiKeyExpiration.Error()) |
|
|
|
|
|
|
|
|
|
query := models.GetApiKeyByNameQuery{KeyName: "key-with-negative-lifespan", OrgId: 1} |
|
|
|
|
err = GetApiKeyByName(&query) |
|
|
|
|
err = ss.GetApiKeyByName(context.Background(), &query) |
|
|
|
|
assert.EqualError(t, err, "invalid API key") |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
t.Run("Add keys", func(t *testing.T) { |
|
|
|
|
// never expires
|
|
|
|
|
cmd := models.AddApiKeyCommand{OrgId: 1, Name: "key1", Key: "key1", SecondsToLive: 0} |
|
|
|
|
err := AddAPIKey(context.Background(), &cmd) |
|
|
|
|
err := ss.AddAPIKey(context.Background(), &cmd) |
|
|
|
|
assert.Nil(t, err) |
|
|
|
|
|
|
|
|
|
// expires in 1s
|
|
|
|
|
cmd = models.AddApiKeyCommand{OrgId: 1, Name: "key2", Key: "key2", SecondsToLive: 1} |
|
|
|
|
err = AddAPIKey(context.Background(), &cmd) |
|
|
|
|
err = ss.AddAPIKey(context.Background(), &cmd) |
|
|
|
|
assert.Nil(t, err) |
|
|
|
|
|
|
|
|
|
// expires in one hour
|
|
|
|
|
cmd = models.AddApiKeyCommand{OrgId: 1, Name: "key3", Key: "key3", SecondsToLive: 3600} |
|
|
|
|
err = AddAPIKey(context.Background(), &cmd) |
|
|
|
|
err = ss.AddAPIKey(context.Background(), &cmd) |
|
|
|
|
assert.Nil(t, err) |
|
|
|
|
|
|
|
|
|
// advance mocked getTime by 1s
|
|
|
|
|
timeNow() |
|
|
|
|
|
|
|
|
|
query := models.GetApiKeysQuery{OrgId: 1, IncludeExpired: false} |
|
|
|
|
err = GetAPIKeys(context.Background(), &query) |
|
|
|
|
err = ss.GetAPIKeys(context.Background(), &query) |
|
|
|
|
assert.Nil(t, err) |
|
|
|
|
|
|
|
|
|
for _, k := range query.Result { |
|
|
|
@ -106,7 +106,7 @@ func TestApiKeyDataAccess(t *testing.T) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
query = models.GetApiKeysQuery{OrgId: 1, IncludeExpired: true} |
|
|
|
|
err = GetAPIKeys(context.Background(), &query) |
|
|
|
|
err = ss.GetAPIKeys(context.Background(), &query) |
|
|
|
|
assert.Nil(t, err) |
|
|
|
|
|
|
|
|
|
found := false |
|
|
|
@ -125,11 +125,11 @@ func TestApiKeyErrors(t *testing.T) { |
|
|
|
|
defer resetTimeNow() |
|
|
|
|
|
|
|
|
|
t.Run("Testing API Key errors", func(t *testing.T) { |
|
|
|
|
InitTestDB(t) |
|
|
|
|
ss := InitTestDB(t) |
|
|
|
|
|
|
|
|
|
t.Run("Delete non-existing key should return error", func(t *testing.T) { |
|
|
|
|
cmd := models.DeleteApiKeyCommand{Id: 1} |
|
|
|
|
err := DeleteApiKeyCtx(context.Background(), &cmd) |
|
|
|
|
err := ss.DeleteApiKey(context.Background(), &cmd) |
|
|
|
|
|
|
|
|
|
assert.EqualError(t, err, models.ErrApiKeyNotFound.Error()) |
|
|
|
|
}) |
|
|
|
@ -137,12 +137,12 @@ func TestApiKeyErrors(t *testing.T) { |
|
|
|
|
t.Run("Testing API Duplicate Key Errors", func(t *testing.T) { |
|
|
|
|
t.Run("Given saved api key", func(t *testing.T) { |
|
|
|
|
cmd := models.AddApiKeyCommand{OrgId: 0, Name: "duplicate", Key: "asd"} |
|
|
|
|
err := AddAPIKey(context.Background(), &cmd) |
|
|
|
|
err := ss.AddAPIKey(context.Background(), &cmd) |
|
|
|
|
assert.Nil(t, err) |
|
|
|
|
|
|
|
|
|
t.Run("Add API Key with existing Org ID and Name", func(t *testing.T) { |
|
|
|
|
cmd := models.AddApiKeyCommand{OrgId: 0, Name: "duplicate", Key: "asd"} |
|
|
|
|
err = AddAPIKey(context.Background(), &cmd) |
|
|
|
|
err = ss.AddAPIKey(context.Background(), &cmd) |
|
|
|
|
assert.EqualError(t, err, models.ErrDuplicateApiKey.Error()) |
|
|
|
|
}) |
|
|
|
|
}) |
|
|
|
|