Skip to content

Commit 28b12db

Browse files
committed
tests/yank_unyank: Add authentication tests
1 parent 39d007c commit 28b12db

File tree

4 files changed

+369
-0
lines changed

4 files changed

+369
-0
lines changed
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
[
2+
{
3+
"request": {
4+
"uri": "http://alexcrichton-test.s3.amazonaws.com/crates/fyk/fyk-1.0.0.crate",
5+
"method": "PUT",
6+
"headers": [
7+
[
8+
"accept",
9+
"*/*"
10+
],
11+
[
12+
"accept-encoding",
13+
"gzip"
14+
],
15+
[
16+
"content-length",
17+
"35"
18+
],
19+
[
20+
"content-type",
21+
"application/gzip"
22+
]
23+
],
24+
"body": "H4sIAAAAAAAA/+3AAQEAAACCIP+vbkhQwKsBLq+17wAEAAA="
25+
},
26+
"response": {
27+
"status": 200,
28+
"headers": [],
29+
"body": ""
30+
}
31+
},
32+
{
33+
"request": {
34+
"uri": "http://alexcrichton-test.s3.amazonaws.com/3/f/fyk",
35+
"method": "PUT",
36+
"headers": [
37+
[
38+
"accept",
39+
"*/*"
40+
],
41+
[
42+
"accept-encoding",
43+
"gzip"
44+
],
45+
[
46+
"content-length",
47+
"157"
48+
],
49+
[
50+
"content-type",
51+
"text/plain"
52+
]
53+
],
54+
"body": "eyJuYW1lIjoiZnlrIiwidmVycyI6IjEuMC4wIiwiZGVwcyI6W10sImNrc3VtIjoiYWNiNTYwNGIxMjZhYzg5NGMxZWIxMWM0NTc1YmYyMDcyZmVhNjEyMzJhODg4ZTQ1Mzc3MGM3OWQ3ZWQ1NjQxOSIsImZlYXR1cmVzIjp7fSwieWFua2VkIjpmYWxzZSwibGlua3MiOm51bGx9Cg=="
55+
},
56+
"response": {
57+
"status": 200,
58+
"headers": [],
59+
"body": ""
60+
}
61+
},
62+
{
63+
"request": {
64+
"uri": "http://alexcrichton-test.s3.amazonaws.com/3/f/fyk",
65+
"method": "PUT",
66+
"headers": [
67+
[
68+
"accept",
69+
"*/*"
70+
],
71+
[
72+
"accept-encoding",
73+
"gzip"
74+
],
75+
[
76+
"content-length",
77+
"156"
78+
],
79+
[
80+
"content-type",
81+
"text/plain"
82+
]
83+
],
84+
"body": "eyJuYW1lIjoiZnlrIiwidmVycyI6IjEuMC4wIiwiZGVwcyI6W10sImNrc3VtIjoiYWNiNTYwNGIxMjZhYzg5NGMxZWIxMWM0NTc1YmYyMDcyZmVhNjEyMzJhODg4ZTQ1Mzc3MGM3OWQ3ZWQ1NjQxOSIsImZlYXR1cmVzIjp7fSwieWFua2VkIjp0cnVlLCJsaW5rcyI6bnVsbH0K"
85+
},
86+
"response": {
87+
"status": 200,
88+
"headers": [],
89+
"body": ""
90+
}
91+
},
92+
{
93+
"request": {
94+
"uri": "http://alexcrichton-test.s3.amazonaws.com/3/f/fyk",
95+
"method": "PUT",
96+
"headers": [
97+
[
98+
"accept",
99+
"*/*"
100+
],
101+
[
102+
"accept-encoding",
103+
"gzip"
104+
],
105+
[
106+
"content-length",
107+
"157"
108+
],
109+
[
110+
"content-type",
111+
"text/plain"
112+
]
113+
],
114+
"body": "eyJuYW1lIjoiZnlrIiwidmVycyI6IjEuMC4wIiwiZGVwcyI6W10sImNrc3VtIjoiYWNiNTYwNGIxMjZhYzg5NGMxZWIxMWM0NTc1YmYyMDcyZmVhNjEyMzJhODg4ZTQ1Mzc3MGM3OWQ3ZWQ1NjQxOSIsImZlYXR1cmVzIjp7fSwieWFua2VkIjpmYWxzZSwibGlua3MiOm51bGx9Cg=="
115+
},
116+
"response": {
117+
"status": 200,
118+
"headers": [],
119+
"body": ""
120+
}
121+
}
122+
]
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
[
2+
{
3+
"request": {
4+
"uri": "http://alexcrichton-test.s3.amazonaws.com/crates/fyk/fyk-1.0.0.crate",
5+
"method": "PUT",
6+
"headers": [
7+
[
8+
"accept",
9+
"*/*"
10+
],
11+
[
12+
"accept-encoding",
13+
"gzip"
14+
],
15+
[
16+
"content-length",
17+
"35"
18+
],
19+
[
20+
"content-type",
21+
"application/gzip"
22+
]
23+
],
24+
"body": "H4sIAAAAAAAA/+3AAQEAAACCIP+vbkhQwKsBLq+17wAEAAA="
25+
},
26+
"response": {
27+
"status": 200,
28+
"headers": [],
29+
"body": ""
30+
}
31+
},
32+
{
33+
"request": {
34+
"uri": "http://alexcrichton-test.s3.amazonaws.com/3/f/fyk",
35+
"method": "PUT",
36+
"headers": [
37+
[
38+
"accept",
39+
"*/*"
40+
],
41+
[
42+
"accept-encoding",
43+
"gzip"
44+
],
45+
[
46+
"content-length",
47+
"157"
48+
],
49+
[
50+
"content-type",
51+
"text/plain"
52+
]
53+
],
54+
"body": "eyJuYW1lIjoiZnlrIiwidmVycyI6IjEuMC4wIiwiZGVwcyI6W10sImNrc3VtIjoiYWNiNTYwNGIxMjZhYzg5NGMxZWIxMWM0NTc1YmYyMDcyZmVhNjEyMzJhODg4ZTQ1Mzc3MGM3OWQ3ZWQ1NjQxOSIsImZlYXR1cmVzIjp7fSwieWFua2VkIjpmYWxzZSwibGlua3MiOm51bGx9Cg=="
55+
},
56+
"response": {
57+
"status": 200,
58+
"headers": [],
59+
"body": ""
60+
}
61+
},
62+
{
63+
"request": {
64+
"uri": "http://alexcrichton-test.s3.amazonaws.com/3/f/fyk",
65+
"method": "PUT",
66+
"headers": [
67+
[
68+
"accept",
69+
"*/*"
70+
],
71+
[
72+
"accept-encoding",
73+
"gzip"
74+
],
75+
[
76+
"content-length",
77+
"156"
78+
],
79+
[
80+
"content-type",
81+
"text/plain"
82+
]
83+
],
84+
"body": "eyJuYW1lIjoiZnlrIiwidmVycyI6IjEuMC4wIiwiZGVwcyI6W10sImNrc3VtIjoiYWNiNTYwNGIxMjZhYzg5NGMxZWIxMWM0NTc1YmYyMDcyZmVhNjEyMzJhODg4ZTQ1Mzc3MGM3OWQ3ZWQ1NjQxOSIsImZlYXR1cmVzIjp7fSwieWFua2VkIjp0cnVlLCJsaW5rcyI6bnVsbH0K"
85+
},
86+
"response": {
87+
"status": 200,
88+
"headers": [],
89+
"body": ""
90+
}
91+
},
92+
{
93+
"request": {
94+
"uri": "http://alexcrichton-test.s3.amazonaws.com/3/f/fyk",
95+
"method": "PUT",
96+
"headers": [
97+
[
98+
"accept",
99+
"*/*"
100+
],
101+
[
102+
"accept-encoding",
103+
"gzip"
104+
],
105+
[
106+
"content-length",
107+
"157"
108+
],
109+
[
110+
"content-type",
111+
"text/plain"
112+
]
113+
],
114+
"body": "eyJuYW1lIjoiZnlrIiwidmVycyI6IjEuMC4wIiwiZGVwcyI6W10sImNrc3VtIjoiYWNiNTYwNGIxMjZhYzg5NGMxZWIxMWM0NTc1YmYyMDcyZmVhNjEyMzJhODg4ZTQ1Mzc3MGM3OWQ3ZWQ1NjQxOSIsImZlYXR1cmVzIjp7fSwieWFua2VkIjpmYWxzZSwibGlua3MiOm51bGx9Cg=="
115+
},
116+
"response": {
117+
"status": 200,
118+
"headers": [],
119+
"body": ""
120+
}
121+
}
122+
]
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
[
2+
{
3+
"request": {
4+
"uri": "http://alexcrichton-test.s3.amazonaws.com/crates/fyk/fyk-1.0.0.crate",
5+
"method": "PUT",
6+
"headers": [
7+
[
8+
"accept",
9+
"*/*"
10+
],
11+
[
12+
"accept-encoding",
13+
"gzip"
14+
],
15+
[
16+
"content-length",
17+
"35"
18+
],
19+
[
20+
"content-type",
21+
"application/gzip"
22+
]
23+
],
24+
"body": "H4sIAAAAAAAA/+3AAQEAAACCIP+vbkhQwKsBLq+17wAEAAA="
25+
},
26+
"response": {
27+
"status": 200,
28+
"headers": [],
29+
"body": ""
30+
}
31+
},
32+
{
33+
"request": {
34+
"uri": "http://alexcrichton-test.s3.amazonaws.com/3/f/fyk",
35+
"method": "PUT",
36+
"headers": [
37+
[
38+
"accept",
39+
"*/*"
40+
],
41+
[
42+
"accept-encoding",
43+
"gzip"
44+
],
45+
[
46+
"content-length",
47+
"157"
48+
],
49+
[
50+
"content-type",
51+
"text/plain"
52+
]
53+
],
54+
"body": "eyJuYW1lIjoiZnlrIiwidmVycyI6IjEuMC4wIiwiZGVwcyI6W10sImNrc3VtIjoiYWNiNTYwNGIxMjZhYzg5NGMxZWIxMWM0NTc1YmYyMDcyZmVhNjEyMzJhODg4ZTQ1Mzc3MGM3OWQ3ZWQ1NjQxOSIsImZlYXR1cmVzIjp7fSwieWFua2VkIjpmYWxzZSwibGlua3MiOm51bGx9Cg=="
55+
},
56+
"response": {
57+
"status": 200,
58+
"headers": [],
59+
"body": ""
60+
}
61+
}
62+
]

