Copyright 2023 Red Hat, Inc
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
|
package server_test
import (
"fmt"
"net/http"
"testing"
"time"
"github.com/RedHatInsights/insights-results-aggregator-data/testdata"
ira_server "github.com/RedHatInsights/insights-results-aggregator/server"
"github.com/stretchr/testify/assert"
"github.com/RedHatInsights/insights-results-smart-proxy/server"
"github.com/RedHatInsights/insights-results-smart-proxy/tests/helpers"
)
func TestHTTPServer_TestReadAckListNoResult ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
ackedRulesAggregatorResponse := `
{
"disabledRules":[],
"status":"ok"
}
`
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ListOfDisabledRulesSystemWide ,
EndpointArgs : [ ] interface { } { testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusOK ,
Body : ackedRulesAggregatorResponse ,
} ,
)
ackListResponse := `
{
"data":[],
"meta": {
"count": 0
}
}
`
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : server . AckListEndpoint ,
XRHIdentity : goodXRHAuthToken ,
} , & helpers . APIResponse {
StatusCode : http . StatusOK ,
Body : ackListResponse ,
} )
}
func TestHTTPServer_TestReadAckList1Result ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
disabledAt := time . Now ( )
disabledAtRFC := disabledAt . UTC ( ) . Format ( time . RFC3339 )
justificationNote := "justification test"
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
ackedRulesAggregatorResponse := `
{
"disabledRules":[
{
"rule_id": "%v",
"error_key": "%v",
"justification": "%v",
"created_at": {
"Time": "%v",
"Valid": true
},
"updated_at": {
"Time": "%v",
"Valid": true
}
}
],
"status":"ok"
}
`
ackedRulesAggregatorResponse = fmt . Sprintf (
ackedRulesAggregatorResponse , testdata . Rule1ID , testdata . ErrorKey1 , justificationNote , disabledAtRFC , disabledAtRFC ,
)
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ListOfDisabledRulesSystemWide ,
EndpointArgs : [ ] interface { } { testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusOK ,
Body : ackedRulesAggregatorResponse ,
} ,
)
ackListResponse := `
{
"data":[
{
"rule": "%v",
"justification": "%v",
"created_by": "",
"created_at": "%v",
"updated_at": "%v"
}
],
"meta": {
"count": 1
}
}
`
ackListResponse = fmt . Sprintf ( ackListResponse , testdata . Rule1CompositeID , justificationNote , disabledAtRFC , disabledAtRFC )
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : server . AckListEndpoint ,
XRHIdentity : goodXRHAuthToken ,
} , & helpers . APIResponse {
StatusCode : http . StatusOK ,
Body : ackListResponse ,
} )
}
func TestHTTPServer_TestReadAckList2Results ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
disabledAt := time . Now ( )
disabledAtRFC := disabledAt . UTC ( ) . Format ( time . RFC3339 )
justificationNote := "justification test"
justificationNote2 := "different justification"
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
ackedRulesAggregatorResponse := `
{
"disabledRules":[
{
"rule_id": "%v",
"error_key": "%v",
"justification": "%v",
"created_at": {
"Time": "%v",
"Valid": true
},
"updated_at": {
"Time": "%v",
"Valid": true
}
},
{
"rule_id": "%v",
"error_key": "%v",
"justification": "%v",
"created_at": {
"Time": "%v",
"Valid": true
},
"updated_at": {
"Time": "%v",
"Valid": true
}
}
],
"status":"ok"
}
`
ackedRulesAggregatorResponse = fmt . Sprintf ( ackedRulesAggregatorResponse ,
testdata . Rule1ID , testdata . ErrorKey1 , justificationNote , disabledAtRFC , disabledAtRFC ,
|
2nd entry
|
testdata . Rule2ID , testdata . ErrorKey2 , justificationNote2 , disabledAtRFC , disabledAtRFC ,
)
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ListOfDisabledRulesSystemWide ,
EndpointArgs : [ ] interface { } { testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusOK ,
Body : ackedRulesAggregatorResponse ,
} ,
)
ackListResponse := `
{
"data":[
{
"rule": "%v",
"justification": "%v",
"created_by": "",
"created_at": "%v",
"updated_at": "%v"
},
{
"rule": "%v",
"justification": "%v",
"created_by": "",
"created_at": "%v",
"updated_at": "%v"
}
],
"meta": {
"count": 2
}
}
`
ackListResponse = fmt . Sprintf ( ackListResponse ,
testdata . Rule1CompositeID , justificationNote , disabledAtRFC , disabledAtRFC ,
testdata . Rule2CompositeID , justificationNote2 , disabledAtRFC , disabledAtRFC ,
)
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : server . AckListEndpoint ,
XRHIdentity : goodXRHAuthToken ,
} , & helpers . APIResponse {
StatusCode : http . StatusOK ,
Body : ackListResponse ,
BodyChecker : ackInResponseChecker ,
} )
}
func TestHTTPServer_TestReadAckListInvalidToken ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
ackedRulesAggregatorResponse := `
{
"disabledRules":[],
"status":"ok"
}
`
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ListOfDisabledRulesSystemWide ,
EndpointArgs : [ ] interface { } { testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusOK ,
Body : ackedRulesAggregatorResponse ,
} ,
)
ackListResponse := `
{
"status": "Malformed authentication token"
}
`
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : server . AckListEndpoint ,
XRHIdentity : invalidXRHAuthToken ,
} , & helpers . APIResponse {
StatusCode : http . StatusForbidden ,
Body : ackListResponse ,
} )
}
func TestHTTPServer_TestReadAckListAggregatorError ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ListOfDisabledRulesSystemWide ,
EndpointArgs : [ ] interface { } { testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusInternalServerError ,
} ,
)
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : server . AckListEndpoint ,
XRHIdentity : goodXRHAuthToken ,
} , & helpers . APIResponse {
StatusCode : http . StatusInternalServerError ,
} )
}
func TestHTTPServer_TestReadAckListUnparsableAggregatorJSON ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ListOfDisabledRulesSystemWide ,
EndpointArgs : [ ] interface { } { testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusOK ,
Body : "{invalid json body" ,
} ,
)
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : server . AckListEndpoint ,
XRHIdentity : goodXRHAuthToken ,
} , & helpers . APIResponse {
|
also 500, but testing different condition
|
StatusCode : http . StatusInternalServerError ,
} )
}
func TestHTTPServer_TestGetAcknowledgeNotFound ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
ackedRuleAggregatorResponse := `
{
"disabledRule":{},
"status":"ok"
}
`
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ReadRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusNotFound ,
Body : ackedRuleAggregatorResponse ,
} ,
)
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : server . AckGetEndpoint ,
XRHIdentity : goodXRHAuthToken ,
EndpointArgs : [ ] interface { } { testdata . Rule1CompositeID } ,
} , & helpers . APIResponse {
StatusCode : http . StatusNotFound ,
} )
}
func TestHTTPServer_TestGetAcknowledgeAggregatorError ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ReadRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusInternalServerError ,
} ,
)
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : server . AckGetEndpoint ,
XRHIdentity : goodXRHAuthToken ,
EndpointArgs : [ ] interface { } { testdata . Rule1CompositeID } ,
} , & helpers . APIResponse {
StatusCode : http . StatusInternalServerError ,
} )
}
func TestHTTPServer_TestGetAcknowledgeUnparsableAggregatorJSON ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ReadRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusOK ,
Body : "{invalid json body" ,
} ,
)
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : server . AckGetEndpoint ,
XRHIdentity : goodXRHAuthToken ,
EndpointArgs : [ ] interface { } { testdata . Rule1CompositeID } ,
} , & helpers . APIResponse {
|
also 500, but testing different condition
|
StatusCode : http . StatusInternalServerError ,
} )
}
func TestHTTPServer_TestGetAcknowledgeFound ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
disabledAt := time . Now ( )
disabledAtRFC := disabledAt . UTC ( ) . Format ( time . RFC3339 )
justificationNote := "justification test"
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
ackedRuleAggregatorResponse := `
{
"disabledRule":{
"rule_id": "%v",
"error_key": "%v",
"justification": "%v",
"created_by": "",
"created_at": {
"Time": "%v",
"Valid": true
},
"updated_at": {
"Time": "%v",
"Valid": true
}
},
"status":"ok"
}
`
ackedRuleAggregatorResponse = fmt . Sprintf ( ackedRuleAggregatorResponse ,
testdata . Rule1ID , testdata . ErrorKey1 , justificationNote , disabledAtRFC , disabledAtRFC ,
)
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ReadRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusOK ,
Body : ackedRuleAggregatorResponse ,
} ,
)
expectedResponse := `
{
"rule": "%v",
"justification": "%v",
"created_by": "",
"created_at": "%v",
"updated_at": "%v"
}
`
expectedResponse = fmt . Sprintf ( expectedResponse ,
testdata . Rule1CompositeID , justificationNote , disabledAtRFC , disabledAtRFC ,
)
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : server . AckGetEndpoint ,
XRHIdentity : goodXRHAuthToken ,
EndpointArgs : [ ] interface { } { testdata . Rule1CompositeID } ,
} , & helpers . APIResponse {
StatusCode : http . StatusOK ,
Body : expectedResponse ,
} )
}
func TestHTTPServer_TestGetAcknowledgeInvalidRuleIDBadRequest ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
disabledAt := time . Now ( )
disabledAtRFC := disabledAt . UTC ( ) . Format ( time . RFC3339 )
justificationNote := "justification test"
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
ackedRuleAggregatorResponse := `
{
"disabledRule":{
"rule_id": "%v",
"error_key": "%v",
"justification": "%v",
"created_by": "",
"created_at": {
"Time": "%v",
"Valid": true
},
"updated_at": {
"Time": "%v",
"Valid": true
}
},
"status":"ok"
}
`
ackedRuleAggregatorResponse = fmt . Sprintf ( ackedRuleAggregatorResponse ,
testdata . Rule1ID , testdata . ErrorKey1 , justificationNote , disabledAtRFC , disabledAtRFC ,
)
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ReadRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusOK ,
Body : ackedRuleAggregatorResponse ,
} ,
)
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : server . AckGetEndpoint ,
XRHIdentity : goodXRHAuthToken ,
|
invalid composite rule ID
|
EndpointArgs : [ ] interface { } { testdata . Rule1ID } ,
} , & helpers . APIResponse {
StatusCode : http . StatusBadRequest ,
} )
}
func TestHTTPServer_TestGetAcknowledgeInvalidToken ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ReadRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusNotFound ,
} ,
)
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : server . AckGetEndpoint ,
XRHIdentity : invalidXRHAuthToken ,
EndpointArgs : [ ] interface { } { testdata . Rule1CompositeID } ,
} , & helpers . APIResponse {
StatusCode : http . StatusForbidden ,
} )
}
func TestHTTPServer_TestAcknowledgePostFound ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
disabledAt := time . Now ( )
disabledAtRFC := disabledAt . UTC ( ) . Format ( time . RFC3339 )
justificationNote := "justification test"
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
ackedRuleAggregatorResponse := `
{
"disabledRule":{
"rule_id": "%v",
"error_key": "%v",
"justification": "%v",
"created_by": "",
"created_at": {
"Time": "%v",
"Valid": true
},
"updated_at": {
"Time": "%v",
"Valid": true
}
},
"status":"ok"
}
`
ackedRuleAggregatorResponse = fmt . Sprintf ( ackedRuleAggregatorResponse ,
testdata . Rule1ID , testdata . ErrorKey1 , justificationNote , disabledAtRFC , disabledAtRFC ,
)
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ReadRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusOK ,
Body : ackedRuleAggregatorResponse ,
} ,
)
|
rule has been acked before, 2nd call to aggregator happens in any case
|
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ReadRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusOK ,
Body : ackedRuleAggregatorResponse ,
} ,
)
reqBody := `
{
"rule_id": "%v",
"justification": "%v"
}
`
reqBody = fmt . Sprintf ( reqBody , testdata . Rule1CompositeID , justificationNote )
expectedResponse := `
{
"rule": "%v",
"justification": "%v",
"created_by": "",
"created_at": "%v",
"updated_at": "%v"
}
`
expectedResponse = fmt . Sprintf ( expectedResponse ,
testdata . Rule1CompositeID , justificationNote , disabledAtRFC , disabledAtRFC ,
)
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodPost ,
Endpoint : server . AckAcknowledgePostEndpoint ,
XRHIdentity : goodXRHAuthToken ,
Body : reqBody ,
} , & helpers . APIResponse {
StatusCode : http . StatusOK ,
Body : expectedResponse ,
} )
}
func TestHTTPServer_TestAcknowledgePostNewAck ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
disabledAt := time . Now ( )
disabledAtRFC := disabledAt . UTC ( ) . Format ( time . RFC3339 )
justificationNote := "justification test"
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
emptyAggregatorResponse := `
{
"disabledRule":{},
"status":"ok"
}
`
|
1st call to aggregator to find out whether rule has been acked already or not
|
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ReadRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusNotFound ,
Body : emptyAggregatorResponse ,
} ,
)
putBody := `{"justification":"%v"}`
putBody = fmt . Sprintf ( putBody , justificationNote )
|
PUT to aggregator
|
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodPut ,
Endpoint : ira_server . DisableRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
Body : putBody ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusOK ,
} ,
)
ackedRuleAggregatorResponse := `
{
"disabledRule":{
"rule_id": "%v",
"error_key": "%v",
"justification": "%v",
"created_by": "",
"created_at": {
"Time": "%v",
"Valid": true
},
"updated_at": {
"Time": "%v",
"Valid": true
}
},
"status":"ok"
}
`
ackedRuleAggregatorResponse = fmt . Sprintf ( ackedRuleAggregatorResponse ,
testdata . Rule1ID , testdata . ErrorKey1 , justificationNote , disabledAtRFC , disabledAtRFC ,
)
|
2nd call to aggregator to confirm data entered DB
|
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ReadRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusOK ,
Body : ackedRuleAggregatorResponse ,
} ,
)
reqBody := `
{
"rule_id": "%v",
"justification": "%v"
}
`
reqBody = fmt . Sprintf ( reqBody , testdata . Rule1CompositeID , justificationNote )
expectedResponse := `
{
"rule": "%v",
"justification": "%v",
"created_by": "",
"created_at": "%v",
"updated_at": "%v"
}
`
expectedResponse = fmt . Sprintf ( expectedResponse ,
testdata . Rule1CompositeID , justificationNote , disabledAtRFC , disabledAtRFC ,
)
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodPost ,
Endpoint : server . AckAcknowledgePostEndpoint ,
XRHIdentity : goodXRHAuthToken ,
Body : reqBody ,
} , & helpers . APIResponse {
|
201 CREATED when rule wasn't acked before
|
StatusCode : http . StatusCreated ,
Body : expectedResponse ,
} )
}
func TestHTTPServer_TestAcknowledgePostMissingParam ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
justificationNote := "justification test"
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
|
missing rule_id
|
reqBody := `
{
"justification": "%v"
}
`
reqBody = fmt . Sprintf ( reqBody , justificationNote )
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodPost ,
Endpoint : server . AckAcknowledgePostEndpoint ,
XRHIdentity : goodXRHAuthToken ,
Body : reqBody ,
} , & helpers . APIResponse {
StatusCode : http . StatusBadRequest ,
} )
}
func TestHTTPServer_TestAcknowledgePostBadCompositeRuleID ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
justificationNote := "justification test"
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
reqBody := `
{
"rule_id": "invalid rule id"
"justification": "%v"
}
`
reqBody = fmt . Sprintf ( reqBody , justificationNote )
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodPost ,
Endpoint : server . AckAcknowledgePostEndpoint ,
XRHIdentity : goodXRHAuthToken ,
Body : reqBody ,
} , & helpers . APIResponse {
StatusCode : http . StatusBadRequest ,
} )
}
func TestHTTPServer_TestAcknowledgePostAggregatorError1stCall ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
justificationNote := "justification test"
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ReadRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusInternalServerError ,
} ,
)
reqBody := `
{
"rule_id": "%v",
"justification": "%v"
}
`
reqBody = fmt . Sprintf ( reqBody , testdata . Rule1CompositeID , justificationNote )
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodPost ,
Endpoint : server . AckAcknowledgePostEndpoint ,
XRHIdentity : goodXRHAuthToken ,
Body : reqBody ,
} , & helpers . APIResponse {
StatusCode : http . StatusInternalServerError ,
} )
}
func TestHTTPServer_TestAcknowledgePostAggregatorError2ndCall ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
disabledAt := time . Now ( )
disabledAtRFC := disabledAt . UTC ( ) . Format ( time . RFC3339 )
justificationNote := "justification test"
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
ackedRuleAggregatorResponse := `
{
"disabledRule":{
"rule_id": "%v",
"error_key": "%v",
"justification": "%v",
"created_by": "",
"created_at": {
"Time": "%v",
"Valid": true
},
"updated_at": {
"Time": "%v",
"Valid": true
}
},
"status":"ok"
}
`
ackedRuleAggregatorResponse = fmt . Sprintf ( ackedRuleAggregatorResponse ,
testdata . Rule1ID , testdata . ErrorKey1 , justificationNote , disabledAtRFC , disabledAtRFC ,
)
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ReadRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusOK ,
Body : ackedRuleAggregatorResponse ,
} ,
)
emptyAggregatorResponse := `
{
"disabledRule":{},
"status":"ok"
}
`
|
2nd call fails
|
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ReadRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusInternalServerError ,
Body : emptyAggregatorResponse ,
} ,
)
reqBody := `
{
"rule_id": "%v",
"justification": "%v"
}
`
reqBody = fmt . Sprintf ( reqBody , testdata . Rule1CompositeID , justificationNote )
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodPost ,
Endpoint : server . AckAcknowledgePostEndpoint ,
XRHIdentity : goodXRHAuthToken ,
Body : reqBody ,
} , & helpers . APIResponse {
StatusCode : http . StatusInternalServerError ,
} )
}
func TestHTTPServer_TestAcknowledgePostInvalidToken ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
reqBody := `
{
"rule_id": "%v",
"justification": "%v"
}
`
reqBody = fmt . Sprintf ( reqBody , testdata . Rule1CompositeID , "justification" )
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodPost ,
Endpoint : server . AckAcknowledgePostEndpoint ,
XRHIdentity : invalidXRHAuthToken ,
Body : reqBody ,
} , & helpers . APIResponse {
StatusCode : http . StatusForbidden ,
} )
}
func TestHTTPServer_TestAcknowledgeUpdateNotFound ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
justificationNote := "justification test"
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
emptyAggregatorResponse := `
{
"disabledRule":{},
"status":"ok"
}
`
|
1st call to aggregator to find out whether rule has been acked already or not
|
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ReadRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
} ,
& helpers . APIResponse {
|
existing ack not found
|
StatusCode : http . StatusNotFound ,
Body : emptyAggregatorResponse ,
} ,
)
reqBody := `
{
"justification": "%v"
}
`
reqBody = fmt . Sprintf ( reqBody , justificationNote )
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodPut ,
Endpoint : server . AckUpdateEndpoint ,
EndpointArgs : [ ] interface { } { testdata . Rule1CompositeID } ,
XRHIdentity : goodXRHAuthToken ,
Body : reqBody ,
} , & helpers . APIResponse {
StatusCode : http . StatusNotFound ,
} )
}
func TestHTTPServer_TestAcknowledgeUpdateFound ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
disabledAt := time . Now ( )
disabledAtRFC := disabledAt . UTC ( ) . Format ( time . RFC3339 )
justificationNote := "justification test"
justificationUpdated := "justification updated"
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
ackedRuleAggregatorResponse := `
{
"disabledRule":{
"rule_id": "%v",
"error_key": "%v",
"justification": "%v",
"created_by": "",
"created_at": {
"Time": "%v",
"Valid": true
},
"updated_at": {
"Time": "%v",
"Valid": true
}
},
"status":"ok"
}
`
ackedRuleAggregatorResponse = fmt . Sprintf ( ackedRuleAggregatorResponse ,
testdata . Rule1ID , testdata . ErrorKey1 , justificationNote , disabledAtRFC , disabledAtRFC ,
)
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ReadRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusOK ,
Body : ackedRuleAggregatorResponse ,
} ,
)
postBody := `{"justification":"%v"}`
postBody = fmt . Sprintf ( postBody , justificationUpdated )
|
POST to aggregator
|
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodPost ,
Endpoint : ira_server . UpdateRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
Body : postBody ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusOK ,
} ,
)
ackedRuleAggregatorResponseUpdated := `
{
"disabledRule":{
"rule_id": "%v",
"error_key": "%v",
"justification": "%v",
"created_by": "",
"created_at": {
"Time": "%v",
"Valid": true
},
"updated_at": {
"Time": "%v",
"Valid": true
}
},
"status":"ok"
}
`
ackedRuleAggregatorResponseUpdated = fmt . Sprintf ( ackedRuleAggregatorResponseUpdated ,
testdata . Rule1ID , testdata . ErrorKey1 , justificationUpdated , disabledAtRFC , disabledAtRFC ,
)
|
2nd call to aggregator to get results
|
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ReadRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusOK ,
Body : ackedRuleAggregatorResponseUpdated ,
} ,
)
reqBody := `
{
"justification": "%v"
}
`
reqBody = fmt . Sprintf ( reqBody , justificationUpdated )
expectedResponse := `
{
"rule": "%v",
"justification": "%v",
"created_by": "",
"created_at": "%v",
"updated_at": "%v"
}
`
expectedResponse = fmt . Sprintf ( expectedResponse ,
testdata . Rule1CompositeID , justificationUpdated , disabledAtRFC , disabledAtRFC ,
)
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodPut ,
Endpoint : server . AckUpdateEndpoint ,
EndpointArgs : [ ] interface { } { testdata . Rule1CompositeID } ,
XRHIdentity : goodXRHAuthToken ,
Body : reqBody ,
} , & helpers . APIResponse {
StatusCode : http . StatusOK ,
Body : expectedResponse ,
} )
}
func TestHTTPServer_TestAcknowledgeUpdateBadCompositeRuleID ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
justificationNote := "justification test"
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
reqBody := `
{
"justification": "%v"
}
`
reqBody = fmt . Sprintf ( reqBody , justificationNote )
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodPut ,
Endpoint : server . AckUpdateEndpoint ,
EndpointArgs : [ ] interface { } { "invalid rule id" } ,
XRHIdentity : goodXRHAuthToken ,
Body : reqBody ,
} , & helpers . APIResponse {
StatusCode : http . StatusBadRequest ,
} )
}
func TestHTTPServer_TestAcknowledgeUpdateAggregatorError1st ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
justificationUpdated := "justification updated"
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ReadRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusInternalServerError ,
} ,
)
reqBody := `
{
"justification": "%v"
}
`
reqBody = fmt . Sprintf ( reqBody , justificationUpdated )
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodPut ,
Endpoint : server . AckUpdateEndpoint ,
EndpointArgs : [ ] interface { } { testdata . Rule1CompositeID } ,
XRHIdentity : goodXRHAuthToken ,
Body : reqBody ,
} , & helpers . APIResponse {
StatusCode : http . StatusInternalServerError ,
} )
}
func TestHTTPServer_TestAcknowledgeUpdateAggregatorError2nd ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
disabledAt := time . Now ( )
disabledAtRFC := disabledAt . UTC ( ) . Format ( time . RFC3339 )
justificationNote := "justification test"
justificationUpdated := "justification updated"
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
ackedRuleAggregatorResponse := `
{
"disabledRule":{
"rule_id": "%v",
"error_key": "%v",
"justification": "%v",
"created_by": "",
"created_at": {
"Time": "%v",
"Valid": true
},
"updated_at": {
"Time": "%v",
"Valid": true
}
},
"status":"ok"
}
`
ackedRuleAggregatorResponse = fmt . Sprintf ( ackedRuleAggregatorResponse ,
testdata . Rule1ID , testdata . ErrorKey1 , justificationNote , disabledAtRFC , disabledAtRFC ,
)
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ReadRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusOK ,
Body : ackedRuleAggregatorResponse ,
} ,
)
postBody := `{"justification":"%v"}`
postBody = fmt . Sprintf ( postBody , justificationUpdated )
|
POST to aggregator
|
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodPost ,
Endpoint : ira_server . UpdateRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
Body : postBody ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusInternalServerError ,
} ,
)
reqBody := `
{
"justification": "%v"
}
`
reqBody = fmt . Sprintf ( reqBody , justificationUpdated )
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodPut ,
Endpoint : server . AckUpdateEndpoint ,
EndpointArgs : [ ] interface { } { testdata . Rule1CompositeID } ,
XRHIdentity : goodXRHAuthToken ,
Body : reqBody ,
} , & helpers . APIResponse {
StatusCode : http . StatusInternalServerError ,
} )
}
func TestHTTPServer_TestAcknowledgeUpdateAggregatorError3rd ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
disabledAt := time . Now ( )
disabledAtRFC := disabledAt . UTC ( ) . Format ( time . RFC3339 )
justificationNote := "justification test"
justificationUpdated := "justification updated"
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
ackedRuleAggregatorResponse := `
{
"disabledRule":{
"rule_id": "%v",
"error_key": "%v",
"justification": "%v",
"created_by": "",
"created_at": {
"Time": "%v",
"Valid": true
},
"updated_at": {
"Time": "%v",
"Valid": true
}
},
"status":"ok"
}
`
ackedRuleAggregatorResponse = fmt . Sprintf ( ackedRuleAggregatorResponse ,
testdata . Rule1ID , testdata . ErrorKey1 , justificationNote , disabledAtRFC , disabledAtRFC ,
)
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ReadRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusOK ,
Body : ackedRuleAggregatorResponse ,
} ,
)
postBody := `{"justification":"%v"}`
postBody = fmt . Sprintf ( postBody , justificationUpdated )
|
POST to aggregator
|
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodPost ,
Endpoint : ira_server . UpdateRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
Body : postBody ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusOK ,
} ,
)
|
2nd call to aggregator to get results fails
|
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ReadRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusInternalServerError ,
} ,
)
reqBody := `
{
"justification": "%v"
}
`
reqBody = fmt . Sprintf ( reqBody , justificationUpdated )
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodPut ,
Endpoint : server . AckUpdateEndpoint ,
EndpointArgs : [ ] interface { } { testdata . Rule1CompositeID } ,
XRHIdentity : goodXRHAuthToken ,
Body : reqBody ,
} , & helpers . APIResponse {
StatusCode : http . StatusInternalServerError ,
} )
}
func TestHTTPServer_TestAcknowledgeUpdateInvalidToken ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
reqBody := `
{
"justification": "%v"
}
`
reqBody = fmt . Sprintf ( reqBody , "justification" )
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodPut ,
Endpoint : server . AckUpdateEndpoint ,
EndpointArgs : [ ] interface { } { testdata . Rule1CompositeID } ,
XRHIdentity : invalidXRHAuthToken ,
Body : reqBody ,
} , & helpers . APIResponse {
StatusCode : http . StatusForbidden ,
} )
}
func TestHTTPServer_TestAcknowledgeDeleteFound ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
disabledAt := time . Now ( )
disabledAtRFC := disabledAt . UTC ( ) . Format ( time . RFC3339 )
justificationNote := "justification test"
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
ackedRuleAggregatorResponse := `
{
"disabledRule":{
"rule_id": "%v",
"error_key": "%v",
"justification": "%v",
"created_by": "",
"created_at": {
"Time": "%v",
"Valid": true
},
"updated_at": {
"Time": "%v",
"Valid": true
}
},
"status":"ok"
}
`
ackedRuleAggregatorResponse = fmt . Sprintf ( ackedRuleAggregatorResponse ,
testdata . Rule1ID , testdata . ErrorKey1 , justificationNote , disabledAtRFC , disabledAtRFC ,
)
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ReadRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusOK ,
Body : ackedRuleAggregatorResponse ,
} ,
)
|
PUT to aggregator
|
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodPut ,
Endpoint : ira_server . EnableRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusOK ,
} ,
)
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodDelete ,
Endpoint : server . AckDeleteEndpoint ,
EndpointArgs : [ ] interface { } { testdata . Rule1CompositeID } ,
XRHIdentity : goodXRHAuthToken ,
} , & helpers . APIResponse {
StatusCode : http . StatusNoContent ,
} )
}
func TestHTTPServer_TestAcknowledgeDeleteNotFound ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
ackedRuleAggregatorResponse := `
{
"disabledRule":{},
"status":"ok"
}
`
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ReadRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusNotFound ,
Body : ackedRuleAggregatorResponse ,
} ,
)
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodDelete ,
Endpoint : server . AckDeleteEndpoint ,
EndpointArgs : [ ] interface { } { testdata . Rule1CompositeID } ,
XRHIdentity : goodXRHAuthToken ,
} , & helpers . APIResponse {
StatusCode : http . StatusNotFound ,
} )
}
func TestHTTPServer_TestAcknowledgeDeleteBadRequest ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodDelete ,
Endpoint : server . AckDeleteEndpoint ,
EndpointArgs : [ ] interface { } { "invalid rule id" } ,
XRHIdentity : goodXRHAuthToken ,
} , & helpers . APIResponse {
StatusCode : http . StatusBadRequest ,
} )
}
func TestHTTPServer_TestAcknowledgeDeleteInvalidToken ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
reqBody := `
{
"justification": "%v"
}
`
reqBody = fmt . Sprintf ( reqBody , "justification" )
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodDelete ,
Endpoint : server . AckDeleteEndpoint ,
EndpointArgs : [ ] interface { } { testdata . Rule1CompositeID } ,
XRHIdentity : invalidXRHAuthToken ,
Body : reqBody ,
} , & helpers . APIResponse {
StatusCode : http . StatusForbidden ,
} )
}
func TestHTTPServer_TestAcknowledgeDeleteAggregatorError1st ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
ackedRuleAggregatorResponse := `
{
"disabledRule":{},
"status":"ok"
}
`
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ReadRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusInternalServerError ,
Body : ackedRuleAggregatorResponse ,
} ,
)
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodDelete ,
Endpoint : server . AckDeleteEndpoint ,
EndpointArgs : [ ] interface { } { testdata . Rule1CompositeID } ,
XRHIdentity : goodXRHAuthToken ,
} , & helpers . APIResponse {
StatusCode : http . StatusInternalServerError ,
} )
}
func TestHTTPServer_TestAcknowledgeDeleteAggregatorError2nd ( t * testing . T ) {
defer helpers . CleanAfterGock ( t )
disabledAt := time . Now ( )
disabledAtRFC := disabledAt . UTC ( ) . Format ( time . RFC3339 )
justificationNote := "justification test"
err := loadMockRuleContentDir ( & testdata . RuleContentDirectory3Rules )
assert . Nil ( t , err )
ackedRuleAggregatorResponse := `
{
"disabledRule":{
"rule_id": "%v",
"error_key": "%v",
"justification": "%v",
"created_by": "",
"created_at": {
"Time": "%v",
"Valid": true
},
"updated_at": {
"Time": "%v",
"Valid": true
}
},
"status":"ok"
}
`
ackedRuleAggregatorResponse = fmt . Sprintf ( ackedRuleAggregatorResponse ,
testdata . Rule1ID , testdata . ErrorKey1 , justificationNote , disabledAtRFC , disabledAtRFC ,
)
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodGet ,
Endpoint : ira_server . ReadRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusOK ,
Body : ackedRuleAggregatorResponse ,
} ,
)
|
PUT to aggregator
|
helpers . GockExpectAPIRequest (
t ,
helpers . DefaultServicesConfig . AggregatorBaseEndpoint ,
& helpers . APIRequest {
Method : http . MethodPut ,
Endpoint : ira_server . EnableRuleSystemWide ,
EndpointArgs : [ ] interface { } { testdata . Rule1ID , testdata . ErrorKey1 , testdata . OrgID } ,
} ,
& helpers . APIResponse {
StatusCode : http . StatusInternalServerError ,
} ,
)
helpers . AssertAPIv2Request ( t , nil , nil , nil , nil , nil , & helpers . APIRequest {
Method : http . MethodDelete ,
Endpoint : server . AckDeleteEndpoint ,
EndpointArgs : [ ] interface { } { testdata . Rule1CompositeID } ,
XRHIdentity : goodXRHAuthToken ,
} , & helpers . APIResponse {
StatusCode : http . StatusInternalServerError ,
} )
}
|