本文整理汇总了Golang中github.com/franela/goreq.Request.AddHeader方法的典型用法代码示例。如果您正苦于以下问题:Golang Request.AddHeader方法的具体用法?Golang Request.AddHeader怎么用?Golang Request.AddHeader使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/franela/goreq.Request
的用法示例。
在下文中一共展示了Request.AddHeader方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: LogRequestFromValidationResult
//LogRequestFromValidationResult unmarshalls the ValidationResult and logs to keen.io
//
//http://api.keen.io/3.0/projects/<project_id>/events/<event_collection>
func (keen *KeenMetrics) LogRequestFromValidationResult(collectionName string, validationResult string) {
var url = keen.getEndpoint() + collectionName
var result goiban.ValidationResult
json.Unmarshal([]byte(validationResult), &result)
req := goreq.Request{
Method: "POST",
Uri: url,
ContentType: "application/json",
Body: ValidationResultToEvent(&result),
}
req.AddHeader("Authorization", keen.WriteAPIKey)
res, err := req.Do()
if err != nil {
log.Printf("Error while posting stats: %v", err)
return
}
// Close the response body
if res.Body != nil {
defer res.Body.Close()
}
if collectionName == "Test" {
log.Printf(url)
text, _ := res.Body.ToString()
log.Printf("Response (%v): %v", res.StatusCode, text)
}
}
示例2: Worker
func (m webhooksAlerter) Worker(q chan webhook) {
for {
select {
case webhook := <-q:
log.Info("Sending webhook alert to %s", webhook.Url)
req := goreq.Request{
Uri: webhook.Url,
Accept: "application/json",
ContentType: "application/json",
UserAgent: "Lovebeat",
Timeout: 10 * time.Second,
Body: webhook.Data,
}
req.AddHeader("X-Lovebeat", "1")
_, err := req.Do()
if err != nil {
log.Error("Failed to post webhook: %s", err)
}
}
}
}
示例3: WriteLogRequest
//WriteLogRequest logs to keen.io
//
// http://api.keen.io/3.0/projects/<project_id>/events/<event_collection>
func (keen *KeenMetrics) WriteLogRequest(collectionName string, iban *goiban.Iban) {
var url = keen.getEndpoint() + collectionName
req := goreq.Request{
Method: "POST",
Uri: url,
ContentType: "application/json",
Body: IbanToEvent(iban),
}
req.AddHeader("Authorization", keen.WriteAPIKey)
res, err := req.Do()
if err != nil {
log.Printf("Error while posting stats: %v", err)
return
}
// Close the response body
if res.Body != nil {
defer res.Body.Close()
}
if collectionName == "Test" {
log.Printf(url)
text, _ := res.Body.ToString()
log.Printf("Response (%v): %v", res.StatusCode, text)
}
}
示例4: post
func (c Client) post(url string, requestData interface{}) []error {
var errs []error
req := goreq.Request{
Method: "POST",
Body: requestData,
Uri: url,
ContentType: "application/x-www-form-urlencoded; charset=UTF-8",
CookieJar: c.cookie,
}
req.AddHeader("X-Requested-With", "XMLHttpRequest")
resp, err := req.Do()
if err != nil {
errs = append(errs, errors.New(err.Error()))
log.Fatalln(err.Error())
}
defer func() {
err := resp.Body.Close()
if err != nil {
log.Fatal(err)
}
}()
if resp.StatusCode != http.StatusOK {
errs = append(errs, errors.New("Failed login: status code is "+resp.Status))
}
return errs
}
示例5: Worker
func (m slackhookAlerter) Worker(q chan slackhook, cfg *config.ConfigSlackhook) {
for {
select {
case slackhook := <-q:
var err error
var context = make(map[string]interface{})
context["View"] = slackhook.Data.View
context["Previous"] = slackhook.Data.Previous
context["Current"] = slackhook.Data.Current
var doc bytes.Buffer
err = m.template.Execute(&doc, context)
if err != nil {
log.Error("Failed to render template", err)
return
}
req := goreq.Request{
Method: "POST",
Uri: cfg.Uri,
Accept: "*/*",
ContentType: "application/x-www-form-urlencoded",
UserAgent: "Lovebeat",
Timeout: 10 * time.Second,
Body: "payload=" + url.QueryEscape(doc.String()),
}
req.AddHeader("X-Lovebeat", "1")
res, err := req.Do()
if err != nil {
log.Error("Failed to post slackhook:%v:", err)
}
robots, err := ioutil.ReadAll(res.Body)
res.Body.Close()
//it returned a 200 so ignore any error here
if err != nil {
log.Error("OK:unreadable response:%v:", err)
} else if res.StatusCode != http.StatusOK {
log.Error("NOK:non-200:%d:", res.StatusCode)
} else {
log.Info("OK:response:%s:", string(robots))
}
}
}
}
示例6: apiRequestBase
func apiRequestBase(authToken string) *goreq.Request {
req := goreq.Request{
Uri: apiURL(),
ShowDebug: debugging,
Insecure: !shouldVerifyHost(apiURL()),
}
if authToken != "" {
req.AddHeader("Authorization", "Bearer "+authToken)
}
if os.Getenv("HEROKU_HEADERS") != "" {
var h map[string]string
json.Unmarshal([]byte(os.Getenv("HEROKU_HEADERS")), &h)
for k, v := range h {
req.AddHeader(k, v)
}
}
return &req
}
示例7: apiRequest
func apiRequest(authToken string) *goreq.Request {
req := goreq.Request{
Uri: "https://" + apiHost(),
Accept: "application/vnd.heroku+json; version=3",
ShowDebug: debugging,
Insecure: !shouldVerifyHost(apiHost()),
}
if authToken != "" {
req.AddHeader("Authorization", "Bearer "+authToken)
}
if os.Getenv("HEROKU_HEADERS") != "" {
var h map[string]string
json.Unmarshal([]byte(os.Getenv("HEROKU_HEADERS")), &h)
for k, v := range h {
req.AddHeader(k, v)
}
}
return &req
}
示例8: MakeRequest
func (c *HTTPClient) MakeRequest(args Args) (http.Header, int, []byte, error) {
header := make(map[string][]string)
url, err := url.Parse(c.Host)
if err != nil {
return header, 0, []byte{}, errors.NewInvalidHostError(err)
}
url.Path = args.Path
req := goreq.Request{
Uri: url.String(),
Method: args.Method,
Body: args.Body,
Timeout: args.Timeout,
ShowDebug: args.ShowDebug,
}
for name, value := range args.Headers {
for _, v := range value {
req.AddHeader(name, v)
}
}
resp, err := req.Do()
if err != nil {
return header, 0, []byte{}, errors.NewRequestError(err)
}
respBody, err := ioutil.ReadAll(resp.Body)
if err != nil {
return resp.Header, resp.StatusCode, []byte{}, errors.NewResponseError(err)
}
if resp.StatusCode == args.AcceptableCode {
return resp.Header, resp.StatusCode, respBody, nil
}
return resp.Header, resp.StatusCode, respBody, errors.NewResponseError(errors.ErrBadResponse)
}
示例9: SendRequest
// SendRequest sends the requested package (as a POST) to the defined
func (n NotificationsManager) SendRequest(wait bool, count int, notification interface{}) {
if wait {
if count < 3 {
time.Sleep(10 * time.Second)
} else {
log.Error("Too many notification attempts, aborting.")
return
}
}
req := goreq.Request{
Method: "POST",
Uri: n.OAuthKeyChangeURL,
UserAgent: "Tyk-Gatewy-Notifications",
ContentType: "application/json",
Body: notification,
}
req.AddHeader("X-Tyk-Shared-Secret", n.SharedSecret)
resp, reqErr := req.Do()
if reqErr != nil {
log.Error("Request failed, trying again in 10s. Error was: ", reqErr)
count++
go n.SendRequest(true, count, notification)
return
}
if resp.StatusCode != 200 {
log.Error("Request returned non-200 status, trying again in 10s.")
count++
go n.SendRequest(true, count, notification)
return
}
}
示例10: Spawn
// Spawn sends the actual request.
func (r *Request) Spawn(parent *Response, wg *sync.WaitGroup) {
body := ""
if r.Data != nil {
body = r.Data.Format(parent)
}
greq := goreq.Request{Method: r.Method, Body: body, UserAgent: profile.UserAgent}
// Let's set the headers, if needed.
if r.Headers != nil {
for _, line := range strings.Split(r.Headers.Format(parent), "\n") {
line = strings.TrimSpace(line)
if line == "" {
continue
}
hdr := strings.Split(line, ":")
greq.AddHeader(strings.TrimSpace(hdr[0]), strings.TrimSpace(hdr[1]))
}
}
// Let's also add the cookies.
if r.FwdCookies && parent != nil {
if parent.cookies != nil {
for _, delicacy := range parent.cookies {
greq.AddCookie(delicacy)
}
}
}
// One go routine which pops responses from the channel and moves them to the list.
go func() {
for {
r.doneReqs = append(r.doneReqs, <-r.doneChan)
r.doneWg.Done()
perc := float64(len(r.doneReqs)) / float64(r.Repeat)
notify := false
if perc >= 0.75 && perc-0.75 < 1e-4 {
notify = true
} else if perc >= 0.5 && perc-0.5 < 1e-4 {
notify = true
} else if perc >= 0.25 && perc-0.25 < 1e-4 {
notify = true
} else if len(r.doneReqs)%100 == 0 {
notify = true
}
if notify {
log.Notice("Completed %d requests out of %d to %s.", len(r.doneReqs), r.Repeat, r.URL)
}
}
}()
// Let's spawn all the requests, with their respective concurrency.
wg.Add(r.Repeat)
r.doneWg.Add(r.Repeat)
for rno := 1; rno <= r.Repeat; rno++ {
go func(no int, greq goreq.Request) {
r.ongoingReqs <- struct{}{} // Adding sentinel value to limit concurrency.
greq.Uri = r.URL.Generate()
resp := Response{}
startTime := time.Now()
gresp, err := greq.Do()
resp.FromGoResp(gresp, err, startTime)
if err != nil {
log.Critical("could not send request to #%d %s: %s", no, r.URL, err)
}
<-r.ongoingReqs // We're done, let's make room for the next request.
resp.duration = time.Since(startTime)
// Let's add that request to the list of completed requests.
r.doneChan <- &resp
runtime.Gosched()
}(rno, greq)
}
// Let's now have a go routine which waits for all the requests to complete
// and spawns all the children.
go func() {
r.doneWg.Wait()
if r.Children != nil {
log.Debug("Spawning children for %s.", r.URL)
for _, child := range r.Children {
// Note that we always use the LAST response as the parent response.
child.Spawn(r.doneReqs[0], wg)
}
}
log.Debug("Computing result of %s.", r.URL)
r.ComputeResult(wg)
}()
}
示例11: TestContactsRoute
func TestContactsRoute(t *testing.T) {
Convey("Given a working account", t, func() {
account := &models.Account{
Resource: models.MakeResource("", "johnorange2"),
Status: "complete",
AltEmail: "[email protected]",
}
err := account.SetPassword("fruityloops")
So(err, ShouldBeNil)
err = env.Accounts.Insert(account)
So(err, ShouldBeNil)
result, err := goreq.Request{
Method: "POST",
Uri: server.URL + "/tokens",
ContentType: "application/json",
Body: `{
"type": "auth",
"username": "johnorange2",
"password": "fruityloops"
}`,
}.Do()
So(err, ShouldBeNil)
var response routes.TokensCreateResponse
err = result.Body.FromJsonTo(&response)
So(err, ShouldBeNil)
So(response.Success, ShouldBeTrue)
authToken := response.Token
Convey("Creating a contact with missing parts should fail", func() {
request := goreq.Request{
Method: "POST",
Uri: server.URL + "/contacts",
ContentType: "application/json",
Body: `{
"data": "` + uniuri.NewLen(64) + `",
"encoding": "json",
"version_major": 1,
"version_minor": 0,
"pgp_fingerprints": ["` + uniuri.New() + `"]
}`,
}
request.AddHeader("Authorization", "Bearer "+authToken.ID)
result, err := request.Do()
So(err, ShouldBeNil)
var response routes.ContactsCreateResponse
err = result.Body.FromJsonTo(&response)
So(err, ShouldBeNil)
So(response.Message, ShouldEqual, "Invalid request")
So(response.Success, ShouldBeFalse)
})
Convey("Creating a contact with invalid input data should fail", func() {
request := goreq.Request{
Method: "POST",
Uri: server.URL + "/contacts",
ContentType: "application/json",
Body: "[email protected]#[email protected]#[email protected]#",
}
request.AddHeader("Authorization", "Bearer "+authToken.ID)
result, err := request.Do()
So(err, ShouldBeNil)
var response routes.ContactsCreateResponse
err = result.Body.FromJsonTo(&response)
So(err, ShouldBeNil)
So(response.Message, ShouldEqual, "Invalid input format")
So(response.Success, ShouldBeFalse)
})
Convey("Getting a non-owned contact should fail", func() {
contact := &models.Contact{
Encrypted: models.Encrypted{
Encoding: "json",
Data: uniuri.NewLen(64),
Schema: "contact",
VersionMajor: 1,
VersionMinor: 0,
},
Resource: models.MakeResource("not", uniuri.New()),
}
err := env.Contacts.Insert(contact)
So(err, ShouldBeNil)
request := goreq.Request{
Method: "GET",
Uri: server.URL + "/contacts/" + contact.ID,
}
request.AddHeader("Authorization", "Bearer "+authToken.ID)
result, err := request.Do()
So(err, ShouldBeNil)
var response routes.ContactsGetResponse
//.........这里部分代码省略.........
示例12: TestKeysRoute
func TestKeysRoute(t *testing.T) {
Convey("Given a working account", t, func() {
account := &models.Account{
Resource: models.MakeResource("", "johnorange4"),
Status: "complete",
AltEmail: "[email protected]",
}
err := account.SetPassword("fruityloops")
So(err, ShouldBeNil)
err = env.Accounts.Insert(account)
So(err, ShouldBeNil)
result, err := goreq.Request{
Method: "POST",
Uri: server.URL + "/tokens",
ContentType: "application/json",
Body: `{
"type": "auth",
"username": "johnorange4",
"password": "fruityloops"
}`,
}.Do()
So(err, ShouldBeNil)
var response routes.TokensCreateResponse
err = result.Body.FromJsonTo(&response)
So(err, ShouldBeNil)
So(response.Success, ShouldBeTrue)
authToken := response.Token
Convey("Uploading a new key using an invalid JSON format should fail", func() {
request := goreq.Request{
Method: "POST",
Uri: server.URL + "/keys",
ContentType: "application/json",
Body: "[email protected]#[email protected][email protected]#",
}
request.AddHeader("Authorization", "Bearer "+authToken.ID)
result, err := request.Do()
So(err, ShouldBeNil)
var response routes.KeysCreateResponse
err = result.Body.FromJsonTo(&response)
So(err, ShouldBeNil)
So(response.Message, ShouldEqual, "Invalid input format")
So(response.Success, ShouldBeFalse)
})
Convey("Uploading an invalid key should fail", func() {
request := goreq.Request{
Method: "POST",
Uri: server.URL + "/keys",
ContentType: "application/json",
Body: `{
"key": "hbnjmvnbhvm nbhm jhbjmnghnbgjvgbhvf bgvmj gvhnft"
}`,
}
request.AddHeader("Authorization", "Bearer "+authToken.ID)
result, err := request.Do()
So(err, ShouldBeNil)
var response routes.KeysCreateResponse
err = result.Body.FromJsonTo(&response)
So(err, ShouldBeNil)
So(response.Message, ShouldEqual, "Invalid key format")
So(response.Success, ShouldBeFalse)
})
Convey("Uploading a key should succeed", func() {
request := goreq.Request{
Method: "POST",
Uri: server.URL + "/keys",
ContentType: "application/json",
Body: `{
"key": "` + strings.Join(strings.Split(`-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
mQINBFR6JFoBEADoLOVi5NEkIELYOIfOsztAuPqNPiJcDXCsKuprjNj7n2vxyNim
WbArRZ4TJereG0H2skCQlKMx26EiHHdK3je4i6erD+OT4NolAsxVsl4PpkEDZnzz
tIwVb7FymahIrqwP9YPrXc0tr07HgnE3+it828ZJlCMfGUgJJrn12p+UetlBoFwr
OEgaCl4fOfAuUQUzD156AGV/S0H4ge8H7yngSxNTMCqypX6SaX+O0uhKqa3CxiiG
HxIGo+lNdM72Xm3Ym9sNKtfsflkqZdlWfdpit1mgveZMx2CpuYI1aS+FRzQczCDn
fDnSVqErIWUv64daC5qU3pPWjqRuOr4WXEdxXSCgi2oXVP+2hVyqgPk6ch64TodR
lKxFN2wvrJVYJd/5XQrojBtf/F/ZnlYq0rze+snZ5R1lBMZMU2oBnWtRQMSO/+8b
iHY/7mjyT+LGLXhbGGmgtycYsuujR54Smtzx1tc7CsoVLJ3JB4629YT6RtDnd85R
f7oUnjtd714e6k6zLIkppsSDse8WOPGtnfHxswrNRGnEPFYxQhCN+PbYdwGmSfmA
kzoJFumJF8KIXflGBZ0s2JdAx4G1aMhPR3rUNiJdh+DXXseLn/PAbDj2O4uMVi5F
/ai6U/vhNOatrt5syOwWZnShuIBj5VwwyJOdGjC9uwYrfocDtx7IdbaokQARAQAB
tCFQaW90ciBaZHVuaWFrIDxwaW90ckB6ZHVuaWFrLm5ldD6JAjgEEwECACIFAlR6
JFoCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEN9g3PR+HyAlZigP/3H2
l9icK0tazF5B4jcPaKJ4cToe/XiTU1eNNzTGftlbtCgb2e2TMuzcY7LpiK3zHO5z
0NlVKWxAoD7JHEaG5vwL74gB1324VbW08dWcz/a/jMyTAUhGIZ1WBIJGa9dVkN98
GZp6i8q2DfsvflQI5Q9s3+Y6nbl2FEDFc3U+UXyN3M7x94NEc+3BUPvds/CwD/L0
rjatqusCf1lo2GNZvVcoluerKjSR0/LryTbQwSlW0rDIVAoc5AB1ezpJKfW6O22i
4h8MpNGNJ3XVrMIX4/Tu4ESE75WQSVqThd1Zy3y9bVvhL8UxKV3qviuBRDtlk/7N
QznUBTJ0RFegebTDp6+jVaVt+RBJg8rnwXOT0iSEBionCjjuIWX7hzM3mRg8FnnJ
//.........这里部分代码省略.........
示例13: TestLabelsRoute
func TestLabelsRoute(t *testing.T) {
Convey("Given a working account", t, func() {
account := &models.Account{
Resource: models.MakeResource("", "johnorange2"),
Status: "complete",
AltEmail: "[email protected]",
}
err := account.SetPassword("fruityloops")
So(err, ShouldBeNil)
err = env.Accounts.Insert(account)
So(err, ShouldBeNil)
result, err := goreq.Request{
Method: "POST",
Uri: server.URL + "/tokens",
ContentType: "application/json",
Body: `{
"type": "auth",
"username": "johnorange2",
"password": "fruityloops"
}`,
}.Do()
So(err, ShouldBeNil)
var response routes.TokensCreateResponse
err = result.Body.FromJsonTo(&response)
So(err, ShouldBeNil)
So(response.Success, ShouldBeTrue)
authToken := response.Token
Convey("Creating a new label using invalid input should fail", func() {
request := goreq.Request{
Method: "POST",
Uri: server.URL + "/labels",
ContentType: "application/json",
Body: "[email protected]#[email protected][email protected]#",
}
request.AddHeader("Authorization", "Bearer "+authToken.ID)
result, err := request.Do()
So(err, ShouldBeNil)
var response routes.LabelsCreateResponse
err = result.Body.FromJsonTo(&response)
So(err, ShouldBeNil)
So(response.Message, ShouldEqual, "Invalid input format")
So(response.Success, ShouldBeFalse)
})
Convey("Updating a label using invalid input should fail", func() {
request := goreq.Request{
Method: "PUT",
Uri: server.URL + "/labels/anything",
ContentType: "application/json",
Body: "[email protected]#[email protected][email protected]#",
}
request.AddHeader("Authorization", "Bearer "+authToken.ID)
result, err := request.Do()
So(err, ShouldBeNil)
var response routes.LabelsUpdateResponse
err = result.Body.FromJsonTo(&response)
So(err, ShouldBeNil)
So(response.Message, ShouldEqual, "Invalid input format")
So(response.Success, ShouldBeFalse)
})
Convey("Creating a new label without enough information should fail", func() {
request := goreq.Request{
Method: "POST",
Uri: server.URL + "/labels",
ContentType: "application/json",
Body: "{}",
}
request.AddHeader("Authorization", "Bearer "+authToken.ID)
result, err := request.Do()
So(err, ShouldBeNil)
var response routes.LabelsCreateResponse
err = result.Body.FromJsonTo(&response)
So(err, ShouldBeNil)
So(response.Message, ShouldEqual, "Invalid request")
So(response.Success, ShouldBeFalse)
})
Convey("Getting a non-existing label should fail", func() {
request := goreq.Request{
Method: "GET",
Uri: server.URL + "/labels/nonexisting",
}
request.AddHeader("Authorization", "Bearer "+authToken.ID)
result, err := request.Do()
So(err, ShouldBeNil)
var response routes.LabelsCreateResponse
err = result.Body.FromJsonTo(&response)
//.........这里部分代码省略.........
示例14: Test_api_registry_revoke_secure
func Test_api_registry_revoke_secure(t *testing.T) {
logging.SetLevel("debug")
go serve_api()
config.CORE_CONF_FILEPATH, _ = filepath.Abs("./test/core_config.yml")
config.CONF_FILEPATH, _ = filepath.Abs("./test/config_wo_groups.yml")
config.CoreConf.Secure_api_write = true // need to add signature
unsigner, _ = utils.LoadPublicKey(public_key) // override interval unsigner
signer, _ := utils.LoadPrivateKey(private_key)
hostname := newcore.GetHostname()
now := fmt.Sprintf("%d", time.Now().Unix())
uri, _ := url.Parse("http://localhost:3031/registry/revoke")
values := url.Values{}
values.Add("hostname", newcore.GetHostname())
values.Add("time", now)
values.Encode()
uri.RawQuery = values.Encode()
go_req := goreq.Request{
Method: "DELETE",
Uri: uri.String(),
Accept: "application/json",
Timeout: 1 * time.Second,
}
// mock registry file before call api
ioutil.WriteFile(config.REGISTRY_FILEPATH, []byte(`test`), 0644)
resp, _ := go_req.Do()
// if err == nil {
// t.Errorf("should fail but not.")
// return
// }
if resp.StatusCode == 200 {
t.Errorf("should fail but not")
return
}
if b, _ := utils.PathExists(config.REGISTRY_FILEPATH); b != true {
t.Errorf("should fail but not")
return
}
resp.Body.Close()
toSign := fmt.Sprintf("%s%s", hostname, now)
sign, _ := signer.Sign([]byte(toSign))
sign_str := base64.StdEncoding.EncodeToString(sign)
go_req.AddHeader("HICKWALL_ADMIN_SIGN", sign_str)
// mock registry file before call api
ioutil.WriteFile(config.REGISTRY_FILEPATH, []byte(`test`), 0644)
resp, err := go_req.Do()
if err != nil {
t.Errorf("should work but not: %v", err)
return
}
defer resp.Body.Close()
if resp.StatusCode != 200 {
t.Errorf("statuscode != 200, %d", resp.StatusCode)
return
}
b, err := utils.PathExists(config.REGISTRY_FILEPATH)
if b != false || err != nil {
t.Errorf("revoke not working.")
}
}
示例15: TestTokensRoute
//.........这里部分代码省略.........
"username": "johnorange5",
"password": "not-fruityloops"
}`,
}.Do()
So(err, ShouldBeNil)
var response routes.TokensCreateResponse
err = request.Body.FromJsonTo(&response)
So(err, ShouldBeNil)
So(response.Success, ShouldBeFalse)
So(response.Message, ShouldEqual, "Wrong username or password")
})
Convey("Trying to sign in using an invalid JSON input should fail", func() {
request, err := goreq.Request{
Method: "POST",
Uri: server.URL + "/tokens",
ContentType: "application/json",
Body: "123123123###434$#$",
}.Do()
So(err, ShouldBeNil)
var response routes.TokensCreateResponse
err = request.Body.FromJsonTo(&response)
So(err, ShouldBeNil)
So(response.Success, ShouldBeFalse)
So(response.Message, ShouldEqual, "Invalid input format")
})
Convey("Getting the currently used token should succeed", func() {
request := goreq.Request{
Method: "GET",
Uri: server.URL + "/tokens",
}
request.AddHeader("Authorization", "Bearer "+authToken.ID)
result, err := request.Do()
So(err, ShouldBeNil)
var response routes.TokensGetResponse
err = result.Body.FromJsonTo(&response)
So(err, ShouldBeNil)
So(response.Success, ShouldBeTrue)
So(response.Token.ExpiryDate.After(time.Now().UTC()), ShouldBeTrue)
})
Convey("Deleting the token by ID should succeed", func() {
request := goreq.Request{
Method: "DELETE",
Uri: server.URL + "/tokens/" + authToken.ID,
}
request.AddHeader("Authorization", "Bearer "+authToken.ID)
result, err := request.Do()
So(err, ShouldBeNil)
var response routes.TokensDeleteResponse
err = result.Body.FromJsonTo(&response)
So(err, ShouldBeNil)
So(response.Success, ShouldBeTrue)
So(response.Message, ShouldEqual, "Successfully logged out")
})
Convey("Deleting a non-existing token should fail", func() {
request := goreq.Request{
Method: "DELETE",
Uri: server.URL + "/tokens/123",
}
request.AddHeader("Authorization", "Bearer "+authToken.ID)
result, err := request.Do()
So(err, ShouldBeNil)
var response routes.TokensDeleteResponse
err = result.Body.FromJsonTo(&response)
So(err, ShouldBeNil)
So(response.Success, ShouldBeFalse)
So(response.Message, ShouldEqual, "Invalid token ID")
})
Convey("Deleting current token should succeed", func() {
request := goreq.Request{
Method: "DELETE",
Uri: server.URL + "/tokens",
}
request.AddHeader("Authorization", "Bearer "+authToken.ID)
result, err := request.Do()
So(err, ShouldBeNil)
var response routes.TokensDeleteResponse
err = result.Body.FromJsonTo(&response)
So(err, ShouldBeNil)
So(response.Success, ShouldBeTrue)
So(response.Message, ShouldEqual, "Successfully logged out")
})
})
}