Skip to content
This repository has been archived by the owner on Jul 12, 2023. It is now read-only.

Commit

Permalink
Reduce arbitrary sleeps in tests (#1859)
Browse files Browse the repository at this point in the history
For rotation specifically, this cuts test time in 1/4.
  • Loading branch information
sethvargo authored Feb 24, 2021
1 parent 50ac811 commit 9369e26
Show file tree
Hide file tree
Showing 7 changed files with 61 additions and 197 deletions.
File renamed without changes.
13 changes: 13 additions & 0 deletions pkg/controller/appsync/appsync_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ package appsync
import (
"testing"

"github.com/google/exposure-notifications-verification-server/pkg/config"
"github.com/google/exposure-notifications-verification-server/pkg/database"
)

Expand All @@ -27,3 +28,15 @@ func TestMain(m *testing.M) {
defer testDatabaseInstance.MustClose()
m.Run()
}

func TestNew(t *testing.T) {
t.Parallel()

cfg := &config.AppSyncConfig{
AppSyncURL: "totally invalid" + string(rune(0x7f)),
}

if _, err := New(cfg, nil, nil); err == nil {
t.Errorf("expected error")
}
}
33 changes: 0 additions & 33 deletions pkg/controller/appsync/controller_test.go

This file was deleted.

46 changes: 3 additions & 43 deletions pkg/controller/appsync/handle_sync_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,34 +60,7 @@ func TestHandleSync(t *testing.T) {
t.Fatal(err)
}

r, err := http.NewRequest(http.MethodGet, "/", nil)
if err != nil {
t.Fatal(err)
}
r = r.Clone(ctx)

w := httptest.NewRecorder()

c.HandleSync().ServeHTTP(w, r)
})

