1
16
17 package tests
18
19 import (
20 "net/http"
21 "strconv"
22 "time"
23
24 "github.com/jarcoal/httpmock"
25 )
26
27 func Mock429Response() *http.Response {
28 loc, _ := time.LoadLocation("UTC")
29 zulu := time.Now().In(loc)
30 header := http.Header{}
31 header.Add("X-Okta-Now", strconv.FormatInt(zulu.Unix(), 10))
32 header.Add("X-Rate-Limit-Reset", strconv.FormatInt(time.Now().Unix()+1, 10))
33 header.Add("X-Okta-Request-id", "a-request-id")
34 header.Add("Content-Type", "application/json")
35 header.Add("Date", zulu.Format("Mon, 02 Jan 2006 15:04:05 GMT"))
36
37 return &http.Response{
38 Status: strconv.Itoa(429),
39 StatusCode: 429,
40 Body: httpmock.NewRespBodyFromString("{}"),
41 Header: header,
42 ContentLength: -1,
43 }
44 }
45
46 func Mock429ResponseNoResetHeader() *http.Response {
47 loc, _ := time.LoadLocation("UTC")
48 zulu := time.Now().In(loc)
49 header := http.Header{}
50 header.Add("X-Okta-Now", strconv.FormatInt(zulu.Unix(), 10))
51 header.Add("X-Okta-Request-id", "a-request-id")
52 header.Add("Content-Type", "application/json")
53 header.Add("Date", zulu.Format("Mon, 02 Jan 2006 15:04:05 GMT"))
54
55 return &http.Response{
56 Status: strconv.Itoa(429),
57 StatusCode: 429,
58 Body: httpmock.NewRespBodyFromString("{}"),
59 Header: header,
60 ContentLength: -1,
61 }
62 }
63
64 func Mock429ResponseNoDateHeader() *http.Response {
65 loc, _ := time.LoadLocation("UTC")
66 zulu := time.Now().In(loc)
67 header := http.Header{}
68 header.Add("X-Okta-Now", strconv.FormatInt(zulu.Unix(), 10))
69 header.Add("X-Rate-Limit-Reset", strconv.FormatInt(time.Now().Unix()+1, 10))
70 header.Add("X-Okta-Request-id", "a-request-id")
71 header.Add("Content-Type", "application/json")
72
73 return &http.Response{
74 Status: strconv.Itoa(429),
75 StatusCode: 429,
76 Body: httpmock.NewRespBodyFromString("{}"),
77 Header: header,
78 ContentLength: -1,
79 }
80 }
81
82 func Mock429ResponseMultipleHeaders() *http.Response {
83 loc, _ := time.LoadLocation("UTC")
84 zulu := time.Now().In(loc)
85 header := http.Header{}
86 header.Add("X-Okta-Now", strconv.FormatInt(zulu.Unix(), 10))
87 header.Add("X-Rate-Limit-Reset", strconv.FormatInt(time.Now().Unix()+20, 10))
88 header.Add("X-Rate-Limit-Reset", strconv.FormatInt(time.Now().Unix()+10, 10))
89 header.Add("X-Okta-Request-id", "a-request-id")
90 header.Add("Content-Type", "application/json")
91 header.Add("Date", zulu.Format("Mon, 02 Jan 2006 15:04:05 GMT"))
92
93 return &http.Response{
94 Status: strconv.Itoa(429),
95 StatusCode: 429,
96 Body: httpmock.NewRespBodyFromString("{}"),
97 Header: header,
98 ContentLength: -1,
99 }
100 }
101
102 func MockValidResponse() *http.Response {
103 header := http.Header{}
104 header.Add("X-Okta-Request-id", "another-request-id")
105 header.Add("Content-Type", "application/json")
106 header.Add("Date", time.Now().Add(time.Second*10).Format(time.RFC3339))
107
108 return &http.Response{
109 Status: strconv.Itoa(200),
110 StatusCode: 200,
111 Body: httpmock.NewRespBodyFromString("[]"),
112 Header: header,
113 ContentLength: -1,
114 }
115 }
116
117 func MockSessionCreateResponse() *http.Response {
118 header := http.Header{}
119 header.Add("X-Okta-Request-id", "another-request-id")
120 header.Add("Content-Type", "application/json")
121 header.Add("Accept", "application/json")
122 header.Add("Date", time.Now().Add(time.Second*10).Format(time.RFC3339))
123
124 return &http.Response{
125 Status: strconv.Itoa(200),
126 StatusCode: 200,
127 Body: httpmock.NewRespBodyFromString(`{
128 "id": "101W_juydrDRByB7fUdRyE2JQ",
129 "login": "user@example.com",
130 "userId": "00ubgaSARVOQDIOXMORI",
131 "expiresAt": "2015-08-30T18:41:35.818Z",
132 "status": "ACTIVE",
133 "lastPasswordVerification": "2015-08-30T18:41:35.818Z",
134 "lastFactorVerification": null,
135 "amr": [
136 "pwd"
137 ],
138 "idp": {
139 "id": "00oi5cpnylv792IcF0g3",
140 "type": "OKTA"
141 },
142 "mfaActive": false}`),
143 Header: header,
144 ContentLength: -1,
145 }
146 }
147
View as plain text