src/tests/routes/crates/versions/yank_unyank.rs

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,3 +91,66 @@ fn unyank_records_an_audit_action() {
9191
assert_eq!(action.action, "unyank");
9292
assert_eq!(action.user.id, token.as_model().user_id);
9393
}
94+
95+
mod auth {
96+
use super::*;
97+
use crate::util::{MockAnonymousUser, MockCookieUser};
98+
99+
const CRATE_NAME: &str = "fyk";
100+
const CRATE_VERSION: &str = "1.0.0";
101+
102+
fn prepare() -> (TestApp, MockAnonymousUser, MockCookieUser) {
103+
let (app, anon, cookie) = TestApp::full().with_user();
104+
105+
let pb = PublishBuilder::new(CRATE_NAME).version(CRATE_VERSION);
106+
cookie.publish_crate(pb).good();
107+
108+
(app, anon, cookie)
109+
}
110+
111+
#[test]
112+
fn unauthenticated() {
113+
let (_, client, _) = prepare();
114+
115+
let response = client.yank(CRATE_NAME, CRATE_VERSION);
116+
assert_eq!(response.status(), StatusCode::FORBIDDEN);
117+
assert_eq!(
118+
response.into_json(),
119+
json!({ "errors": [{ "detail": "must be logged in to perform that action" }] })
120+
);
121+
122+
let response = client.unyank(CRATE_NAME, CRATE_VERSION);
123+
assert_eq!(response.status(), StatusCode::FORBIDDEN);
124+
assert_eq!(
125+
response.into_json(),
126+
json!({ "errors": [{ "detail": "must be logged in to perform that action" }] })
127+
);
128+
}
129+
130+
#[test]
131+
fn cookie_user() {
132+
let (_, _, client) = prepare();
133+
134+
let response = client.yank(CRATE_NAME, CRATE_VERSION);
135+
assert_eq!(response.status(), StatusCode::OK);
136+
assert_eq!(response.into_json(), json!({ "ok": true }));
137+
138+
let response = client.unyank(CRATE_NAME, CRATE_VERSION);
139+
assert_eq!(response.status(), StatusCode::OK);
140+
assert_eq!(response.into_json(), json!({ "ok": true }));
141+
}
142+
143+
#[test]
144+
fn token_user() {
145+
let (_, _, client) = prepare();
146+
let client = client.db_new_token("test-token");
147+
148+
let response = client.yank(CRATE_NAME, CRATE_VERSION);
149+
assert_eq!(response.status(), StatusCode::OK);
150+
assert_eq!(response.into_json(), json!({ "ok": true }));
151+
152+
let response = client.unyank(CRATE_NAME, CRATE_VERSION);
153+
assert_eq!(response.status(), StatusCode::OK);
154+
assert_eq!(response.into_json(), json!({ "ok": true }));
155+
}
156+
}

0 commit comments

Comments
 (0)