Browse Source

Fixed unit tests and cleaned up createEntry

dependabot/npm_and_yarn/web/prismjs-1.21.0
Max Schmitt 8 years ago
parent
commit
33e9b01cce
  1. 7
      handlers/public.go
  2. 6
      store/store.go
  3. 6
      store/store_test.go
  4. 11
      store/util.go

7
handlers/public.go

@ -65,7 +65,12 @@ func (h *Handler) handleCreate(c *gin.Context) {
return return
} }
user := c.MustGet("user").(*jwtClaims) user := c.MustGet("user").(*jwtClaims)
id, err := h.store.CreateEntry(data.URL, c.ClientIP(), user.OAuthProvider, user.OAuthID) id, err := h.store.CreateEntry(store.Entry{
URL: data.URL,
RemoteAddr: c.ClientIP(),
OAuthProvider: user.OAuthProvider,
OAuthID: user.OAuthID,
})
if err != nil { if err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return return

6
store/store.go

@ -114,13 +114,13 @@ func (s *Store) GetEntryByIDRaw(id string) ([]byte, error) {
} }
// CreateEntry creates a new record and returns his short id // CreateEntry creates a new record and returns his short id
func (s *Store) CreateEntry(URL, remoteAddr, oAuthProvider, oAuthID string) (string, error) { func (s *Store) CreateEntry(entry Entry) (string, error) {
if !govalidator.IsURL(URL) { if !govalidator.IsURL(entry.URL) {
return "", ErrNoValidURL return "", ErrNoValidURL
} }
// try it 10 times to make a short URL // try it 10 times to make a short URL
for i := 1; i <= 10; i++ { for i := 1; i <= 10; i++ {
id, err := s.createEntry(URL, remoteAddr, oAuthProvider, oAuthID) id, err := s.createEntry(entry)
if err != nil { if err != nil {
s.log.Debugf("Could not create entry: %v", err) s.log.Debugf("Could not create entry: %v", err)
continue continue

6
store/store_test.go

@ -69,12 +69,12 @@ func TestCreateEntry(t *testing.T) {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
defer cleanup(store) defer cleanup(store)
_, err = store.CreateEntry("", "") _, err = store.CreateEntry(Entry{})
if err != ErrNoValidURL { if err != ErrNoValidURL {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
for i := 1; i <= 100; i++ { for i := 1; i <= 100; i++ {
_, err := store.CreateEntry("https://golang.org/", "") _, err := store.CreateEntry(Entry{URL: "https://golang.org/"})
if err != nil && err != ErrGeneratingTriesFailed { if err != nil && err != ErrGeneratingTriesFailed {
t.Fatalf("unexpected error during creating entry: %v", err) t.Fatalf("unexpected error during creating entry: %v", err)
} }
@ -103,7 +103,7 @@ func TestIncreaseVisitCounter(t *testing.T) {
t.Fatalf("could not create store: %v", err) t.Fatalf("could not create store: %v", err)
} }
defer cleanup(store) defer cleanup(store)
id, err := store.CreateEntry("https://golang.org/", "") id, err := store.CreateEntry(Entry{URL: "https://golang.org/"})
if err != nil { if err != nil {
t.Fatalf("could not create entry: %v", err) t.Fatalf("could not create entry: %v", err)
} }

11
store/util.go

@ -41,20 +41,15 @@ func (s *Store) createEntryRaw(key, value []byte) error {
} }
// createEntry creates a new entry // createEntry creates a new entry
func (s *Store) createEntry(URL, remoteAddr, oAuthProvider, oAuthID string) (string, error) { func (s *Store) createEntry(entry Entry) (string, error) {
id, err := generateRandomString(s.idLength) id, err := generateRandomString(s.idLength)
if err != nil { if err != nil {
return "", errors.Wrap(err, "could not generate random string") return "", errors.Wrap(err, "could not generate random string")
} }
exists := s.checkExistence(id) exists := s.checkExistence(id)
if !exists { if !exists {
raw, err := json.Marshal(Entry{ entry.CreatedOn = time.Now()
URL: URL, raw, err := json.Marshal(entry)
RemoteAddr: remoteAddr,
CreatedOn: time.Now(),
OAuthProvider: oAuthProvider,
OAuthID: oAuthID,
})
if err != nil { if err != nil {
return "", err return "", err
} }

Loading…
Cancel
Save