mirror of
https://github.com/gotenberg/gotenberg.git
synced 2026-08-15 03:42:15 +01:00
feat(api): add basic auth support
This commit is contained in:
35
pkg/gotenberg/env.go
Normal file
35
pkg/gotenberg/env.go
Normal file
@@ -0,0 +1,35 @@
|
||||
package gotenberg
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// StringEnv retrieves the value of the environment variable named by the key.
|
||||
// If the variable is present in the environment and not empty, the value is
|
||||
// returned.
|
||||
func StringEnv(key string) (string, error) {
|
||||
val, ok := os.LookupEnv(key)
|
||||
if !ok {
|
||||
return "", fmt.Errorf("environment variable '%s' does not exist", key)
|
||||
}
|
||||
if val == "" {
|
||||
return "", fmt.Errorf("environment variable '%s' is empty", key)
|
||||
}
|
||||
return val, nil
|
||||
}
|
||||
|
||||
// IntEnv relies on [StringEnv] and converts the values if it exists and is not
|
||||
// empty.
|
||||
func IntEnv(key string) (int, error) {
|
||||
val, err := StringEnv(key)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
intVal, err := strconv.Atoi(val)
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("get int value of environment variable '%s': %w", key, err)
|
||||
}
|
||||
return intVal, nil
|
||||
}
|
||||
134
pkg/gotenberg/env_test.go
Normal file
134
pkg/gotenberg/env_test.go
Normal file
@@ -0,0 +1,134 @@
|
||||
package gotenberg
|
||||
|
||||
import (
|
||||
"os"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestStringEnv(t *testing.T) {
|
||||
for _, tc := range []struct {
|
||||
scenario string
|
||||
key string
|
||||
setEnv func()
|
||||
expectVal string
|
||||
expectError bool
|
||||
}{
|
||||
{
|
||||
scenario: "non-existing environment variable",
|
||||
key: "NON_EXISTING",
|
||||
expectVal: "",
|
||||
expectError: true,
|
||||
},
|
||||
{
|
||||
scenario: "empty environment variable",
|
||||
key: "EMPTY_STRING",
|
||||
setEnv: func() {
|
||||
err := os.Setenv("EMPTY_STRING", "")
|
||||
if err != nil {
|
||||
t.Fatalf("expected no error but got: %v", err)
|
||||
}
|
||||
},
|
||||
expectVal: "",
|
||||
expectError: true,
|
||||
},
|
||||
{
|
||||
scenario: "success",
|
||||
key: "EXISTING_STRING_VALUE",
|
||||
setEnv: func() {
|
||||
err := os.Setenv("EXISTING_STRING_VALUE", "foo")
|
||||
if err != nil {
|
||||
t.Fatalf("expected no error but got: %v", err)
|
||||
}
|
||||
},
|
||||
expectVal: "foo",
|
||||
expectError: false,
|
||||
},
|
||||
} {
|
||||
t.Run(tc.scenario, func(t *testing.T) {
|
||||
if tc.setEnv != nil {
|
||||
tc.setEnv()
|
||||
}
|
||||
|
||||
val, err := StringEnv(tc.key)
|
||||
|
||||
if !tc.expectError && err != nil {
|
||||
t.Fatalf("expected no error but got: %v", err)
|
||||
}
|
||||
|
||||
if tc.expectError && err == nil {
|
||||
t.Fatal("expected error but got none")
|
||||
}
|
||||
|
||||
if tc.expectVal != val {
|
||||
t.Errorf("expected value '%s' but got '%s'", tc.expectVal, val)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestIntEnv(t *testing.T) {
|
||||
for _, tc := range []struct {
|
||||
scenario string
|
||||
key string
|
||||
setEnv func()
|
||||
expectVal int
|
||||
expectError bool
|
||||
}{
|
||||
{
|
||||
scenario: "empty environment variable",
|
||||
key: "EMPTY_INT",
|
||||
setEnv: func() {
|
||||
err := os.Setenv("EMPTY_INT", "")
|
||||
if err != nil {
|
||||
t.Fatalf("expected no error but got: %v", err)
|
||||
}
|
||||
},
|
||||
expectVal: 0,
|
||||
expectError: true,
|
||||
},
|
||||
{
|
||||
scenario: "non-integer value",
|
||||
key: "NON_INTEGER",
|
||||
setEnv: func() {
|
||||
err := os.Setenv("NON_INTEGER", "foo")
|
||||
if err != nil {
|
||||
t.Fatalf("expected no error but got: %v", err)
|
||||
}
|
||||
},
|
||||
expectVal: 0,
|
||||
expectError: true,
|
||||
},
|
||||
{
|
||||
scenario: "success",
|
||||
key: "EXISTING_INT_VALUE",
|
||||
setEnv: func() {
|
||||
err := os.Setenv("EXISTING_INT_VALUE", "123")
|
||||
if err != nil {
|
||||
t.Fatalf("expected no error but got: %v", err)
|
||||
}
|
||||
},
|
||||
expectVal: 123,
|
||||
expectError: false,
|
||||
},
|
||||
} {
|
||||
t.Run(tc.scenario, func(t *testing.T) {
|
||||
if tc.setEnv != nil {
|
||||
tc.setEnv()
|
||||
}
|
||||
|
||||
val, err := IntEnv(tc.key)
|
||||
|
||||
if !tc.expectError && err != nil {
|
||||
t.Fatalf("expected no error but got: %v", err)
|
||||
}
|
||||
|
||||
if tc.expectError && err == nil {
|
||||
t.Fatal("expected error but got none")
|
||||
}
|
||||
|
||||
if tc.expectVal != val {
|
||||
t.Errorf("expected value %d but got %d", tc.expectVal, val)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user