t.Run("too_early", func(t *testing.T) {
t.Parallel()

db, _ := testDatabaseInstance.NewDatabase(t, nil)

c, err := New(cfg, db, h)
if err != nil {
t.Fatal(err)
}

r, err := http.NewRequest(http.MethodGet, "/", nil)
if err != nil {
t.Fatal(err)
}
r = r.Clone(ctx)

w := httptest.NewRecorder()
w, r := envstest.BuildJSONRequest(ctx, t, http.MethodGet, "/", nil)

c.HandleSync().ServeHTTP(w, r)
if got, want := w.Code, http.StatusOK; got != want {
Expand Down Expand Up @@ -117,13 +90,7 @@ func TestHandleSync(t *testing.T) {
t.Fatal(err)
}

r, err := http.NewRequest(http.MethodGet, "/", nil)
if err != nil {
t.Fatal(err)
}
r = r.Clone(ctx)

w := httptest.NewRecorder()
w, r := envstest.BuildJSONRequest(ctx, t, http.MethodGet, "/", nil)

c.HandleSync().ServeHTTP(w, r)
if got, want := w.Code, http.StatusInternalServerError; got != want {
Expand All @@ -142,16 +109,9 @@ func TestHandleSync(t *testing.T) {
t.Fatal(err)
}

r, err := http.NewRequest(http.MethodGet, "/", nil)
if err != nil {
t.Fatal(err)
}
r = r.Clone(ctx)

w := httptest.NewRecorder()
w, r := envstest.BuildJSONRequest(ctx, t, http.MethodGet, "/", nil)

c.HandleSync().ServeHTTP(w, r)

if got, want := w.Code, http.StatusInternalServerError; got != want {
t.Errorf("Expected %d to be %d", got, want)
}
Expand Down
67 changes: 16 additions & 51 deletions pkg/controller/cleanup/handle_cleanup_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ package cleanup

import (
"net/http"
"net/http/httptest"
"testing"
"time"

"github.com/google/exposure-notifications-server/pkg/keys"
"github.com/google/exposure-notifications-verification-server/internal/envstest"
"github.com/google/exposure-notifications-verification-server/internal/project"
"github.com/google/exposure-notifications-verification-server/pkg/config"
"github.com/google/exposure-notifications-verification-server/pkg/database"
Expand Down Expand Up @@ -75,14 +75,7 @@ func TestHandleCleanup(t *testing.T) {
t.Fatal(err)
}

r, err := http.NewRequest(http.MethodGet, "/", nil)
if err != nil {
t.Fatal(err)
}
r = r.Clone(ctx)

w := httptest.NewRecorder()

w, r := envstest.BuildJSONRequest(ctx, t, http.MethodGet, "/", nil)
c.HandleCleanup().ServeHTTP(w, r)

apps, _, err := realm.ListAuthorizedApps(db, nil)
Expand All @@ -109,23 +102,20 @@ func TestHandleCleanup(t *testing.T) {
Code: "12345678",
LongCode: "12345678901122334455",
TestType: "confirmed",
ExpiresAt: time.Now().UTC().Add(2 * time.Second),
LongExpiresAt: time.Now().UTC().Add(2 * time.Second),
ExpiresAt: time.Now().UTC().Add(24 * time.Hour),
LongExpiresAt: time.Now().UTC().Add(24 * time.Hour),
}
if err := db.SaveVerificationCode(code, realm); err != nil {
t.Fatal(err)
}

time.Sleep(5 * time.Second)

r, err := http.NewRequest(http.MethodGet, "/", nil)
if err != nil {
if err := db.RawDB().Model(code).UpdateColumns(&database.VerificationCode{
ExpiresAt: time.Now().UTC().Add(-24 * time.Hour),
LongExpiresAt: time.Now().UTC().Add(-24 * time.Hour),
}).Error; err != nil {
t.Fatal(err)
}
r = r.Clone(ctx)

w := httptest.NewRecorder()

w, r := envstest.BuildJSONRequest(ctx, t, http.MethodGet, "/", nil)
c.HandleCleanup().ServeHTTP(w, r)

var codes []*database.VerificationCode
Expand Down Expand Up @@ -155,17 +145,13 @@ func TestHandleCleanup(t *testing.T) {
if err := db.RawDB().Save(token).Error; err != nil {
t.Fatal(err)
}

time.Sleep(5 * time.Second)

r, err := http.NewRequest(http.MethodGet, "/", nil)
if err != nil {
if err := db.RawDB().Model(token).UpdateColumns(&database.Token{
ExpiresAt: time.Now().UTC().Add(-24 * time.Hour),
}).Error; err != nil {
t.Fatal(err)
}
r = r.Clone(ctx)

w := httptest.NewRecorder()

w, r := envstest.BuildJSONRequest(ctx, t, http.MethodGet, "/", nil)
c.HandleCleanup().ServeHTTP(w, r)

var tokens []*database.Token
Expand Down Expand Up @@ -206,14 +192,7 @@ func TestHandleCleanup(t *testing.T) {
t.Fatal(err)
}

r, err := http.NewRequest(http.MethodGet, "/", nil)
if err != nil {
t.Fatal(err)
}
r = r.Clone(ctx)

w := httptest.NewRecorder()

w, r := envstest.BuildJSONRequest(ctx, t, http.MethodGet, "/", nil)
c.HandleCleanup().ServeHTTP(w, r)

apps, _, err := realm.ListMobileApps(db, nil)
Expand All @@ -237,14 +216,7 @@ func TestHandleCleanup(t *testing.T) {
t.Fatal(err)
}

r, err := http.NewRequest(http.MethodGet, "/", nil)
if err != nil {
t.Fatal(err)
}
r = r.Clone(ctx)

w := httptest.NewRecorder()

w, r := envstest.BuildJSONRequest(ctx, t, http.MethodGet, "/", nil)
c.HandleCleanup().ServeHTTP(w, r)

audits, _, err := db.ListAudits(nil)
Expand Down Expand Up @@ -275,14 +247,7 @@ func TestHandleCleanup(t *testing.T) {
t.Fatal(err)
}

r, err := http.NewRequest(http.MethodGet, "/", nil)
if err != nil {
t.Fatal(err)
}
r = r.Clone(ctx)

w := httptest.NewRecorder()

w, r := envstest.BuildJSONRequest(ctx, t, http.MethodGet, "/", nil)
c.HandleCleanup().ServeHTTP(w, r)

users, _, err := db.ListUsers(nil)
Expand Down
47 changes: 5 additions & 42 deletions pkg/controller/rotation/handle_token_rotate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ package rotation

import (
"net/http"
"net/http/httptest"
"testing"
"time"

Expand Down Expand Up @@ -62,21 +61,13 @@ func TestHandleRotate(t *testing.T) {

// Rotating should create a new key since none exists.
{
r, err := http.NewRequest(http.MethodGet, "/", nil)
if err != nil {
t.Fatal(err)
}
r = r.Clone(ctx)

w := httptest.NewRecorder()

w, r := envstest.BuildJSONRequest(ctx, t, http.MethodGet, "/", nil)
c.HandleRotate().ServeHTTP(w, r)

keys, err := db.ListTokenSigningKeys()
if err != nil {
t.Fatal(err)
}

if got, want := len(keys), 1; got != want {
t.Errorf("got %d keys, expected %d", got, want)
}
Expand All @@ -94,21 +85,13 @@ func TestHandleRotate(t *testing.T) {
t.Fatal(err)
}

r, err := http.NewRequest(http.MethodGet, "/", nil)
if err != nil {
t.Fatal(err)
}
r = r.Clone(ctx)

w := httptest.NewRecorder()

w, r := envstest.BuildJSONRequest(ctx, t, http.MethodGet, "/", nil)
c.HandleRotate().ServeHTTP(w, r)

keys, err := db.ListTokenSigningKeys()
if err != nil {
t.Fatal(err)
}

if got, want := len(keys), 2; got != want {
t.Errorf("got %d keys, expected %d", got, want)
}
Expand All @@ -117,21 +100,13 @@ func TestHandleRotate(t *testing.T) {
// Rotating again should not create a new key (not enough time has elapsed
// since TokenSigningKeyMaxAge).
{
r, err := http.NewRequest(http.MethodGet, "/", nil)
if err != nil {
t.Fatal(err)
}
r = r.Clone(ctx)

w := httptest.NewRecorder()

w, r := envstest.BuildJSONRequest(ctx, t, http.MethodGet, "/", nil)
c.HandleRotate().ServeHTTP(w, r)

keys, err := db.ListTokenSigningKeys()
if err != nil {
t.Fatal(err)
}

if got, want := len(keys), 2; got != want {
t.Errorf("got %d keys, expected %d", got, want)
}
Expand All @@ -154,13 +129,7 @@ func TestHandleRotate(t *testing.T) {

c := New(cfg, db, keyManagerSigner, h)

r, err := http.NewRequest(http.MethodGet, "/", nil)
if err != nil {
t.Fatal(err)
}
r = r.Clone(ctx)

w := httptest.NewRecorder()
w, r := envstest.BuildJSONRequest(ctx, t, http.MethodGet, "/", nil)

c.HandleRotate().ServeHTTP(w, r)
if got, want := w.Code, http.StatusOK; got != want {
Expand All @@ -181,14 +150,8 @@ func TestHandleRotate(t *testing.T) {
db.SetRawDB(envstest.NewFailingDatabase())

c := New(cfg, db, keyManagerSigner, h)
r, err := http.NewRequest(http.MethodGet, "/", nil)
if err != nil {
t.Fatal(err)
}
r = r.Clone(ctx)

w := httptest.NewRecorder()

w, r := envstest.BuildJSONRequest(ctx, t, http.MethodGet, "/", nil)
c.HandleRotate().ServeHTTP(w, r)

if got, want := w.Code, http.StatusInternalServerError; got != want {
Expand Down
Loading

0 comments on commit 9369e26

Please sign in to comment.