japanda 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.gitignore +1 -0
- data/.rspec +2 -0
- data/.ruby-version +1 -0
- data/Dockerfile +9 -0
- data/Gemfile.lock +37 -28
- data/Jenkinsfile +64 -0
- data/README.md +34 -16
- data/docker-compose.yml +11 -0
- data/japanda.gemspec +8 -5
- data/lib/japanda.rb +2 -0
- data/lib/japanda/canvas_factory.rb +7 -2
- data/lib/japanda/canvas_factory/mergie.rb +7 -6
- data/lib/japanda/canvas_factory/user.rb +10 -1
- data/lib/japanda/version.rb +1 -1
- metadata +56 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6d62c0b18d1c9844e0c9a62343edc2d681412c3bb453a7028d1c33ae47bfddac
|
4
|
+
data.tar.gz: 34bcfd1ac14c12c5fe61889bfd2c567edf6fcbf816fe5bce6f7d025154ced604
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 38640dbdb09ffcf289130b8791ee5a6be3be255aa41b15359b4398efee7e51134e2879fecffda211aba59eacb1eccc56622fdae264d320b5036b9a0a9ccb1022
|
7
|
+
data.tar.gz: 70e93dbb2e8563b1724c36d9a9fc4eaef3f263a3c3ddfaae6c3ecefc09a253cb427f8c802e791f3a85987320eb4c53463f0594b4be2a4506525e1376909915b0
|
data/.gitignore
CHANGED
data/.rspec
CHANGED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.5.0
|
data/Dockerfile
ADDED
data/Gemfile.lock
CHANGED
@@ -1,53 +1,62 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
japanda (0.1.
|
5
|
-
rest-client
|
4
|
+
japanda (0.1.5)
|
5
|
+
rest-client (>= 2.1.0)
|
6
|
+
rspec_junit_formatter (~> 0.4.1)
|
6
7
|
|
7
8
|
GEM
|
8
9
|
remote: https://rubygems.org/
|
9
10
|
specs:
|
10
|
-
|
11
|
-
|
11
|
+
byebug (11.1.3)
|
12
|
+
diff-lcs (1.4.4)
|
13
|
+
domain_name (0.5.20190701)
|
12
14
|
unf (>= 0.0.5, < 1.0.0)
|
13
15
|
dotenv (2.0.2)
|
14
|
-
hashie (
|
15
|
-
http-
|
16
|
+
hashie (4.0.0)
|
17
|
+
http-accept (1.7.0)
|
18
|
+
http-cookie (1.0.3)
|
16
19
|
domain_name (~> 0.5)
|
17
|
-
mime-types (
|
18
|
-
|
20
|
+
mime-types (3.3.1)
|
21
|
+
mime-types-data (~> 3.2015)
|
22
|
+
mime-types-data (3.2020.1104)
|
23
|
+
netrc (0.11.0)
|
19
24
|
rake (10.4.2)
|
20
|
-
rest-client (1.
|
25
|
+
rest-client (2.1.0)
|
26
|
+
http-accept (>= 1.7.0, < 2.0)
|
21
27
|
http-cookie (>= 1.0.2, < 2.0)
|
22
|
-
mime-types (>= 1.16, <
|
23
|
-
netrc (~> 0.
|
24
|
-
rspec (3.
|
25
|
-
rspec-core (~> 3.
|
26
|
-
rspec-expectations (~> 3.
|
27
|
-
rspec-mocks (~> 3.
|
28
|
-
rspec-core (3.
|
29
|
-
rspec-support (~> 3.
|
30
|
-
rspec-expectations (3.
|
28
|
+
mime-types (>= 1.16, < 4.0)
|
29
|
+
netrc (~> 0.8)
|
30
|
+
rspec (3.5.0)
|
31
|
+
rspec-core (~> 3.5.0)
|
32
|
+
rspec-expectations (~> 3.5.0)
|
33
|
+
rspec-mocks (~> 3.5.0)
|
34
|
+
rspec-core (3.5.4)
|
35
|
+
rspec-support (~> 3.5.0)
|
36
|
+
rspec-expectations (3.5.0)
|
31
37
|
diff-lcs (>= 1.2.0, < 2.0)
|
32
|
-
rspec-support (~> 3.
|
33
|
-
rspec-mocks (3.
|
38
|
+
rspec-support (~> 3.5.0)
|
39
|
+
rspec-mocks (3.5.0)
|
34
40
|
diff-lcs (>= 1.2.0, < 2.0)
|
35
|
-
rspec-support (~> 3.
|
36
|
-
rspec-support (3.
|
41
|
+
rspec-support (~> 3.5.0)
|
42
|
+
rspec-support (3.5.0)
|
43
|
+
rspec_junit_formatter (0.4.1)
|
44
|
+
rspec-core (>= 2, < 4, != 2.12.0)
|
37
45
|
unf (0.1.4)
|
38
46
|
unf_ext
|
39
|
-
unf_ext (0.0.7.
|
47
|
+
unf_ext (0.0.7.7)
|
40
48
|
|
41
49
|
PLATFORMS
|
42
50
|
ruby
|
43
51
|
|
44
52
|
DEPENDENCIES
|
45
|
-
bundler (
|
53
|
+
bundler (~> 1.5)
|
54
|
+
byebug
|
46
55
|
dotenv
|
47
|
-
hashie
|
56
|
+
hashie (~> 4.0.0)
|
48
57
|
japanda!
|
49
|
-
rake
|
50
|
-
rspec
|
58
|
+
rake
|
59
|
+
rspec (~> 3.5.0)
|
51
60
|
|
52
61
|
BUNDLED WITH
|
53
|
-
1.
|
62
|
+
1.17.3
|
data/Jenkinsfile
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
#! /usr/bin/env groovy
|
2
|
+
|
3
|
+
String rspec_results = ''
|
4
|
+
String container_id = ''
|
5
|
+
|
6
|
+
pipeline {
|
7
|
+
agent { label 'docker' }
|
8
|
+
|
9
|
+
environment {
|
10
|
+
COMPOSE_PROJECT_NAME = 'japanda_build'
|
11
|
+
COMPOSE_FILE = 'docker-compose.yml'
|
12
|
+
}
|
13
|
+
|
14
|
+
options {
|
15
|
+
ansiColor("xterm")
|
16
|
+
}
|
17
|
+
|
18
|
+
stages {
|
19
|
+
stage('Build') {
|
20
|
+
steps {
|
21
|
+
echo 'Building the containers'
|
22
|
+
sh "docker-compose build --pull"
|
23
|
+
|
24
|
+
echo 'Starting containers'
|
25
|
+
sh "docker-compose up -d"
|
26
|
+
sh 'docker-compose run --no-deps -d testrunner tail -f /dev/null'
|
27
|
+
|
28
|
+
script {
|
29
|
+
sh "docker ps"
|
30
|
+
container_id = sh(script: "docker ps -qf 'name=testrunner'",
|
31
|
+
returnStdout: true
|
32
|
+
).trim()
|
33
|
+
}
|
34
|
+
}
|
35
|
+
|
36
|
+
}
|
37
|
+
|
38
|
+
stage('Run Rspec Tests') {
|
39
|
+
steps {
|
40
|
+
sh "docker exec $container_id bundle exec rspec spec/ >> rspec_results"
|
41
|
+
}
|
42
|
+
}
|
43
|
+
}
|
44
|
+
|
45
|
+
post {
|
46
|
+
always {
|
47
|
+
script {
|
48
|
+
rspec_results = sh(script: 'cat rspec_results',
|
49
|
+
returnStdout: true
|
50
|
+
).trim()
|
51
|
+
|
52
|
+
sh "docker cp $container_id:/usr/src/app/junit ."
|
53
|
+
junit allowEmptyResults: true, testResults: 'junit/rspec.xml'
|
54
|
+
}
|
55
|
+
echo rspec_results
|
56
|
+
}
|
57
|
+
|
58
|
+
cleanup {
|
59
|
+
sh 'if [ -d "junit" ]; then rm -r "junit"; fi'
|
60
|
+
sh 'if [ -f "rspec_results" ]; then rm -rf "rspec_results"; fi'
|
61
|
+
sh "docker-compose down --remove-orphans --rmi=all --volumes"
|
62
|
+
}
|
63
|
+
}
|
64
|
+
}
|
data/README.md
CHANGED
@@ -1,16 +1,9 @@
|
|
1
1
|
# Japanda
|
2
2
|
|
3
|
-
Japanda provides an object-oriented
|
3
|
+
Japanda provides an object-oriented and a functional wrapper around Instructure Canvas Api's
|
4
4
|
|
5
5
|
Disclaimer: For testing purposes only.
|
6
6
|
|
7
|
-
v0.1.3 Features
|
8
|
-
|
9
|
-
1. Create canvas learner user and admin user
|
10
|
-
2. Create canvas course
|
11
|
-
3. Add sections to canvas
|
12
|
-
4. Add module(s) with assignment(s)
|
13
|
-
|
14
7
|
## Installation
|
15
8
|
|
16
9
|
Add this line to your application's Gemfile:
|
@@ -37,22 +30,47 @@ To create a new course
|
|
37
30
|
|
38
31
|
CanvasFactory::Course.new
|
39
32
|
|
40
|
-
To create a
|
33
|
+
To create a new course by providing a custom hash(merge)
|
41
34
|
|
42
|
-
|
43
|
-
course = CanvasFactory::Course.new
|
35
|
+
opts = { course:{ name: 'coursename1', course_code: "code-change#{SecureRandom.hex}" } }
|
36
|
+
course = CanvasFactory::Course.new(opts)
|
44
37
|
|
45
|
-
To create a
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
38
|
+
To create a new course by providing a custom hash(no merge)
|
39
|
+
|
40
|
+
opts = {
|
41
|
+
account_id: '10',
|
42
|
+
course: {
|
43
|
+
name: "code-name#{SecureRandom.hex}",
|
44
|
+
course_code: "course_code#{SecureRandom.hex}"
|
45
|
+
},
|
46
|
+
offer: true
|
47
|
+
}
|
48
|
+
course = CanvasFactory::Course.new(opts, false)
|
50
49
|
|
51
50
|
## Development
|
52
51
|
|
53
52
|
After checking out the repo, run `bundle install` to install dependencies. Then, run `rspec` to run the tests.
|
54
53
|
To install this gem onto your local machine, run `bundle exec rake install`.
|
55
54
|
|
55
|
+
### Run in docker
|
56
|
+
|
57
|
+
Make sure your .env variable contains
|
58
|
+
```
|
59
|
+
CANVAS_API_HOST=<canvas_host>
|
60
|
+
CANVAS_API_TOKEN=<canvas_api_token>
|
61
|
+
CANVAS_ACCOUNT_ID=<canvas_account_id>
|
62
|
+
```
|
63
|
+
|
64
|
+
Building the testrunner
|
65
|
+
```
|
66
|
+
docker-compose build
|
67
|
+
```
|
68
|
+
|
69
|
+
Running the tests:
|
70
|
+
```
|
71
|
+
docker-compose run testrunner bundle exec rspec spec/
|
72
|
+
```
|
73
|
+
|
56
74
|
## Release a new version
|
57
75
|
|
58
76
|
To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
data/docker-compose.yml
ADDED
data/japanda.gemspec
CHANGED
@@ -27,10 +27,13 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
28
28
|
spec.require_paths = ['lib']
|
29
29
|
|
30
|
-
spec.add_development_dependency 'bundler', '
|
31
|
-
spec.add_development_dependency '
|
32
|
-
spec.add_development_dependency 'rspec'
|
33
|
-
spec.add_development_dependency 'hashie'
|
30
|
+
spec.add_development_dependency 'bundler', '~>1.5'
|
31
|
+
spec.add_development_dependency 'byebug'
|
34
32
|
spec.add_development_dependency 'dotenv'
|
35
|
-
spec.
|
33
|
+
spec.add_development_dependency 'hashie', '~>4.0.0'
|
34
|
+
spec.add_development_dependency 'rake'
|
35
|
+
spec.add_development_dependency 'rspec', '~> 3.5.0'
|
36
|
+
spec.add_dependency 'rest-client', '>= 2.1.0'
|
37
|
+
spec.add_dependency 'rspec_junit_formatter', '~>0.4.1'
|
38
|
+
|
36
39
|
end
|
data/lib/japanda.rb
CHANGED
@@ -9,11 +9,16 @@ module CanvasFactory
|
|
9
9
|
}
|
10
10
|
CANVAS_ACCOUNT_ID ||= ENV['CANVAS_ACCOUNT_ID']
|
11
11
|
|
12
|
+
# JSON.generate see: https://github.com/rest-client/rest-client/issues/635/
|
12
13
|
def self.perform_post(end_point, body)
|
13
|
-
JSON.parse(RestClient.post end_point, body, CANVAS_AUTH_HEADER)
|
14
|
+
JSON.parse(RestClient.post end_point, JSON.generate(body), CANVAS_AUTH_HEADER)
|
14
15
|
end
|
15
16
|
|
16
17
|
def self.perform_put(end_point, body)
|
17
|
-
JSON.parse(RestClient.put end_point, body, CANVAS_AUTH_HEADER)
|
18
|
+
JSON.parse(RestClient.put end_point, JSON.generate(body), CANVAS_AUTH_HEADER)
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.perform_delete(end_point)
|
22
|
+
JSON.parse(RestClient.delete end_point, CANVAS_AUTH_HEADER)
|
18
23
|
end
|
19
24
|
end
|
@@ -1,9 +1,10 @@
|
|
1
1
|
require 'hashie/extensions/deep_merge'
|
2
|
+
module CanvasFactory
|
3
|
+
class Mergie < Hash
|
4
|
+
include Hashie::Extensions::DeepMerge
|
2
5
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
def self.deep_merge(default_hash, given_hash, should_merge)
|
7
|
-
should_merge ? Mergie[default_hash].deep_merge(Mergie[given_hash]).to_h: given_hash
|
6
|
+
def self.deep_merge(default_hash, given_hash, should_merge)
|
7
|
+
should_merge ? Mergie[default_hash].deep_merge(Mergie[given_hash]).to_h: given_hash
|
8
|
+
end
|
8
9
|
end
|
9
|
-
end
|
10
|
+
end
|
@@ -23,6 +23,11 @@ module CanvasFactory
|
|
23
23
|
create_learner_user
|
24
24
|
end
|
25
25
|
|
26
|
+
def delete_user
|
27
|
+
user_end_point = "#{CANVAS_API_V1}/accounts/#{CANVAS_ACCOUNT_ID}/users/#{@id}"
|
28
|
+
@user_response = CanvasFactory.perform_delete(user_end_point)
|
29
|
+
end
|
30
|
+
|
26
31
|
private
|
27
32
|
|
28
33
|
def create_learner_user
|
@@ -52,7 +57,11 @@ module CanvasFactory
|
|
52
57
|
send_confirmation: true
|
53
58
|
}
|
54
59
|
admin_end_point = "#{CANVAS_API_V1}/accounts/#{CANVAS_ACCOUNT_ID}/admins"
|
55
|
-
CanvasFactory.perform_post(admin_end_point, @admin_request)
|
60
|
+
@admin_response = CanvasFactory.perform_post(admin_end_point, @admin_request)
|
61
|
+
@id = @admin_response['user']['id']
|
62
|
+
@email_id = @admin_response['user']['login_id']
|
63
|
+
@short_name = @admin_response['user']['short_name']
|
64
|
+
@admin_response
|
56
65
|
end
|
57
66
|
end
|
58
67
|
end
|
data/lib/japanda/version.rb
CHANGED
metadata
CHANGED
@@ -1,46 +1,46 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: japanda
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Santosh Natarajan
|
8
8
|
- Robert Lamb
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2020-12-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - "
|
18
|
+
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 1.
|
20
|
+
version: '1.5'
|
21
21
|
type: :development
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- - "
|
25
|
+
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 1.
|
27
|
+
version: '1.5'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
|
-
name:
|
29
|
+
name: byebug
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- - "
|
32
|
+
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '
|
34
|
+
version: '0'
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- - "
|
39
|
+
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: '
|
41
|
+
version: '0'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
|
-
name:
|
43
|
+
name: dotenv
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
46
|
- - ">="
|
@@ -57,18 +57,18 @@ dependencies:
|
|
57
57
|
name: hashie
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
|
-
- - "
|
60
|
+
- - "~>"
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
62
|
+
version: 4.0.0
|
63
63
|
type: :development
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
|
-
- - "
|
67
|
+
- - "~>"
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
69
|
+
version: 4.0.0
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
|
-
name:
|
71
|
+
name: rake
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
74
|
- - ">="
|
@@ -81,20 +81,48 @@ dependencies:
|
|
81
81
|
- - ">="
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '0'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: rspec
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - "~>"
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: 3.5.0
|
91
|
+
type: :development
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - "~>"
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: 3.5.0
|
84
98
|
- !ruby/object:Gem::Dependency
|
85
99
|
name: rest-client
|
86
100
|
requirement: !ruby/object:Gem::Requirement
|
87
101
|
requirements:
|
88
102
|
- - ">="
|
89
103
|
- !ruby/object:Gem::Version
|
90
|
-
version:
|
104
|
+
version: 2.1.0
|
91
105
|
type: :runtime
|
92
106
|
prerelease: false
|
93
107
|
version_requirements: !ruby/object:Gem::Requirement
|
94
108
|
requirements:
|
95
109
|
- - ">="
|
96
110
|
- !ruby/object:Gem::Version
|
97
|
-
version:
|
111
|
+
version: 2.1.0
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: rspec_junit_formatter
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - "~>"
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: 0.4.1
|
119
|
+
type: :runtime
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - "~>"
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: 0.4.1
|
98
126
|
description: Library to create custom course. wip.
|
99
127
|
email:
|
100
128
|
- snatarajan@instructure.com
|
@@ -106,14 +134,18 @@ files:
|
|
106
134
|
- ".env.example"
|
107
135
|
- ".gitignore"
|
108
136
|
- ".rspec"
|
137
|
+
- ".ruby-version"
|
109
138
|
- ".travis.yml"
|
110
139
|
- CODE_OF_CONDUCT.md
|
140
|
+
- Dockerfile
|
111
141
|
- Gemfile
|
112
142
|
- Gemfile.lock
|
143
|
+
- Jenkinsfile
|
113
144
|
- README.md
|
114
145
|
- Rakefile
|
115
146
|
- bin/console
|
116
147
|
- bin/setup
|
148
|
+
- docker-compose.yml
|
117
149
|
- japanda.gemspec
|
118
150
|
- lib/japanda.rb
|
119
151
|
- lib/japanda/canvas_factory.rb
|
@@ -126,10 +158,10 @@ files:
|
|
126
158
|
- lib/japanda/canvas_factory/section.rb
|
127
159
|
- lib/japanda/canvas_factory/user.rb
|
128
160
|
- lib/japanda/version.rb
|
129
|
-
homepage:
|
161
|
+
homepage:
|
130
162
|
licenses: []
|
131
163
|
metadata: {}
|
132
|
-
post_install_message:
|
164
|
+
post_install_message:
|
133
165
|
rdoc_options: []
|
134
166
|
require_paths:
|
135
167
|
- lib
|
@@ -144,9 +176,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
144
176
|
- !ruby/object:Gem::Version
|
145
177
|
version: '0'
|
146
178
|
requirements: []
|
147
|
-
|
148
|
-
|
149
|
-
signing_key:
|
179
|
+
rubygems_version: 3.0.8
|
180
|
+
signing_key:
|
150
181
|
specification_version: 4
|
151
182
|
summary: Library to create custom course.
|
152
183
|
test_files: []
|