第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在 Go 中模擬 Hashicorp 金庫(kù)

在 Go 中模擬 Hashicorp 金庫(kù)

Go
蝴蝶刀刀 2023-07-17 16:58:37
有沒有一種簡(jiǎn)單的方法可以在 go 測(cè)試中模擬 Hashicorp 金庫(kù)?我在 Go 中創(chuàng)建了一個(gè)訪問 Vault 的服務(wù),并希望為其創(chuàng)建適當(dāng)?shù)臏y(cè)試。我沒有找到我喜歡的簡(jiǎn)單解決方案(比如 python 中的 moto )。我還嘗試在 docker 中以開發(fā)模式使用保管庫(kù)(采用系統(tǒng)測(cè)試路線),但我在通過 API 寫入它時(shí)遇到問題。想法?
查看完整描述

3 回答

?
幕布斯7119047

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊

更新:這個(gè)答案已經(jīng)過時(shí)了。

“不幸的是,[這個(gè)]答案已經(jīng)有好幾年了。以前它是“盡力而為”的支持,但團(tuán)隊(duì)去年決定不再支持在 Go 中導(dǎo)入 Vault、API 或 SDK 作為模塊。我?guī)?lái)不便敬請(qǐng)諒解?!?/p>

--

有沒有一種簡(jiǎn)單的方法可以在 Go 測(cè)試中模擬 HashiCorp Vault?

不。使用真實(shí)的東西!HashiCorp 提供了用于動(dòng)態(tài)啟動(dòng)服務(wù)器的實(shí)用函數(shù)1。這使得您的測(cè)試更加有用,并且通常可以作為開發(fā)人員如何設(shè)置本地開發(fā)服務(wù)器的可行指南。

這是一個(gè)非常基本的例子。測(cè)試框架非常靈活(這也使得它相當(dāng)復(fù)雜)。請(qǐng)參閱軟件包文檔了解更多選項(xiàng),包括在 HA 模式下運(yùn)行多個(gè)服務(wù)器。我發(fā)現(xiàn) Vault 自己的測(cè)試用例在設(shè)置更復(fù)雜的場(chǎng)景時(shí)非常有用。

package main


import (

? ? "net"

? ? "testing"


? ? "github.com/hashicorp/vault/api"

? ? "github.com/hashicorp/vault/http"

? ? "github.com/hashicorp/vault/vault"

)


func TestVaultStuff(t *testing.T) {

? ? ln, client := createTestVault(t)

? ? defer ln.Close()


? ? // Pass the client to the code under test.

? ? myFunction(client)

}


func createTestVault(t *testing.T) (net.Listener, *api.Client) {

? ? t.Helper()


? ? // Create an in-memory, unsealed core (the "backend", if you will).

? ? core, keyShares, rootToken := vault.TestCoreUnsealed(t)

? ? _ = keyShares


? ? // Start an HTTP server for the core.

? ? ln, addr := http.TestServer(t, core)


? ? // Create a client that talks to the server, initially authenticating with

? ? // the root token.

? ? conf := api.DefaultConfig()

? ? conf.Address = addr


? ? client, err := api.NewClient(conf)

? ? if err != nil {

? ? ? ? t.Fatal(err)

? ? }

? ? client.SetToken(rootToken)


? ? // Setup required secrets, policies, etc.

? ? _, err = client.Logical().Write("secret/foo", map[string]interface{}{

? ? ? ? "secret": "bar",

? ? })

? ? if err != nil {

? ? ? ? t.Fatal(err)

? ? }


? ? return ln, client

}

1他們?yōu)樗许?xiàng)目提供測(cè)試服務(wù)器,而不僅僅是 Vault。



查看完整回答
反對(duì) 回復(fù) 2023-07-17
?
梵蒂岡之花

TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個(gè)贊

需要注意的一件非常重要的事情:

TestCoreUnsealed不使用常規(guī)的 KV 后端,而是使用 aPassthroughBackend來(lái)本質(zhì)上模擬 kv 行為。

查看完整回答
反對(duì) 回復(fù) 2023-07-17
?
婷婷同學(xué)_

TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個(gè)贊

因?yàn)?Go 是一種靜態(tài)類型語(yǔ)言,所以我們必須在編譯時(shí)知道事物的類型。因此,要進(jìn)行這種類型的獨(dú)立測(cè)試,我們需要在代碼中創(chuàng)建在測(cè)試方面具有邏輯意義的邊界。

在 Go 中創(chuàng)建接口來(lái)定義這些邊界,因此從這個(gè)意義上說,您希望在您和此第三方庫(kù)之間創(chuàng)建一個(gè)接口,以便您可以用您可以控制的函數(shù)/方法/類型替換庫(kù)函數(shù)/方法/類型的輸入和輸出并定義了條件,以便您可以測(cè)試代碼對(duì)第三方的輸出或條件的行為方式。

查看完整回答
反對(duì) 回復(fù) 2023-07-17
  • 3 回答
  • 0 關(guān)注
  • 197 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)