Как передать basi c auth и значение конфигурации viper в golang тестовых случаях - PullRequest
0 голосов
/ 13 января 2020

Я создаю тестовый пример с использованием echo и testify / assert, я не могу получить маркер строки гадюки, который передается в основной пакет, я вызываю файл службы основного пакета.

func TestGetData(t *testing.T) {
    // Setup
    e := echo.New()
    req := httptest.NewRequest(http.MethodGet, "/api/v1/testdata", nil)
    req.Header.Set("Content-Type", "application/json")
    log.Info(viper.GetString("token"))
    req.Header.Add("token", viper.GetString("token"))
    rec := httptest.NewRecorder()
    c := e.NewContext(req, rec)
    res := rec.Result()
    defer res.Body.Close()

    // Assertions
    if assert.NoError(t, controllers.GetData(c)) {
        assert.Equal(t, http.StatusOK, rec.Code)
        //assert.Equal(t, sections, rec.Body.String())
    }
}

, когда я run "go run main. go" свой токен печати, но когда я тестирую с использованием "go test", его отображение отсутствует.

Второй вопрос - как передать basi c auth username и перейдите в main_test. go file

1 Ответ

0 голосов
/ 15 января 2020

Чтобы установить базовый c auth, попробуйте это:

req.Header.Set("Authorization", "Basic "+basicAuth(username, password))

func basicAuth(username, password string) string {
    auth := username + ":" + password
    return base64.StdEncoding.EncodeToString([]byte(auth))
}

Также замените ваш httptest .NewRequest на http .NewRequest, как указано ниже:

    req := http.NewRequest(http.MethodGet, "/api/v1/testdata", nil)

Убедитесь, что вы вводите значение в get api примерно так: viper.SetDefault("token", "12334")

Чтобы убедиться, что ваши ключи в viper или не запущены: require.Equal(t, viper.AllSettings(), "teststring")

Если проблема не устранена, поделитесь URL-адресом github с примером кода приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...