Tests[CreateProUser]
This commit is contained in:
parent
86f06a3c6a
commit
03b4acd13e
@ -25,6 +25,6 @@
|
|||||||
|
|
||||||
- (?) ack/read deliveries && return ack-count (? or not, how to query?)
|
- (?) ack/read deliveries && return ack-count (? or not, how to query?)
|
||||||
|
|
||||||
- (?) full-text-search: https://www.sqlite.org/fts5.html#contentless_tables
|
|
||||||
|
|
||||||
- (?) "login" on website and list/search/filter messages
|
- (?) "login" on website and list/search/filter messages
|
||||||
|
|
||||||
|
- (?) make channels deleteable (soft-delete) (what do with messages in channel?)
|
@ -514,7 +514,7 @@ func (h APIHandler) ListChannels(g *gin.Context) ginresp.HTTPResponse {
|
|||||||
UserID models.UserID `uri:"uid"`
|
UserID models.UserID `uri:"uid"`
|
||||||
}
|
}
|
||||||
type query struct {
|
type query struct {
|
||||||
Selector *string `json:"selector" form:"selector"`
|
Selector *string `json:"selector" form:"selector" enums:"owned,subscribed_any,all_any,subscribed,all"`
|
||||||
}
|
}
|
||||||
type response struct {
|
type response struct {
|
||||||
Channels []models.ChannelJSON `json:"channels"`
|
Channels []models.ChannelJSON `json:"channels"`
|
||||||
|
@ -1208,6 +1208,64 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"/api/users/{uid}/channels/": {
|
||||||
|
"post": {
|
||||||
|
"tags": [
|
||||||
|
"API-v2"
|
||||||
|
],
|
||||||
|
"summary": "Create a new (empty) channel",
|
||||||
|
"operationId": "api-channels-create",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "UserID",
|
||||||
|
"name": "uid",
|
||||||
|
"in": "path",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": " ",
|
||||||
|
"name": "post_body",
|
||||||
|
"in": "body",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/handler.CreateChannel.body"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.ChannelJSON"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"400": {
|
||||||
|
"description": "supplied values/parameters cannot be parsed / are invalid",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/ginresp.apiError"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"401": {
|
||||||
|
"description": "user is not authorized / has missing permissions",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/ginresp.apiError"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"409": {
|
||||||
|
"description": "channel already exists",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/ginresp.apiError"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"500": {
|
||||||
|
"description": "internal server error",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/ginresp.apiError"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"/api/users/{uid}/channels/{cid}": {
|
"/api/users/{uid}/channels/{cid}": {
|
||||||
"get": {
|
"get": {
|
||||||
"tags": [
|
"tags": [
|
||||||
@ -2317,6 +2375,14 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"handler.CreateChannel.body": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"handler.CreateSubscription.body": {
|
"handler.CreateSubscription.body": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
@ -2906,11 +2972,14 @@
|
|||||||
"messages_sent": {
|
"messages_sent": {
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"quota_used": {
|
"quota_max": {
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"quota_used_day": {
|
"quota_remaining": {
|
||||||
"type": "string"
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"quota_used": {
|
||||||
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"read_key": {
|
"read_key": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
@ -2956,11 +3025,14 @@
|
|||||||
"messages_sent": {
|
"messages_sent": {
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"quota_used": {
|
"quota_max": {
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"quota_used_day": {
|
"quota_remaining": {
|
||||||
"type": "string"
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"quota_used": {
|
||||||
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"read_key": {
|
"read_key": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
|
@ -51,6 +51,11 @@ definitions:
|
|||||||
- client_type
|
- client_type
|
||||||
- fcm_token
|
- fcm_token
|
||||||
type: object
|
type: object
|
||||||
|
handler.CreateChannel.body:
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
handler.CreateSubscription.body:
|
handler.CreateSubscription.body:
|
||||||
properties:
|
properties:
|
||||||
channel:
|
channel:
|
||||||
@ -440,10 +445,12 @@ definitions:
|
|||||||
type: boolean
|
type: boolean
|
||||||
messages_sent:
|
messages_sent:
|
||||||
type: integer
|
type: integer
|
||||||
|
quota_max:
|
||||||
|
type: integer
|
||||||
|
quota_remaining:
|
||||||
|
type: integer
|
||||||
quota_used:
|
quota_used:
|
||||||
type: integer
|
type: integer
|
||||||
quota_used_day:
|
|
||||||
type: string
|
|
||||||
read_key:
|
read_key:
|
||||||
type: string
|
type: string
|
||||||
send_key:
|
send_key:
|
||||||
@ -473,10 +480,12 @@ definitions:
|
|||||||
type: boolean
|
type: boolean
|
||||||
messages_sent:
|
messages_sent:
|
||||||
type: integer
|
type: integer
|
||||||
|
quota_max:
|
||||||
|
type: integer
|
||||||
|
quota_remaining:
|
||||||
|
type: integer
|
||||||
quota_used:
|
quota_used:
|
||||||
type: integer
|
type: integer
|
||||||
quota_used_day:
|
|
||||||
type: string
|
|
||||||
read_key:
|
read_key:
|
||||||
type: string
|
type: string
|
||||||
send_key:
|
send_key:
|
||||||
@ -1322,6 +1331,44 @@ paths:
|
|||||||
summary: List channels of a user (subscribed/owned)
|
summary: List channels of a user (subscribed/owned)
|
||||||
tags:
|
tags:
|
||||||
- API-v2
|
- API-v2
|
||||||
|
/api/users/{uid}/channels/:
|
||||||
|
post:
|
||||||
|
operationId: api-channels-create
|
||||||
|
parameters:
|
||||||
|
- description: UserID
|
||||||
|
in: path
|
||||||
|
name: uid
|
||||||
|
required: true
|
||||||
|
type: integer
|
||||||
|
- description: ' '
|
||||||
|
in: body
|
||||||
|
name: post_body
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/handler.CreateChannel.body'
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.ChannelJSON'
|
||||||
|
"400":
|
||||||
|
description: supplied values/parameters cannot be parsed / are invalid
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/ginresp.apiError'
|
||||||
|
"401":
|
||||||
|
description: user is not authorized / has missing permissions
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/ginresp.apiError'
|
||||||
|
"409":
|
||||||
|
description: channel already exists
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/ginresp.apiError'
|
||||||
|
"500":
|
||||||
|
description: internal server error
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/ginresp.apiError'
|
||||||
|
summary: Create a new (empty) channel
|
||||||
|
tags:
|
||||||
|
- API-v2
|
||||||
/api/users/{uid}/channels/{cid}:
|
/api/users/{uid}/channels/{cid}:
|
||||||
get:
|
get:
|
||||||
operationId: api-channels-get
|
operationId: api-channels-get
|
||||||
|
@ -137,4 +137,28 @@ func TestChannelNameNormalization(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestListChannels(t *testing.T) {
|
||||||
|
t.SkipNow() //TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestListChannelsOwned(t *testing.T) {
|
||||||
|
t.SkipNow() //TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestListChannelsSubscribedAny(t *testing.T) {
|
||||||
|
t.SkipNow() //TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestListChannelsAllAny(t *testing.T) {
|
||||||
|
t.SkipNow() //TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestListChannelsSubscribed(t *testing.T) {
|
||||||
|
t.SkipNow() //TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestListChannelsAll(t *testing.T) {
|
||||||
|
t.SkipNow() //TODO
|
||||||
|
}
|
||||||
|
|
||||||
//TODO test missing channel-xx methods
|
//TODO test missing channel-xx methods
|
||||||
|
@ -35,7 +35,7 @@ func TestSearchMessageFTSMulti(t *testing.T) {
|
|||||||
|
|
||||||
//TODO list messages by chan_key
|
//TODO list messages by chan_key
|
||||||
|
|
||||||
//TODO list messages from channel that you cannot see
|
//TODO (fail to) list messages from channel that you cannot see
|
||||||
|
|
||||||
func TestDeleteMessage(t *testing.T) {
|
func TestDeleteMessage(t *testing.T) {
|
||||||
_, baseUrl, stop := tt.StartSimpleWebserver(t)
|
_, baseUrl, stop := tt.StartSimpleWebserver(t)
|
||||||
|
@ -215,4 +215,48 @@ func TestDeleteUser(t *testing.T) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO test user /w pro-token
|
func TestCreateProUser(t *testing.T) {
|
||||||
|
_, baseUrl, stop := tt.StartSimpleWebserver(t)
|
||||||
|
defer stop()
|
||||||
|
|
||||||
|
{
|
||||||
|
r0 := tt.RequestPost[gin.H](t, baseUrl, "/api/users", gin.H{
|
||||||
|
"no_client": true,
|
||||||
|
})
|
||||||
|
|
||||||
|
tt.AssertEqual(t, "is_pro", false, r0["is_pro"])
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
r1 := tt.RequestPost[gin.H](t, baseUrl, "/api/users", gin.H{
|
||||||
|
"no_client": true,
|
||||||
|
"pro_token": "ANDROID|v2|PURCHASED:000",
|
||||||
|
})
|
||||||
|
|
||||||
|
tt.AssertEqual(t, "is_pro", true, r1["is_pro"])
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
r2 := tt.RequestPost[gin.H](t, baseUrl, "/api/users", gin.H{
|
||||||
|
"agent_model": "DUMMY_PHONE",
|
||||||
|
"agent_version": "4X",
|
||||||
|
"client_type": "ANDROID",
|
||||||
|
"fcm_token": "DUMMY_FCM",
|
||||||
|
})
|
||||||
|
|
||||||
|
tt.AssertEqual(t, "is_pro", false, r2["is_pro"])
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
r3 := tt.RequestPost[gin.H](t, baseUrl, "/api/users", gin.H{
|
||||||
|
"agent_model": "DUMMY_PHONE",
|
||||||
|
"agent_version": "4X",
|
||||||
|
"client_type": "ANDROID",
|
||||||
|
"fcm_token": "DUMMY_FCM",
|
||||||
|
"pro_token": "ANDROID|v2|PURCHASED:000",
|
||||||
|
})
|
||||||
|
|
||||||
|
tt.AssertEqual(t, "is_pro", true, r3["is_pro"])
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user